Skip to content

Commit dd75670

Browse files
authored
Add support for Enterprise GetRunner (#3185)
Fixes: #3182.
1 parent 42ae4fe commit dd75670

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

github/enterprise_actions_runners.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,27 @@ func (s *EnterpriseService) ListRunners(ctx context.Context, enterprise string,
101101
return runners, resp, nil
102102
}
103103

104+
// GetRunner gets a specific self-hosted runner configured in an enterprise.
105+
//
106+
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#get-a-self-hosted-runner-for-an-enterprise
107+
//
108+
//meta:operation GET /enterprises/{enterprise}/actions/runners/{runner_id}
109+
func (s *EnterpriseService) GetRunner(ctx context.Context, enterprise string, runnerID int64) (*Runner, *Response, error) {
110+
u := fmt.Sprintf("enterprises/%v/actions/runners/%v", enterprise, runnerID)
111+
req, err := s.client.NewRequest("GET", u, nil)
112+
if err != nil {
113+
return nil, nil, err
114+
}
115+
116+
runner := new(Runner)
117+
resp, err := s.client.Do(ctx, req, runner)
118+
if err != nil {
119+
return nil, resp, err
120+
}
121+
122+
return runner, resp, nil
123+
}
124+
104125
// RemoveRunner forces the removal of a self-hosted runner from an enterprise using the runner id.
105126
//
106127
// GitHub API docs: https://docs.github.com/enterprise-cloud@latest/rest/actions/self-hosted-runners#delete-a-self-hosted-runner-from-an-enterprise

github/enterprise_actions_runners_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,46 @@ func TestEnterpriseService_ListRunners(t *testing.T) {
145145
})
146146
}
147147

148+
func TestEnterpriseService_GetRunner(t *testing.T) {
149+
client, mux, _, teardown := setup()
150+
defer teardown()
151+
152+
mux.HandleFunc("/enterprises/e/actions/runners/23", func(w http.ResponseWriter, r *http.Request) {
153+
testMethod(t, r, "GET")
154+
fmt.Fprint(w, `{"id":23,"name":"MBP","os":"macos","status":"online"}`)
155+
})
156+
157+
ctx := context.Background()
158+
runner, _, err := client.Enterprise.GetRunner(ctx, "e", 23)
159+
if err != nil {
160+
t.Errorf("Enterprise.GetRunner returned error: %v", err)
161+
}
162+
163+
want := &Runner{
164+
ID: Int64(23),
165+
Name: String("MBP"),
166+
OS: String("macos"),
167+
Status: String("online"),
168+
}
169+
if !cmp.Equal(runner, want) {
170+
t.Errorf("Enterprise.GetRunner returned %+v, want %+v", runner, want)
171+
}
172+
173+
const methodName = "GetRunner"
174+
testBadOptions(t, methodName, func() (err error) {
175+
_, _, err = client.Enterprise.GetRunner(ctx, "\n", 23)
176+
return err
177+
})
178+
179+
testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
180+
got, resp, err := client.Enterprise.GetRunner(ctx, "e", 23)
181+
if got != nil {
182+
t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
183+
}
184+
return resp, err
185+
})
186+
}
187+
148188
func TestEnterpriseService_RemoveRunner(t *testing.T) {
149189
client, mux, _, teardown := setup()
150190
defer teardown()

0 commit comments

Comments
 (0)