circleci 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +580 -176
- data/lib/circleci/http.rb +8 -2
- data/lib/circleci/project.rb +109 -27
- data/lib/circleci/user.rb +11 -0
- metadata +22 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7583f51aa12b390fe9e5e62dfb29b245f634255a
|
4
|
+
data.tar.gz: a7146773d7108609340b72f6336b7ab228e5b9a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d101bd724b7f387f6d7ea2b64d47394df9aa948becb0bed148fde4ad8658b772cd222f46e36d4cbe87ede3a79ba2f9e70e39a2a84059e213693d81a6b43c253
|
7
|
+
data.tar.gz: 04c36196b1e4c3c19b01b7cf0b0a4428a016de587e6d48f6fb20126e4abe38ae8dd4ea46ac325b58321bf41ae19e16a1653466a68ba2b7a0d6a4441e0acb7e61
|
data/README.md
CHANGED
@@ -11,7 +11,7 @@ Circle CI API Wrapper
|
|
11
11
|
## Install
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem install
|
14
|
+
gem install circleci
|
15
15
|
```
|
16
16
|
|
17
17
|
or with Bundler
|
@@ -32,30 +32,81 @@ CircleCi.configure do |config|
|
|
32
32
|
end
|
33
33
|
```
|
34
34
|
|
35
|
-
|
35
|
+
## API Endpoints
|
36
|
+
|
37
|
+
* [User](#user)
|
38
|
+
* [Heroku Key](#heroku_key)
|
39
|
+
* [Me](#me)
|
40
|
+
* [Project](#project)
|
41
|
+
* [All](#all)
|
42
|
+
* [Build Branch](#build_branch)
|
43
|
+
* [Build SSH Key](#build_ssh_key)
|
44
|
+
* [Clear Cache](#clear_cache)
|
45
|
+
* [Enable](#enable)
|
46
|
+
* [Follow](#follow)
|
47
|
+
* [Delete Checkout Key](#delete_checkout_key)
|
48
|
+
* [Get Checkout Key](#get_checkout_key)
|
49
|
+
* [List Checkout Keys](#list_checkout_keys)
|
50
|
+
* [New Checkout Key](#new_checkout_key)
|
51
|
+
* [Recent Builds](#recent_builds)
|
52
|
+
* [Recent Builds Branch](#recent_builds_branch)
|
53
|
+
* [Settings](#settings)
|
54
|
+
* [SSH Key](#ssh_key)
|
55
|
+
* [Unfollow](#unfollow)
|
56
|
+
* [Build](#build)
|
57
|
+
* [Artifacts](#artifacts)
|
58
|
+
* [Cancel](#cancel)
|
59
|
+
* [Get](#get)
|
60
|
+
* [Retry](#retry)
|
61
|
+
* [Tests](#tests)
|
62
|
+
* [Organization](#organization)
|
63
|
+
|
64
|
+
### [User](#user)
|
65
|
+
|
66
|
+
#### [heroku_key](#heroku_key)
|
67
|
+
|
68
|
+
Endpoint: `/user/heroku-key`
|
69
|
+
|
70
|
+
Adds your Heroku API key to CircleCI.
|
71
|
+
```ruby
|
72
|
+
res = CircleCi::User.heroku_key 'your-api-key'
|
73
|
+
res.success? # True
|
74
|
+
res.body
|
75
|
+
```
|
76
|
+
|
77
|
+
Example response
|
78
|
+
|
79
|
+
Empty body response with a `200 OK` response code
|
80
|
+
```javascript
|
81
|
+
""
|
82
|
+
```
|
36
83
|
|
37
|
-
####
|
84
|
+
#### [me](#me)
|
85
|
+
|
86
|
+
Endpoint: `/me`
|
38
87
|
|
39
88
|
Provides information about the signed in user.
|
40
89
|
|
41
90
|
```ruby
|
42
91
|
res = CircleCi::User.me
|
43
|
-
res.
|
92
|
+
res.success? # True
|
44
93
|
res.body
|
45
94
|
```
|
46
95
|
|
47
96
|
Example response
|
48
97
|
|
49
|
-
```
|
98
|
+
```javascript
|
50
99
|
{
|
51
100
|
"basic_email_prefs" : "smart", // can be "smart", "none" or "all"
|
52
101
|
"login" : "pbiggar" // your github username
|
53
102
|
}
|
54
103
|
```
|
55
104
|
|
56
|
-
### Project
|
105
|
+
### [Project](#project)
|
106
|
+
|
107
|
+
#### [all](#all)
|
57
108
|
|
58
|
-
|
109
|
+
Endpoint: `/projects`
|
59
110
|
|
60
111
|
List of all the repos you have access to on Github, with build information organized by branch.
|
61
112
|
|
@@ -67,7 +118,7 @@ res.body
|
|
67
118
|
|
68
119
|
Example response
|
69
120
|
|
70
|
-
```
|
121
|
+
```javascript
|
71
122
|
[ {
|
72
123
|
"vcs_url": "https://github.com/circleci/mongofinil"
|
73
124
|
"followed": true // true if you follow this project in Circle
|
@@ -103,7 +154,340 @@ Example response
|
|
103
154
|
} ]
|
104
155
|
```
|
105
156
|
|
106
|
-
####
|
157
|
+
#### [build_branch](#build_branch)
|
158
|
+
|
159
|
+
Endpoint: `/project/:username/:repository/tree/:branch`
|
160
|
+
|
161
|
+
Build a specific branch of a project
|
162
|
+
|
163
|
+
```ruby
|
164
|
+
res = CircleCi::Project.build_branch 'username', 'reponame', 'branch'
|
165
|
+
res.body['status'] # Not running
|
166
|
+
res.body['build_url'] # Get url of build
|
167
|
+
```
|
168
|
+
|
169
|
+
Example response
|
170
|
+
|
171
|
+
```javascript
|
172
|
+
{
|
173
|
+
"compare" : null,
|
174
|
+
"previous_successful_build" : {
|
175
|
+
"build_time_millis" : 40479,
|
176
|
+
"status" : "success",
|
177
|
+
"build_num" : 76
|
178
|
+
},
|
179
|
+
"build_parameters" : { },
|
180
|
+
"committer_date" : "2014-07-27T14:40:15Z",
|
181
|
+
"body" : "",
|
182
|
+
"usage_queued_at" : "2014-07-29T14:05:36.373Z",
|
183
|
+
"retry_of" : null,
|
184
|
+
"reponame" : "soapy_cake",
|
185
|
+
"build_url" : "https://circleci.com/gh/ad2games/soapy_cake/77",
|
186
|
+
"parallel" : 1,
|
187
|
+
"failed" : null,
|
188
|
+
"branch" : "master",
|
189
|
+
"username" : "ad2games",
|
190
|
+
"author_date" : "2014-07-27T14:40:15Z",
|
191
|
+
"why" : "edit",
|
192
|
+
"user" : {
|
193
|
+
"is_user" : true,
|
194
|
+
"login" : "hwartig",
|
195
|
+
"name" : "Harald Wartig",
|
196
|
+
"email" : "hw@ad2games.com"
|
197
|
+
},
|
198
|
+
"vcs_revision" : "f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
199
|
+
"build_num" : 77,
|
200
|
+
"infrastructure_fail" : false,
|
201
|
+
"ssh_enabled" : null,
|
202
|
+
"committer_email" : "hwartig@gmail.com",
|
203
|
+
"previous" : {
|
204
|
+
"build_time_millis" : 40479,
|
205
|
+
"status" : "success",
|
206
|
+
"build_num" : 76
|
207
|
+
},
|
208
|
+
"status" : "not_running",
|
209
|
+
"committer_name" : "Harald Wartig",
|
210
|
+
"retries" : null,
|
211
|
+
"subject" : "Fix link to api_versions.yml",
|
212
|
+
"timedout" : false,
|
213
|
+
"dont_build" : null,
|
214
|
+
"feature_flags" : { },
|
215
|
+
"lifecycle" : "not_running",
|
216
|
+
"stop_time" : null,
|
217
|
+
"build_time_millis" : null,
|
218
|
+
"circle_yml" : null,
|
219
|
+
"messages" : [ ],
|
220
|
+
"is_first_green_build" : false,
|
221
|
+
"job_name" : null,
|
222
|
+
"start_time" : null,
|
223
|
+
"all_commit_details" : [ {
|
224
|
+
"committer_date" : "2014-07-27T14:40:15Z",
|
225
|
+
"body" : "",
|
226
|
+
"author_date" : "2014-07-27T14:40:15Z",
|
227
|
+
"committer_email" : "hwartig@gmail.com",
|
228
|
+
"commit" : "f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
229
|
+
"committer_login" : "hwartig",
|
230
|
+
"committer_name" : "Harald Wartig",
|
231
|
+
"subject" : "Fix link to api_versions.yml",
|
232
|
+
"commit_url" : "https://github.com/ad2games/soapy_cake/commit/f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
233
|
+
"author_login" : "hwartig",
|
234
|
+
"author_name" : "Harald Wartig",
|
235
|
+
"author_email" : "hwartig@gmail.com"
|
236
|
+
} ],
|
237
|
+
"outcome" : null,
|
238
|
+
"vcs_url" : "https://github.com/ad2games/soapy_cake",
|
239
|
+
"author_name" : "Harald Wartig",
|
240
|
+
"node" : null,
|
241
|
+
"canceled" : false,
|
242
|
+
"author_email" : "hwartig@gmail.com"
|
243
|
+
}
|
244
|
+
```
|
245
|
+
|
246
|
+
It also supports the Experimental Parameterized Builds
|
247
|
+
|
248
|
+
```
|
249
|
+
build_environment_variables = {"ENV_VAR1" => "VALUE1", "ENV_VAR2" => "VALUE2"}
|
250
|
+
res = CircleCi::Project.build_branch 'username', 'reponame', 'branch', build_environment_variables
|
251
|
+
```
|
252
|
+
|
253
|
+
#### [build_ssh_key](#build_ssh_key)
|
254
|
+
|
255
|
+
Endpoint: `/project/:username/:repository/:build_num/ssh-users`
|
256
|
+
|
257
|
+
Adds a user to the build's SSH permissions.
|
258
|
+
|
259
|
+
```ruby
|
260
|
+
res = CircleCi::Project.build_ssh_key 'username', 'repo', 'RSA private key', 'hostname'
|
261
|
+
res.success?
|
262
|
+
```
|
263
|
+
|
264
|
+
Example response
|
265
|
+
|
266
|
+
Empty response body with a `200 OK` successful response code
|
267
|
+
```javascript
|
268
|
+
""
|
269
|
+
```
|
270
|
+
|
271
|
+
#### [clear_cache](#clear_cache)
|
272
|
+
|
273
|
+
Endpoint: `/project/:username/:repository/build-cache`
|
274
|
+
|
275
|
+
Clears the cache for a project
|
276
|
+
|
277
|
+
```ruby
|
278
|
+
res = CircleCi::Project.clear_cache
|
279
|
+
res.body['status']
|
280
|
+
```
|
281
|
+
|
282
|
+
Example response
|
283
|
+
|
284
|
+
```javascript
|
285
|
+
{
|
286
|
+
"status" : "build caches deleted"
|
287
|
+
}
|
288
|
+
```
|
289
|
+
|
290
|
+
#### [delete_checkout_key](#delete_checkout_key)
|
291
|
+
|
292
|
+
Endpoint: `/project/:username/:repository/checkout-key/:fingerprint`
|
293
|
+
|
294
|
+
Delete a checkout key for a project by supplying the fingerprint of the key.
|
295
|
+
```ruby
|
296
|
+
res = CircleCi::Project.delete_checkout_key 'username', 'reponame', 'fingerprint'
|
297
|
+
res.success?
|
298
|
+
res.body
|
299
|
+
```
|
300
|
+
|
301
|
+
Example response
|
302
|
+
|
303
|
+
```javascript
|
304
|
+
{"message":"ok"}
|
305
|
+
```
|
306
|
+
|
307
|
+
#### [enable](#enable)
|
308
|
+
|
309
|
+
Endpoint: `/project/:username/:repository/enable`
|
310
|
+
|
311
|
+
Enable a project in CircleCI. Causes a CircleCI SSH key to be added to
|
312
|
+
the GitHub. Requires admin privilege to the repository.
|
313
|
+
|
314
|
+
```ruby
|
315
|
+
res = CircleCi::Project.enable 'username', 'reponame'
|
316
|
+
res.success?
|
317
|
+
```
|
318
|
+
|
319
|
+
Example response
|
320
|
+
```javascript
|
321
|
+
{
|
322
|
+
"hall_notify_prefs": nil,
|
323
|
+
"irc_password": nil,
|
324
|
+
"default_branch": "master",
|
325
|
+
"hipchat_notify": nil,
|
326
|
+
"campfire_notify_prefs": nil,
|
327
|
+
"campfire_room": nil,
|
328
|
+
"irc_keyword": nil,
|
329
|
+
"slack_api_token": nil,
|
330
|
+
"parallel": 1,
|
331
|
+
"github_user": nil,
|
332
|
+
"github_permissions": {
|
333
|
+
"admin": true,
|
334
|
+
"push": true,
|
335
|
+
"pull": true
|
336
|
+
},
|
337
|
+
"irc_server": nil,
|
338
|
+
"heroku_deploy_user": nil,
|
339
|
+
"dependencies": "",
|
340
|
+
"slack_notify_prefs": nil,
|
341
|
+
"ssh_keys": [
|
342
|
+
|
343
|
+
],
|
344
|
+
"extra": "",
|
345
|
+
"followed": false,
|
346
|
+
"branches": {
|
347
|
+
"master": {
|
348
|
+
"last_non_success": {
|
349
|
+
"added_at": "2014-06-05T17:23:25.352Z",
|
350
|
+
"pushed_at": "2014-06-05T17:22:52.518Z",
|
351
|
+
"vcs_revision": "66d398cb635c5f4dd666dd1526bda5894d1246e4",
|
352
|
+
"build_num": 6,
|
353
|
+
"status": "no_tests",
|
354
|
+
"outcome": "no_tests"
|
355
|
+
},
|
356
|
+
"recent_builds": [
|
357
|
+
{
|
358
|
+
"added_at": "2014-06-05T17:23:25.352Z",
|
359
|
+
"pushed_at": "2014-06-05T17:22:52.518Z",
|
360
|
+
"vcs_revision": "66d398cb635c5f4dd666dd1526bda5894d1246e4",
|
361
|
+
"build_num": 6,
|
362
|
+
"status": "no_tests",
|
363
|
+
"outcome": "no_tests"
|
364
|
+
}
|
365
|
+
],
|
366
|
+
"running_builds": [
|
367
|
+
|
368
|
+
]
|
369
|
+
}
|
370
|
+
},
|
371
|
+
"campfire_token": nil,
|
372
|
+
"hipchat_notify_prefs": nil,
|
373
|
+
"test": "",
|
374
|
+
"compile": "",
|
375
|
+
"hipchat_room": nil,
|
376
|
+
"slack_channel": nil,
|
377
|
+
"slack_subdomain": nil,
|
378
|
+
"vcs_url": "https://github.com/Shopify/google_auth",
|
379
|
+
"flowdock_api_token": nil,
|
380
|
+
"hall_room_api_token": nil,
|
381
|
+
"slack_webhook_url": nil,
|
382
|
+
"irc_username": nil,
|
383
|
+
"hipchat_api_token": nil,
|
384
|
+
"campfire_subdomain": nil,
|
385
|
+
"has_usable_key": true,
|
386
|
+
"setup": "",
|
387
|
+
"irc_channel": nil,
|
388
|
+
"feature_flags": {
|
389
|
+
"build_GH1157_container_oriented_ui": nil,
|
390
|
+
"set-github-status": true
|
391
|
+
},
|
392
|
+
"irc_notify_prefs": nil
|
393
|
+
}
|
394
|
+
```
|
395
|
+
|
396
|
+
#### [follow](#follow)
|
397
|
+
|
398
|
+
Endpoint: `/project/:username/:repository/follow`
|
399
|
+
|
400
|
+
Follow a project
|
401
|
+
|
402
|
+
```ruby
|
403
|
+
res = CircleCi::Build.follow 'username', 'repo'
|
404
|
+
res.success?
|
405
|
+
```
|
406
|
+
|
407
|
+
Example response
|
408
|
+
|
409
|
+
```javascript
|
410
|
+
{
|
411
|
+
"followed": true,
|
412
|
+
"first_build": nil
|
413
|
+
}
|
414
|
+
```
|
415
|
+
|
416
|
+
#### [get_checkout_key](#get_checkout_key)
|
417
|
+
|
418
|
+
Endpoint: `/project/:username/:repository/checkout-key/:fingerprint`
|
419
|
+
|
420
|
+
Get a checkout key for a project by supplying the fingerprint of the key.
|
421
|
+
```ruby
|
422
|
+
res = CircleCi::Project.get_checkout_key 'username', 'reponame', 'fingerprint'
|
423
|
+
res.success?
|
424
|
+
res.body
|
425
|
+
```
|
426
|
+
|
427
|
+
Example response
|
428
|
+
|
429
|
+
```javascript
|
430
|
+
{
|
431
|
+
"public_key": "ssh-rsa...",
|
432
|
+
"type": "deploy-key", // can be "deploy-key" or "user-key"
|
433
|
+
"fingerprint": "c9:0b:1c:4f:d5:65:56:b9:ad:88:f9:81:2b:37:74:2f",
|
434
|
+
"preferred": true,
|
435
|
+
"time" : "2015-09-21T17:29:21.042Z" // when the key was issued
|
436
|
+
}
|
437
|
+
```
|
438
|
+
|
439
|
+
#### [list_checkout_keys](#list_checkout_keys)
|
440
|
+
|
441
|
+
Endpoint: `/project/#{username}/#{project}/checkout-key`
|
442
|
+
|
443
|
+
List checkout keys
|
444
|
+
|
445
|
+
```ruby
|
446
|
+
res = CircleCi::Project.checkout_keys 'username', 'repo'
|
447
|
+
res.success?
|
448
|
+
```
|
449
|
+
|
450
|
+
Example response
|
451
|
+
|
452
|
+
```javascript
|
453
|
+
[
|
454
|
+
{
|
455
|
+
"public_key": "ssh-rsa...",
|
456
|
+
"type": "deploy-key", // can be "deploy-key" or "user-key"
|
457
|
+
"fingerprint": "c9:0b:1c:4f:d5:65:56:b9:ad:88:f9:81:2b:37:74:2f",
|
458
|
+
"preferred": true,
|
459
|
+
"time" : "2015-09-21T17:29:21.042Z" // when the key was issued
|
460
|
+
}
|
461
|
+
]
|
462
|
+
```
|
463
|
+
|
464
|
+
#### [new_checkout_key](#new_checkout_key)
|
465
|
+
|
466
|
+
Endpoint: `/project/:username/:repository/checkout-key`
|
467
|
+
|
468
|
+
Create an ssh key used to access external systems that require SSH key-based authentication.
|
469
|
+
Takes a type of key to create which an be `deploy-key` or `github-user-key`.
|
470
|
+
```ruby
|
471
|
+
res = CircleCi::Project.new_checkout_key 'username', 'reponame', 'deploy-key'
|
472
|
+
res.success?
|
473
|
+
res.body
|
474
|
+
```
|
475
|
+
|
476
|
+
Example response
|
477
|
+
|
478
|
+
```javascript
|
479
|
+
{
|
480
|
+
"public_key": "ssh-rsa...",
|
481
|
+
"type": "deploy-key", // can be "deploy-key" or "user-key"
|
482
|
+
"fingerprint": "c9:0b:1c:4f:d5:65:56:b9:ad:88:f9:81:2b:37:74:2f",
|
483
|
+
"preferred": true,
|
484
|
+
"time" : "2015-09-21T17:29:21.042Z" // when the key was issued
|
485
|
+
}
|
486
|
+
```
|
487
|
+
|
488
|
+
#### [recent_builds](#recent_builds)
|
489
|
+
|
490
|
+
Endpoint: `/project/:username/:repository`
|
107
491
|
|
108
492
|
Build summary for each of the last 30 recent builds, ordered by build_num.
|
109
493
|
|
@@ -115,7 +499,7 @@ res.body
|
|
115
499
|
|
116
500
|
Example response
|
117
501
|
|
118
|
-
```
|
502
|
+
```javascript
|
119
503
|
[ {
|
120
504
|
"vcs_url" : "https://github.com/circleci/mongofinil",
|
121
505
|
"build_url" : "https://circleci.com/gh/circleci/mongofinil/22",
|
@@ -142,7 +526,9 @@ Example response
|
|
142
526
|
} ]
|
143
527
|
```
|
144
528
|
|
145
|
-
####
|
529
|
+
#### [recent_builds_branch](#recent_builds_branch)
|
530
|
+
|
531
|
+
Endpoint: `/project/:username/:repository/tree/:branch`
|
146
532
|
|
147
533
|
Build summary for each of the last 30 recent builds for a specific branch, ordered by build_num.
|
148
534
|
|
@@ -154,7 +540,7 @@ res.body
|
|
154
540
|
|
155
541
|
Example response
|
156
542
|
|
157
|
-
```
|
543
|
+
```javascript
|
158
544
|
[ {
|
159
545
|
"vcs_url" : "https://github.com/circleci/mongofinil",
|
160
546
|
"build_url" : "https://circleci.com/gh/circleci/mongofinil/22",
|
@@ -181,120 +567,203 @@ Example response
|
|
181
567
|
} ]
|
182
568
|
```
|
183
569
|
|
184
|
-
####
|
570
|
+
#### [settings](#settings)
|
185
571
|
|
186
|
-
|
572
|
+
Endpoint: `/project/:username/:repository/settings`
|
573
|
+
|
574
|
+
Get project settings
|
187
575
|
|
188
576
|
```ruby
|
189
|
-
res = CircleCi::Project.
|
190
|
-
res.
|
577
|
+
res = CircleCi::Project.settings 'username', 'repo'
|
578
|
+
res.success?
|
191
579
|
```
|
192
580
|
|
193
581
|
Example response
|
194
582
|
|
195
|
-
```
|
583
|
+
```javascript
|
196
584
|
{
|
197
|
-
|
585
|
+
"hall_notify_prefs": nil,
|
586
|
+
"irc_password": nil,
|
587
|
+
"default_branch": "master",
|
588
|
+
"hipchat_notify": nil,
|
589
|
+
"campfire_notify_prefs": nil,
|
590
|
+
"campfire_room": nil,
|
591
|
+
"irc_keyword": nil,
|
592
|
+
"slack_api_token": nil,
|
593
|
+
"parallel": 1,
|
594
|
+
"github_user": nil,
|
595
|
+
"github_permissions": {
|
596
|
+
"admin": true,
|
597
|
+
"push": true,
|
598
|
+
"pull": true
|
599
|
+
},
|
600
|
+
"irc_server": nil,
|
601
|
+
"heroku_deploy_user": nil,
|
602
|
+
"dependencies": "",
|
603
|
+
"slack_notify_prefs": nil,
|
604
|
+
"ssh_keys": [
|
605
|
+
|
606
|
+
],
|
607
|
+
"extra": "",
|
608
|
+
"followed": true,
|
609
|
+
"branches": {
|
610
|
+
"master": {
|
611
|
+
"running_builds": [
|
612
|
+
{
|
613
|
+
"added_at": "2014-06-05T17:22:52.779Z",
|
614
|
+
"pushed_at": "2014-06-05T17:22:52.518Z",
|
615
|
+
"vcs_revision": "66d398cb635c5f4dd666dd1526bda5894d1246e4",
|
616
|
+
"build_num": 6,
|
617
|
+
"status": "not_running",
|
618
|
+
"outcome": nil
|
619
|
+
}
|
620
|
+
]
|
621
|
+
}
|
622
|
+
},
|
623
|
+
"campfire_token": nil,
|
624
|
+
"hipchat_notify_prefs": nil,
|
625
|
+
"test": "",
|
626
|
+
"compile": "",
|
627
|
+
"hipchat_room": nil,
|
628
|
+
"slack_channel": nil,
|
629
|
+
"slack_subdomain": nil,
|
630
|
+
"vcs_url": "https://github.com/Shopify/google_auth",
|
631
|
+
"flowdock_api_token": nil,
|
632
|
+
"hall_room_api_token": nil,
|
633
|
+
"slack_webhook_url": nil,
|
634
|
+
"irc_username": nil,
|
635
|
+
"hipchat_api_token": nil,
|
636
|
+
"campfire_subdomain": nil,
|
637
|
+
"has_usable_key": true,
|
638
|
+
"setup": "",
|
639
|
+
"irc_channel": nil,
|
640
|
+
"feature_flags": {
|
641
|
+
"build_GH1157_container_oriented_ui": nil,
|
642
|
+
"set-github-status": true
|
643
|
+
},
|
644
|
+
"irc_notify_prefs": nil
|
198
645
|
}
|
199
646
|
```
|
200
647
|
|
201
|
-
####
|
648
|
+
#### [ssh_key](#ssh_key)
|
202
649
|
|
203
|
-
|
650
|
+
Endpoint: `/project/:username/:repository/ssh-key`
|
651
|
+
|
652
|
+
Creates an ssh key that will be used to access the external system identified
|
653
|
+
by the hostname parameter for SSH key-based authentication.
|
204
654
|
|
205
655
|
```ruby
|
206
|
-
res = CircleCi::Project.
|
207
|
-
res.
|
208
|
-
res.body['build_url'] # Get url of build
|
656
|
+
res = CircleCi::Project.ssh_key 'username', 'repo', 'RSA private key', 'hostname'
|
657
|
+
res.success?
|
209
658
|
```
|
210
659
|
|
211
660
|
Example response
|
212
661
|
|
213
|
-
|
662
|
+
Empty response body with a `200 OK` successful response code
|
663
|
+
```javascript
|
664
|
+
""
|
665
|
+
```
|
666
|
+
|
667
|
+
#### [unfollow](#unfollow)
|
668
|
+
|
669
|
+
Endpoint: `/project/:username/:repository/unfollow`
|
670
|
+
|
671
|
+
Unfollow a project
|
672
|
+
|
673
|
+
```ruby
|
674
|
+
res = CircleCi::Build.unfollow 'username', 'repo'
|
675
|
+
res.success?
|
676
|
+
```
|
677
|
+
|
678
|
+
Example response
|
679
|
+
|
680
|
+
```javascript
|
214
681
|
{
|
215
|
-
|
216
|
-
"previous_successful_build" : {
|
217
|
-
"build_time_millis" : 40479,
|
218
|
-
"status" : "success",
|
219
|
-
"build_num" : 76
|
220
|
-
},
|
221
|
-
"build_parameters" : { },
|
222
|
-
"committer_date" : "2014-07-27T14:40:15Z",
|
223
|
-
"body" : "",
|
224
|
-
"usage_queued_at" : "2014-07-29T14:05:36.373Z",
|
225
|
-
"retry_of" : null,
|
226
|
-
"reponame" : "soapy_cake",
|
227
|
-
"build_url" : "https://circleci.com/gh/ad2games/soapy_cake/77",
|
228
|
-
"parallel" : 1,
|
229
|
-
"failed" : null,
|
230
|
-
"branch" : "master",
|
231
|
-
"username" : "ad2games",
|
232
|
-
"author_date" : "2014-07-27T14:40:15Z",
|
233
|
-
"why" : "edit",
|
234
|
-
"user" : {
|
235
|
-
"is_user" : true,
|
236
|
-
"login" : "hwartig",
|
237
|
-
"name" : "Harald Wartig",
|
238
|
-
"email" : "hw@ad2games.com"
|
239
|
-
},
|
240
|
-
"vcs_revision" : "f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
241
|
-
"build_num" : 77,
|
242
|
-
"infrastructure_fail" : false,
|
243
|
-
"ssh_enabled" : null,
|
244
|
-
"committer_email" : "hwartig@gmail.com",
|
245
|
-
"previous" : {
|
246
|
-
"build_time_millis" : 40479,
|
247
|
-
"status" : "success",
|
248
|
-
"build_num" : 76
|
249
|
-
},
|
250
|
-
"status" : "not_running",
|
251
|
-
"committer_name" : "Harald Wartig",
|
252
|
-
"retries" : null,
|
253
|
-
"subject" : "Fix link to api_versions.yml",
|
254
|
-
"timedout" : false,
|
255
|
-
"dont_build" : null,
|
256
|
-
"feature_flags" : { },
|
257
|
-
"lifecycle" : "not_running",
|
258
|
-
"stop_time" : null,
|
259
|
-
"build_time_millis" : null,
|
260
|
-
"circle_yml" : null,
|
261
|
-
"messages" : [ ],
|
262
|
-
"is_first_green_build" : false,
|
263
|
-
"job_name" : null,
|
264
|
-
"start_time" : null,
|
265
|
-
"all_commit_details" : [ {
|
266
|
-
"committer_date" : "2014-07-27T14:40:15Z",
|
267
|
-
"body" : "",
|
268
|
-
"author_date" : "2014-07-27T14:40:15Z",
|
269
|
-
"committer_email" : "hwartig@gmail.com",
|
270
|
-
"commit" : "f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
271
|
-
"committer_login" : "hwartig",
|
272
|
-
"committer_name" : "Harald Wartig",
|
273
|
-
"subject" : "Fix link to api_versions.yml",
|
274
|
-
"commit_url" : "https://github.com/ad2games/soapy_cake/commit/f932ea1b564ceaaa8cdba06b1bb93e1869a9a905",
|
275
|
-
"author_login" : "hwartig",
|
276
|
-
"author_name" : "Harald Wartig",
|
277
|
-
"author_email" : "hwartig@gmail.com"
|
278
|
-
} ],
|
279
|
-
"outcome" : null,
|
280
|
-
"vcs_url" : "https://github.com/ad2games/soapy_cake",
|
281
|
-
"author_name" : "Harald Wartig",
|
282
|
-
"node" : null,
|
283
|
-
"canceled" : false,
|
284
|
-
"author_email" : "hwartig@gmail.com"
|
682
|
+
"followed": false
|
285
683
|
}
|
286
684
|
```
|
287
685
|
|
288
|
-
|
686
|
+
### [Build](#build)
|
687
|
+
|
688
|
+
#### [artifacts](#artifacts)
|
289
689
|
|
690
|
+
Endpoint: `/project/:username/:repository/:build/artifacts`
|
691
|
+
|
692
|
+
Artifacts produced by the build, returns an array of artifact details
|
693
|
+
|
694
|
+
```ruby
|
695
|
+
res = CircleCi::Build.artifacts 'username', 'repo', 'build #'
|
696
|
+
res.success?
|
697
|
+
res.body
|
290
698
|
```
|
291
|
-
|
292
|
-
|
699
|
+
|
700
|
+
```javascript
|
701
|
+
[
|
702
|
+
{
|
703
|
+
node_index: 0,
|
704
|
+
path: "/tmp/circle-artifacts.NHQxLku/cherry-pie.png",
|
705
|
+
pretty_path: "$CIRCLE_ARTIFACTS/cherry-pie.png",
|
706
|
+
url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/cherry-pie.png"
|
707
|
+
},
|
708
|
+
{
|
709
|
+
node_index: 0,
|
710
|
+
path: "/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png",
|
711
|
+
pretty_path: "$CIRCLE_ARTIFACTS/rhubarb-pie.png",
|
712
|
+
url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png"
|
713
|
+
}
|
714
|
+
]
|
293
715
|
```
|
294
716
|
|
295
|
-
|
717
|
+
#### [cancel](#cancel)
|
296
718
|
|
297
|
-
|
719
|
+
Endpoint: `/project/:username/:repository/:build/cancel`
|
720
|
+
|
721
|
+
Cancels the build, returns a summary of the build.
|
722
|
+
|
723
|
+
```ruby
|
724
|
+
res = CircleCi::Build.cancel 'username', 'repo', 'build #'
|
725
|
+
res.success?
|
726
|
+
res.body['status'] # 'canceled'
|
727
|
+
res.body['outcome'] # 'canceled'
|
728
|
+
res.body['canceled'] # true
|
729
|
+
```
|
730
|
+
|
731
|
+
Example response
|
732
|
+
|
733
|
+
```javascript
|
734
|
+
{
|
735
|
+
"vcs_url" : "https://github.com/circleci/mongofinil",
|
736
|
+
"build_url" : "https://circleci.com/gh/circleci/mongofinil/26",
|
737
|
+
"build_num" : 26,
|
738
|
+
"branch" : "master",
|
739
|
+
"vcs_revision" : "59c9c5ea3e289f2f3b0c94e128267cc0ce2d65c6",
|
740
|
+
"committer_name" : "Allen Rohner",
|
741
|
+
"committer_email" : "arohner@gmail.com",
|
742
|
+
"subject" : "Merge pull request #6 from dlowe/master"
|
743
|
+
"body" : "le bump", // commit message body
|
744
|
+
"why" : "retry", // short string explaining the reason we built
|
745
|
+
"dont_build" : null, // reason why we didn't build, if we didn't build
|
746
|
+
"queued_at" : "2013-05-24T19:37:59.095Z" // time build was queued
|
747
|
+
"start_time" : null, // time build started running
|
748
|
+
"stop_time" : null, // time build finished running
|
749
|
+
"build_time_millis" : null,
|
750
|
+
"username" : "circleci",
|
751
|
+
"reponame" : "mongofinil",
|
752
|
+
"lifecycle" : "queued",
|
753
|
+
"outcome" : "canceled",
|
754
|
+
"status" : "canceled",
|
755
|
+
"canceled" : true,
|
756
|
+
"retry_of" : 25, // build_num of the build this is a retry of
|
757
|
+
"previous" : { // previous build
|
758
|
+
"status" : "success",
|
759
|
+
"build_num" : 25
|
760
|
+
}
|
761
|
+
}
|
762
|
+
```
|
763
|
+
|
764
|
+
#### [get](#get)
|
765
|
+
|
766
|
+
Endpoint: `/project/:username/:repository/:build`
|
298
767
|
|
299
768
|
Full details for a single build, including the output for all actions. The response includes all of the fields from the build summary.
|
300
769
|
|
@@ -306,7 +775,7 @@ res.body
|
|
306
775
|
|
307
776
|
Example response
|
308
777
|
|
309
|
-
```
|
778
|
+
```javascript
|
310
779
|
{
|
311
780
|
"vcs_url" : "https://github.com/circleci/mongofinil",
|
312
781
|
"build_url" : "https://circleci.com/gh/circleci/mongofinil/22",
|
@@ -381,7 +850,9 @@ Example response
|
|
381
850
|
}
|
382
851
|
```
|
383
852
|
|
384
|
-
####
|
853
|
+
#### [retry](#retry)
|
854
|
+
|
855
|
+
Endpoint: `/project/:username/:repository/:build/retry`
|
385
856
|
|
386
857
|
Retries the build, returns a summary of the new build.
|
387
858
|
|
@@ -394,7 +865,7 @@ res.body
|
|
394
865
|
|
395
866
|
Example response
|
396
867
|
|
397
|
-
```
|
868
|
+
```javascript
|
398
869
|
{
|
399
870
|
"vcs_url" : "https://github.com/circleci/mongofinil",
|
400
871
|
"build_url" : "https://circleci.com/gh/circleci/mongofinil/23",
|
@@ -419,80 +890,11 @@ Example response
|
|
419
890
|
"status" : "failed",
|
420
891
|
"build_num" : 22
|
421
892
|
}
|
422
|
-
|
423
|
-
#### CircleCi::Build.cancel
|
424
|
-
|
425
|
-
Cancels the build, returns a summary of the build.
|
426
|
-
|
427
|
-
```ruby
|
428
|
-
res = CircleCi::Build.cancel 'username', 'repo', 'build #'
|
429
|
-
res.success?
|
430
|
-
res.body['status'] # 'canceled'
|
431
|
-
res.body['outcome'] # 'canceled'
|
432
|
-
res.body['canceled'] # true
|
433
893
|
```
|
434
894
|
|
435
|
-
|
895
|
+
#### [tests](#tests)
|
436
896
|
|
437
|
-
|
438
|
-
{
|
439
|
-
"vcs_url" : "https://github.com/circleci/mongofinil",
|
440
|
-
"build_url" : "https://circleci.com/gh/circleci/mongofinil/26",
|
441
|
-
"build_num" : 26,
|
442
|
-
"branch" : "master",
|
443
|
-
"vcs_revision" : "59c9c5ea3e289f2f3b0c94e128267cc0ce2d65c6",
|
444
|
-
"committer_name" : "Allen Rohner",
|
445
|
-
"committer_email" : "arohner@gmail.com",
|
446
|
-
"subject" : "Merge pull request #6 from dlowe/master"
|
447
|
-
"body" : "le bump", // commit message body
|
448
|
-
"why" : "retry", // short string explaining the reason we built
|
449
|
-
"dont_build" : null, // reason why we didn't build, if we didn't build
|
450
|
-
"queued_at" : "2013-05-24T19:37:59.095Z" // time build was queued
|
451
|
-
"start_time" : null, // time build started running
|
452
|
-
"stop_time" : null, // time build finished running
|
453
|
-
"build_time_millis" : null,
|
454
|
-
"username" : "circleci",
|
455
|
-
"reponame" : "mongofinil",
|
456
|
-
"lifecycle" : "queued",
|
457
|
-
"outcome" : "canceled",
|
458
|
-
"status" : "canceled",
|
459
|
-
"canceled" : true,
|
460
|
-
"retry_of" : 25, // build_num of the build this is a retry of
|
461
|
-
"previous" : { // previous build
|
462
|
-
"status" : "success",
|
463
|
-
"build_num" : 25
|
464
|
-
}
|
465
|
-
}
|
466
|
-
```
|
467
|
-
|
468
|
-
#### CircleCi::Build.artifacts
|
469
|
-
|
470
|
-
Artifacts produced by the build, returns an array of artifact details
|
471
|
-
|
472
|
-
```ruby
|
473
|
-
res = CircleCi::Build.artifacts 'username', 'repo', 'build #'
|
474
|
-
res.success?
|
475
|
-
res.body
|
476
|
-
```
|
477
|
-
|
478
|
-
```json
|
479
|
-
[
|
480
|
-
{
|
481
|
-
node_index: 0,
|
482
|
-
path: "/tmp/circle-artifacts.NHQxLku/cherry-pie.png",
|
483
|
-
pretty_path: "$CIRCLE_ARTIFACTS/cherry-pie.png",
|
484
|
-
url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/cherry-pie.png"
|
485
|
-
},
|
486
|
-
{
|
487
|
-
node_index: 0,
|
488
|
-
path: "/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png",
|
489
|
-
pretty_path: "$CIRCLE_ARTIFACTS/rhubarb-pie.png",
|
490
|
-
url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png"
|
491
|
-
}
|
492
|
-
]
|
493
|
-
```
|
494
|
-
|
495
|
-
#### CircleCi::Build.tests
|
897
|
+
Endpoint: `/project/:username/:repository/:build/tests`
|
496
898
|
|
497
899
|
Tests endpoint to get the recorded tests for a build. Will return an array of
|
498
900
|
the tests ran and some details.
|
@@ -503,7 +905,7 @@ res.success?
|
|
503
905
|
res.body
|
504
906
|
```
|
505
907
|
|
506
|
-
```
|
908
|
+
```javascript
|
507
909
|
[
|
508
910
|
{
|
509
911
|
"message" => nil,
|
@@ -526,7 +928,9 @@ res.body
|
|
526
928
|
]
|
527
929
|
```
|
528
930
|
|
529
|
-
|
931
|
+
### [organization](#organization)
|
932
|
+
|
933
|
+
Endpoint: `/organization/:name`
|
530
934
|
|
531
935
|
Recent builds for an entire organization
|
532
936
|
|
@@ -536,7 +940,7 @@ res.succes?
|
|
536
940
|
res.body
|
537
941
|
```
|
538
942
|
|
539
|
-
```
|
943
|
+
```javascript
|
540
944
|
[
|
541
945
|
{
|
542
946
|
"dont_build":null,
|
data/lib/circleci/http.rb
CHANGED
@@ -57,8 +57,14 @@ module CircleCi
|
|
57
57
|
|
58
58
|
def handle_response(body, code, path)
|
59
59
|
parsed = JSON.parse(body) rescue nil
|
60
|
-
|
61
|
-
|
60
|
+
successful_code = (200..299).include?(code)
|
61
|
+
self.response = parsed if parsed
|
62
|
+
|
63
|
+
# Some responses are empty but are successful
|
64
|
+
if body == '""' && successful_code
|
65
|
+
self.response = ''
|
66
|
+
self.success = true
|
67
|
+
elsif parsed && successful_code
|
62
68
|
self.success = true
|
63
69
|
else
|
64
70
|
self.errors << RequestError.new(body, code, path)
|
data/lib/circleci/project.rb
CHANGED
@@ -16,18 +16,6 @@ module CircleCi
|
|
16
16
|
CircleCi.http.get '/projects'
|
17
17
|
end
|
18
18
|
|
19
|
-
##
|
20
|
-
#
|
21
|
-
# Get all recent builds for a specific project
|
22
|
-
#
|
23
|
-
# @param username [String] - User or org name who owns project
|
24
|
-
# @param project [String] - Name of project
|
25
|
-
# @return [CircleCi::Response] - Response object
|
26
|
-
|
27
|
-
def self.recent_builds username, project
|
28
|
-
CircleCi.http.get "/project/#{username}/#{project}"
|
29
|
-
end
|
30
|
-
|
31
19
|
##
|
32
20
|
#
|
33
21
|
# Build the latest master push for this project
|
@@ -42,31 +30,33 @@ module CircleCi
|
|
42
30
|
|
43
31
|
##
|
44
32
|
#
|
45
|
-
#
|
33
|
+
# Build the latest push for this branch of a specific project
|
46
34
|
#
|
47
35
|
# @param username [String] - User or org name who owns project
|
48
36
|
# @param project [String] - Name of project
|
49
37
|
# @param branch [String] - Name of branch
|
38
|
+
# @param build_parameters [Hash] - Optional Build Parameters
|
50
39
|
# @return [CircleCi::Response] - Response object
|
51
40
|
|
52
|
-
def self.
|
53
|
-
|
41
|
+
def self.build_branch username, project, branch, build_parameters = {}
|
42
|
+
body = {}
|
43
|
+
body["build_parameters"] = build_parameters unless build_parameters.empty?
|
44
|
+
CircleCi.http.post "/project/#{username}/#{project}/tree/#{branch}", {}, body
|
54
45
|
end
|
55
46
|
|
56
47
|
##
|
57
48
|
#
|
58
|
-
#
|
49
|
+
# Add a ssh key to a build
|
59
50
|
#
|
60
51
|
# @param username [String] - User or org name who owns project
|
61
52
|
# @param project [String] - Name of project
|
62
|
-
# @param
|
63
|
-
# @param
|
53
|
+
# @param build [String] - Build number
|
54
|
+
# @param key [String] - The ssh private key
|
55
|
+
# @param hostname [String] - The hostname identified by the key
|
64
56
|
# @return [CircleCi::Response] - Response object
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
body["build_parameters"] = build_parameters unless build_parameters.empty?
|
69
|
-
CircleCi.http.post "/project/#{username}/#{project}/tree/#{branch}", {}, body
|
57
|
+
def self.build_ssh_key username, project, build, key, hostname
|
58
|
+
body = { hostname: hostname, private_key: key }
|
59
|
+
CircleCi.http.post "/project/#{username}/#{project}/#{build}/ssh-users", {}, body
|
70
60
|
end
|
71
61
|
|
72
62
|
##
|
@@ -83,7 +73,21 @@ module CircleCi
|
|
83
73
|
|
84
74
|
##
|
85
75
|
#
|
86
|
-
#
|
76
|
+
# Delete a checkout key for a project
|
77
|
+
#
|
78
|
+
# @param username [String] - User or org name who owns project
|
79
|
+
# @param project [String] - Name of project
|
80
|
+
# @param fingerprint [String] - Fingerprint of a checkout key
|
81
|
+
# @return [CircleCi::Response] - Response object
|
82
|
+
|
83
|
+
def self.delete_checkout_key username, project, fingerprint
|
84
|
+
CircleCi.http.delete "/project/#{username}/#{project}/checkout-key/#{fingerprint}"
|
85
|
+
end
|
86
|
+
|
87
|
+
##
|
88
|
+
#
|
89
|
+
# Enable a project in CircleCI. Causes a CircleCI SSH key to be added to
|
90
|
+
# the GitHub. Requires admin privilege to the repository.
|
87
91
|
#
|
88
92
|
# @param username [String] - User or org name who owns project
|
89
93
|
# @param project [String] - Name of project
|
@@ -107,14 +111,66 @@ module CircleCi
|
|
107
111
|
|
108
112
|
##
|
109
113
|
#
|
110
|
-
#
|
114
|
+
# Get a checkout key for a project
|
115
|
+
#
|
116
|
+
# @param username [String] - User or org name who owns project
|
117
|
+
# @param project [String] - Name of project
|
118
|
+
# @param fingerprint [String] - Fingerprint of a checkout key
|
119
|
+
# @return [CircleCi::Response] - Response object
|
120
|
+
|
121
|
+
def self.get_checkout_key username, project, fingerprint
|
122
|
+
CircleCi.http.get "/project/#{username}/#{project}/checkout-key/#{fingerprint}"
|
123
|
+
end
|
124
|
+
|
125
|
+
##
|
126
|
+
#
|
127
|
+
# Get a list of checkout keys for project
|
111
128
|
#
|
112
129
|
# @param username [String] - User or org name who owns project
|
113
130
|
# @param project [String] - Name of project
|
114
131
|
# @return [CircleCi::Response] - Response object
|
115
132
|
|
116
|
-
def self.
|
117
|
-
CircleCi.http.
|
133
|
+
def self.list_checkout_keys username, project
|
134
|
+
CircleCi.http.get "/project/#{username}/#{project}/checkout-key"
|
135
|
+
end
|
136
|
+
|
137
|
+
##
|
138
|
+
#
|
139
|
+
# Create a checkout key for a project
|
140
|
+
#
|
141
|
+
# @param username [String] - User or org name who owns project
|
142
|
+
# @param project [String] - Name of project
|
143
|
+
# @param type [String] - The type of key to create. Can be 'deploy-key' or 'github-user-key'.
|
144
|
+
# @return [CircleCi::Response] - Response object
|
145
|
+
|
146
|
+
def self.new_checkout_key username, project, type
|
147
|
+
body = { type: type }
|
148
|
+
CircleCi.http.post "/project/#{username}/#{project}/checkout-key", {}, body
|
149
|
+
end
|
150
|
+
|
151
|
+
##
|
152
|
+
#
|
153
|
+
# Get all recent builds for a specific project
|
154
|
+
#
|
155
|
+
# @param username [String] - User or org name who owns project
|
156
|
+
# @param project [String] - Name of project
|
157
|
+
# @return [CircleCi::Response] - Response object
|
158
|
+
|
159
|
+
def self.recent_builds username, project
|
160
|
+
CircleCi.http.get "/project/#{username}/#{project}"
|
161
|
+
end
|
162
|
+
|
163
|
+
##
|
164
|
+
#
|
165
|
+
# Get all recent builds for a specific branch of a project
|
166
|
+
#
|
167
|
+
# @param username [String] - User or org name who owns project
|
168
|
+
# @param project [String] - Name of project
|
169
|
+
# @param branch [String] - Name of branch
|
170
|
+
# @return [CircleCi::Response] - Response object
|
171
|
+
|
172
|
+
def self.recent_builds_branch username, project, branch
|
173
|
+
CircleCi.http.get "/project/#{username}/#{project}/tree/#{branch}"
|
118
174
|
end
|
119
175
|
|
120
176
|
##
|
@@ -129,6 +185,32 @@ module CircleCi
|
|
129
185
|
CircleCi.http.get "/project/#{username}/#{project}/settings"
|
130
186
|
end
|
131
187
|
|
188
|
+
##
|
189
|
+
#
|
190
|
+
# Add a ssh key to a project
|
191
|
+
#
|
192
|
+
# @param username [String] - User or org name who owns project
|
193
|
+
# @param project [String] - Name of project
|
194
|
+
# @param key [String] - The ssh private key
|
195
|
+
# @param hostname [String] - The hostname identified by the key
|
196
|
+
# @return [CircleCi::Response] - Response object
|
197
|
+
def self.ssh_key username, project, key, hostname
|
198
|
+
body = { hostname: hostname, private_key: key }
|
199
|
+
CircleCi.http.post "/project/#{username}/#{project}/ssh-key", {}, body
|
200
|
+
end
|
201
|
+
|
202
|
+
##
|
203
|
+
#
|
204
|
+
# Unfollow the project
|
205
|
+
#
|
206
|
+
# @param username [String] - User or org name who owns project
|
207
|
+
# @param project [String] - Name of project
|
208
|
+
# @return [CircleCi::Response] - Response object
|
209
|
+
|
210
|
+
def self.unfollow username, project
|
211
|
+
CircleCi.http.post "/project/#{username}/#{project}/unfollow"
|
212
|
+
end
|
213
|
+
|
132
214
|
end
|
133
215
|
|
134
216
|
end
|
data/lib/circleci/user.rb
CHANGED
@@ -16,6 +16,17 @@ module CircleCi
|
|
16
16
|
CircleCi.http.get '/me'
|
17
17
|
end
|
18
18
|
|
19
|
+
##
|
20
|
+
#
|
21
|
+
# Add a Heroku API key to CircleCI
|
22
|
+
#
|
23
|
+
# @param apikey [String] - The Heroku API key
|
24
|
+
# @return [CircleCi::Response] - Response object
|
25
|
+
def self.heroku_key apikey
|
26
|
+
body = { apikey: apikey }
|
27
|
+
CircleCi.http.post '/user/heroku-key', {}, body
|
28
|
+
end
|
29
|
+
|
19
30
|
end
|
20
31
|
|
21
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circleci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chavez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -16,54 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: coveralls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 0.7.12
|
33
|
+
version: 0.8.10
|
37
34
|
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 0.7.12
|
40
|
+
version: 0.8.10
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: dotenv
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: 2.0.
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 2.0.0
|
47
|
+
version: 2.0.2
|
57
48
|
type: :development
|
58
49
|
prerelease: false
|
59
50
|
version_requirements: !ruby/object:Gem::Requirement
|
60
51
|
requirements:
|
61
52
|
- - "~>"
|
62
53
|
- !ruby/object:Gem::Version
|
63
|
-
version: 2.0.
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: 2.0.0
|
54
|
+
version: 2.0.2
|
67
55
|
- !ruby/object:Gem::Dependency
|
68
56
|
name: gemcutter
|
69
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,9 +59,6 @@ dependencies:
|
|
71
59
|
- - "~>"
|
72
60
|
- !ruby/object:Gem::Version
|
73
61
|
version: 0.7.1
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.7.1
|
77
62
|
type: :development
|
78
63
|
prerelease: false
|
79
64
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -81,29 +66,20 @@ dependencies:
|
|
81
66
|
- - "~>"
|
82
67
|
- !ruby/object:Gem::Version
|
83
68
|
version: 0.7.1
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 0.7.1
|
87
69
|
- !ruby/object:Gem::Dependency
|
88
70
|
name: pry
|
89
71
|
requirement: !ruby/object:Gem::Requirement
|
90
72
|
requirements:
|
91
73
|
- - "~>"
|
92
74
|
- !ruby/object:Gem::Version
|
93
|
-
version: 0.10.
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 0.10.1
|
75
|
+
version: 0.10.3
|
97
76
|
type: :development
|
98
77
|
prerelease: false
|
99
78
|
version_requirements: !ruby/object:Gem::Requirement
|
100
79
|
requirements:
|
101
80
|
- - "~>"
|
102
81
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.10.
|
104
|
-
- - ">="
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: 0.10.1
|
82
|
+
version: 0.10.3
|
107
83
|
- !ruby/object:Gem::Dependency
|
108
84
|
name: rake
|
109
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,40 +146,34 @@ dependencies:
|
|
170
146
|
requirements:
|
171
147
|
- - "~>"
|
172
148
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
149
|
+
version: 0.11.0
|
174
150
|
- - ">="
|
175
151
|
- !ruby/object:Gem::Version
|
176
|
-
version: 0.
|
152
|
+
version: 0.11.0
|
177
153
|
type: :development
|
178
154
|
prerelease: false
|
179
155
|
version_requirements: !ruby/object:Gem::Requirement
|
180
156
|
requirements:
|
181
157
|
- - "~>"
|
182
158
|
- !ruby/object:Gem::Version
|
183
|
-
version: 0.
|
159
|
+
version: 0.11.0
|
184
160
|
- - ">="
|
185
161
|
- !ruby/object:Gem::Version
|
186
|
-
version: 0.
|
162
|
+
version: 0.11.0
|
187
163
|
- !ruby/object:Gem::Dependency
|
188
164
|
name: typhoeus
|
189
165
|
requirement: !ruby/object:Gem::Requirement
|
190
166
|
requirements:
|
191
167
|
- - "~>"
|
192
168
|
- !ruby/object:Gem::Version
|
193
|
-
version: 0.
|
194
|
-
- - ">="
|
195
|
-
- !ruby/object:Gem::Version
|
196
|
-
version: 0.7.1
|
169
|
+
version: 0.8.0
|
197
170
|
type: :development
|
198
171
|
prerelease: false
|
199
172
|
version_requirements: !ruby/object:Gem::Requirement
|
200
173
|
requirements:
|
201
174
|
- - "~>"
|
202
175
|
- !ruby/object:Gem::Version
|
203
|
-
version: 0.
|
204
|
-
- - ">="
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: 0.7.1
|
176
|
+
version: 0.8.0
|
207
177
|
- !ruby/object:Gem::Dependency
|
208
178
|
name: vcr
|
209
179
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,20 +200,20 @@ dependencies:
|
|
230
200
|
requirements:
|
231
201
|
- - "~>"
|
232
202
|
- !ruby/object:Gem::Version
|
233
|
-
version: 1.
|
203
|
+
version: 1.22.3
|
234
204
|
- - ">="
|
235
205
|
- !ruby/object:Gem::Version
|
236
|
-
version: 1.
|
206
|
+
version: 1.22.3
|
237
207
|
type: :development
|
238
208
|
prerelease: false
|
239
209
|
version_requirements: !ruby/object:Gem::Requirement
|
240
210
|
requirements:
|
241
211
|
- - "~>"
|
242
212
|
- !ruby/object:Gem::Version
|
243
|
-
version: 1.
|
213
|
+
version: 1.22.3
|
244
214
|
- - ">="
|
245
215
|
- !ruby/object:Gem::Version
|
246
|
-
version: 1.
|
216
|
+
version: 1.22.3
|
247
217
|
- !ruby/object:Gem::Dependency
|
248
218
|
name: yard
|
249
219
|
requirement: !ruby/object:Gem::Requirement
|
@@ -264,7 +234,7 @@ dependencies:
|
|
264
234
|
- - ">="
|
265
235
|
- !ruby/object:Gem::Version
|
266
236
|
version: 0.8.7.6
|
267
|
-
description:
|
237
|
+
description: Ruby gem for Circle CI REST API
|
268
238
|
email: chavez@example.com
|
269
239
|
executables: []
|
270
240
|
extensions: []
|
@@ -304,5 +274,5 @@ rubyforge_project:
|
|
304
274
|
rubygems_version: 2.2.2
|
305
275
|
signing_key:
|
306
276
|
specification_version: 4
|
307
|
-
summary: Circle CI API
|
277
|
+
summary: Circle CI REST API gem
|
308
278
|
test_files: []
|