1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package gitlab
18
19 import (
20 "fmt"
21 "net/http"
22 "time"
23 )
24
25
26
27
28
29 type PipelineSchedulesService struct {
30 client *Client
31 }
32
33
34
35
36
37 type PipelineSchedule struct {
38 ID int `json:"id"`
39 Description string `json:"description"`
40 Ref string `json:"ref"`
41 Cron string `json:"cron"`
42 CronTimezone string `json:"cron_timezone"`
43 NextRunAt *time.Time `json:"next_run_at"`
44 Active bool `json:"active"`
45 CreatedAt *time.Time `json:"created_at"`
46 UpdatedAt *time.Time `json:"updated_at"`
47 Owner *User `json:"owner"`
48 LastPipeline *LastPipeline `json:"last_pipeline"`
49 Variables []*PipelineVariable `json:"variables"`
50 }
51
52
53
54 type LastPipeline struct {
55 ID int `json:"id"`
56 SHA string `json:"sha"`
57 Ref string `json:"ref"`
58 Status string `json:"status"`
59 }
60
61
62
63
64
65 type ListPipelineSchedulesOptions ListOptions
66
67
68
69
70
71 func (s *PipelineSchedulesService) ListPipelineSchedules(pid interface{}, opt *ListPipelineSchedulesOptions, options ...RequestOptionFunc) ([]*PipelineSchedule, *Response, error) {
72 project, err := parseID(pid)
73 if err != nil {
74 return nil, nil, err
75 }
76 u := fmt.Sprintf("projects/%s/pipeline_schedules", PathEscape(project))
77
78 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
79 if err != nil {
80 return nil, nil, err
81 }
82
83 var ps []*PipelineSchedule
84 resp, err := s.client.Do(req, &ps)
85 if err != nil {
86 return nil, resp, err
87 }
88
89 return ps, resp, nil
90 }
91
92
93
94
95
96 func (s *PipelineSchedulesService) GetPipelineSchedule(pid interface{}, schedule int, options ...RequestOptionFunc) (*PipelineSchedule, *Response, error) {
97 project, err := parseID(pid)
98 if err != nil {
99 return nil, nil, err
100 }
101 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", PathEscape(project), schedule)
102
103 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
104 if err != nil {
105 return nil, nil, err
106 }
107
108 p := new(PipelineSchedule)
109 resp, err := s.client.Do(req, p)
110 if err != nil {
111 return nil, resp, err
112 }
113
114 return p, resp, nil
115 }
116
117
118
119
120
121
122 type ListPipelinesTriggeredByScheduleOptions ListOptions
123
124
125
126
127
128
129 func (s *PipelineSchedulesService) ListPipelinesTriggeredBySchedule(pid interface{}, schedule int, opt *ListPipelinesTriggeredByScheduleOptions, options ...RequestOptionFunc) ([]*Pipeline, *Response, error) {
130 project, err := parseID(pid)
131 if err != nil {
132 return nil, nil, err
133 }
134 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/pipelines", PathEscape(project), schedule)
135
136 req, err := s.client.NewRequest(http.MethodGet, u, opt, options)
137 if err != nil {
138 return nil, nil, err
139 }
140
141 var p []*Pipeline
142 resp, err := s.client.Do(req, &p)
143 if err != nil {
144 return nil, resp, err
145 }
146
147 return p, resp, nil
148 }
149
150
151
152
153
154
155 type CreatePipelineScheduleOptions struct {
156 Description *string `url:"description" json:"description"`
157 Ref *string `url:"ref" json:"ref"`
158 Cron *string `url:"cron" json:"cron"`
159 CronTimezone *string `url:"cron_timezone,omitempty" json:"cron_timezone,omitempty"`
160 Active *bool `url:"active,omitempty" json:"active,omitempty"`
161 }
162
163
164
165
166
167 func (s *PipelineSchedulesService) CreatePipelineSchedule(pid interface{}, opt *CreatePipelineScheduleOptions, options ...RequestOptionFunc) (*PipelineSchedule, *Response, error) {
168 project, err := parseID(pid)
169 if err != nil {
170 return nil, nil, err
171 }
172 u := fmt.Sprintf("projects/%s/pipeline_schedules", PathEscape(project))
173
174 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
175 if err != nil {
176 return nil, nil, err
177 }
178
179 p := new(PipelineSchedule)
180 resp, err := s.client.Do(req, p)
181 if err != nil {
182 return nil, resp, err
183 }
184
185 return p, resp, nil
186 }
187
188
189
190
191
192
193 type EditPipelineScheduleOptions struct {
194 Description *string `url:"description,omitempty" json:"description,omitempty"`
195 Ref *string `url:"ref,omitempty" json:"ref,omitempty"`
196 Cron *string `url:"cron,omitempty" json:"cron,omitempty"`
197 CronTimezone *string `url:"cron_timezone,omitempty" json:"cron_timezone,omitempty"`
198 Active *bool `url:"active,omitempty" json:"active,omitempty"`
199 }
200
201
202
203
204
205 func (s *PipelineSchedulesService) EditPipelineSchedule(pid interface{}, schedule int, opt *EditPipelineScheduleOptions, options ...RequestOptionFunc) (*PipelineSchedule, *Response, error) {
206 project, err := parseID(pid)
207 if err != nil {
208 return nil, nil, err
209 }
210 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", PathEscape(project), schedule)
211
212 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
213 if err != nil {
214 return nil, nil, err
215 }
216
217 p := new(PipelineSchedule)
218 resp, err := s.client.Do(req, p)
219 if err != nil {
220 return nil, resp, err
221 }
222
223 return p, resp, nil
224 }
225
226
227
228
229
230
231 func (s *PipelineSchedulesService) TakeOwnershipOfPipelineSchedule(pid interface{}, schedule int, options ...RequestOptionFunc) (*PipelineSchedule, *Response, error) {
232 project, err := parseID(pid)
233 if err != nil {
234 return nil, nil, err
235 }
236 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/take_ownership", PathEscape(project), schedule)
237
238 req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
239 if err != nil {
240 return nil, nil, err
241 }
242
243 p := new(PipelineSchedule)
244 resp, err := s.client.Do(req, p)
245 if err != nil {
246 return nil, resp, err
247 }
248
249 return p, resp, nil
250 }
251
252
253
254
255
256 func (s *PipelineSchedulesService) DeletePipelineSchedule(pid interface{}, schedule int, options ...RequestOptionFunc) (*Response, error) {
257 project, err := parseID(pid)
258 if err != nil {
259 return nil, err
260 }
261 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d", PathEscape(project), schedule)
262
263 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
264 if err != nil {
265 return nil, err
266 }
267
268 return s.client.Do(req, nil)
269 }
270
271
272
273
274
275 func (s *PipelineSchedulesService) RunPipelineSchedule(pid interface{}, schedule int, options ...RequestOptionFunc) (*Response, error) {
276 project, err := parseID(pid)
277 if err != nil {
278 return nil, err
279 }
280 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/play", PathEscape(project), schedule)
281
282 req, err := s.client.NewRequest(http.MethodPost, u, nil, options)
283 if err != nil {
284 return nil, err
285 }
286
287 return s.client.Do(req, nil)
288 }
289
290
291
292
293
294
295 type CreatePipelineScheduleVariableOptions struct {
296 Key *string `url:"key" json:"key"`
297 Value *string `url:"value" json:"value"`
298 VariableType *string `url:"variable_type,omitempty" json:"variable_type,omitempty"`
299 }
300
301
302
303
304
305 func (s *PipelineSchedulesService) CreatePipelineScheduleVariable(pid interface{}, schedule int, opt *CreatePipelineScheduleVariableOptions, options ...RequestOptionFunc) (*PipelineVariable, *Response, error) {
306 project, err := parseID(pid)
307 if err != nil {
308 return nil, nil, err
309 }
310 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables", PathEscape(project), schedule)
311
312 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
313 if err != nil {
314 return nil, nil, err
315 }
316
317 p := new(PipelineVariable)
318 resp, err := s.client.Do(req, p)
319 if err != nil {
320 return nil, resp, err
321 }
322
323 return p, resp, nil
324 }
325
326
327
328
329
330
331 type EditPipelineScheduleVariableOptions struct {
332 Value *string `url:"value" json:"value"`
333 VariableType *string `url:"variable_type,omitempty" json:"variable_type,omitempty"`
334 }
335
336
337
338
339
340 func (s *PipelineSchedulesService) EditPipelineScheduleVariable(pid interface{}, schedule int, key string, opt *EditPipelineScheduleVariableOptions, options ...RequestOptionFunc) (*PipelineVariable, *Response, error) {
341 project, err := parseID(pid)
342 if err != nil {
343 return nil, nil, err
344 }
345 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables/%s", PathEscape(project), schedule, key)
346
347 req, err := s.client.NewRequest(http.MethodPut, u, opt, options)
348 if err != nil {
349 return nil, nil, err
350 }
351
352 p := new(PipelineVariable)
353 resp, err := s.client.Do(req, p)
354 if err != nil {
355 return nil, resp, err
356 }
357
358 return p, resp, nil
359 }
360
361
362
363
364
365 func (s *PipelineSchedulesService) DeletePipelineScheduleVariable(pid interface{}, schedule int, key string, options ...RequestOptionFunc) (*PipelineVariable, *Response, error) {
366 project, err := parseID(pid)
367 if err != nil {
368 return nil, nil, err
369 }
370 u := fmt.Sprintf("projects/%s/pipeline_schedules/%d/variables/%s", PathEscape(project), schedule, key)
371
372 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
373 if err != nil {
374 return nil, nil, err
375 }
376
377 p := new(PipelineVariable)
378 resp, err := s.client.Do(req, p)
379 if err != nil {
380 return nil, resp, err
381 }
382
383 return p, resp, nil
384 }
385
View as plain text