capistrano-ci 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +21 -12
- data/lib/capistrano/ci/clients/semaphore.rb +44 -0
- data/lib/capistrano/ci/version.rb +1 -1
- data/lib/capistrano/ci.rb +3 -1
- data/spec/capistrano/ci/client_spec.rb +26 -6
- data/spec/capistrano/ci/clients/semaphore_spec.rb +53 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_not_passed/.yml +48 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_passed/.yml +48 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_branch_was_not_found/.yml +48 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_not_passed/.yml +48 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_passed/.yml +48 -0
- data/spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_repository_was_not_found/.yml +48 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDNkMTcwNGI4NjJkYzQ0MzU0YmMzM2I3MzM2NDgwMjY4NGZkOGRlNg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmU1Mzk1YjA4N2JkZDVhODNmZWExNWQzZTAzNTNiOGQ2NzNjY2U2MA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWQyZmFmZjg0MTI4ZWQ1MjIzOTY4Y2VlZTlhMzZhNjc5ZTdhZTZmZTNkYzEz
|
10
|
+
N2EyYTBlYTc1M2NjYjVmZjZlMmY2N2NlMTg5YTc0OTA3ZDU5ODdhMDJhMmU2
|
11
|
+
OTIzNjEzY2U3NjAyOTI1ZTk2MjI2ODM3MTc0OGNmZWFhNDQ4YmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MzBmNTYwMzMxNDk3NDFjNDY2ZjU1ZWUzNjM5NzQxMGY5NThkYjExMTQ0NzE5
|
14
|
+
ZDYwNzBlZGJiYzFhNmNlMmJjNzYzOTZiZDgyYzllNjI1ZWI0ZmIwZDUwZDJi
|
15
|
+
ZTA4YjFlZDkxY2I2ZjE1NzNmZjAzYTA3NzcxZGQzYjdhNTgyYmM=
|
data/README.md
CHANGED
@@ -7,7 +7,8 @@
|
|
7
7
|
capistrano-ci is extension for capistrano that allows you to check status of your repository before deployment. Currently it supports:
|
8
8
|
|
9
9
|
* Travis CI: Open Source and Pro versions ([https://travis-ci.org](https://travis-ci.org) or [https://travis-ci.com](https://travis-ci.com))
|
10
|
-
* CircleCi: [https://circleci.com](https://circleci.com)
|
10
|
+
* CircleCi: [https://circleci.com](https://circleci.com)
|
11
|
+
* Semaphore: [https://semaphoreapp.com](https://semaphoreapp.com)
|
11
12
|
|
12
13
|
## Installation
|
13
14
|
|
@@ -24,41 +25,49 @@ Or install it yourself as:
|
|
24
25
|
$ gem install capistrano-ci
|
25
26
|
|
26
27
|
Add to your Capfile:
|
27
|
-
|
28
|
+
|
28
29
|
require 'capistrano/ci/recipies'
|
29
30
|
|
30
31
|
## Configuration
|
31
32
|
|
32
|
-
Variables list:
|
33
|
+
Variables list:
|
33
34
|
|
34
|
-
* :ci_client (required) - supports
|
35
|
-
* :ci_repository (required) - organization or user name and repository name on github
|
36
|
-
* :ci_access_token(required
|
35
|
+
* :ci_client (required) - supports `travis`, `travis_pro`, `circle`, or `semaphore`
|
36
|
+
* :ci_repository (required) - organization or user name and repository name on github
|
37
|
+
* :ci_access_token(required for `travis_pro`, `circle`, or `semaphore`) - access token specific to the service
|
37
38
|
|
38
39
|
### Open Source Projects
|
39
40
|
|
40
|
-
Setup ci_client and ci_repository variables in your deployment script:
|
41
|
+
Setup ci_client and ci_repository variables in your deployment script:
|
41
42
|
|
42
43
|
set(:ci_client){ "travis" }
|
43
44
|
set(:ci_repository){ "organisation-or-user/repository-name" }
|
44
45
|
|
45
46
|
### Pro Account of Travis-CI:
|
46
47
|
|
47
|
-
Additional to ci_client and ci_repository setup ci_access_token:
|
48
|
+
Additional to ci_client and ci_repository setup ci_access_token:
|
48
49
|
|
49
50
|
set(:ci_client){ "travis_pro" }
|
50
51
|
set(:ci_repository){ "organisation-or-user/repository-name" }
|
51
52
|
set(:ci_access_token){ "your-pro-access-token" }
|
52
53
|
|
53
|
-
Read explaination [how to obtain Travis-CI access token](http://railsware.com/blog/2013/09/10/capistrano-recipe-for-checking-travis-ci-build-status/). To have more information about Travis-CI access token follow [this blog post](http://about.travis-ci.org/blog/2013-01-28-token-token-token).
|
54
|
+
Read explaination [how to obtain Travis-CI access token](http://railsware.com/blog/2013/09/10/capistrano-recipe-for-checking-travis-ci-build-status/). To have more information about Travis-CI access token follow [this blog post](http://about.travis-ci.org/blog/2013-01-28-token-token-token).
|
54
55
|
|
55
|
-
### CircleCi:
|
56
|
+
### CircleCi:
|
56
57
|
|
57
58
|
Setup ci_client, ci_repository and ci_access_token in your deployment script:
|
58
59
|
|
59
60
|
set(:ci_client){ "circle" }
|
60
61
|
set(:ci_repository){ "organisation-or-user/repository-name" }
|
61
|
-
set(:ci_access_token){ "your-
|
62
|
+
set(:ci_access_token){ "your-circle-access-token" }
|
63
|
+
|
64
|
+
### Semaphore:
|
65
|
+
|
66
|
+
Setup ci_client, ci_repository and ci_access_token in your deployment script:
|
67
|
+
|
68
|
+
set(:ci_client){ "semaphore" }
|
69
|
+
set(:ci_repository){ "organisation-or-user/repository-name" }
|
70
|
+
set(:ci_access_token){ "your-semaphore-access-token" }
|
62
71
|
|
63
72
|
### Enable ci:verify task:
|
64
73
|
|
@@ -66,7 +75,7 @@ Setup ci_client, ci_repository and ci_access_token in your deployment script:
|
|
66
75
|
ci.verify
|
67
76
|
end
|
68
77
|
|
69
|
-
# or in case of using capistrano-patch:
|
78
|
+
# or in case of using capistrano-patch:
|
70
79
|
before 'patch:create' do
|
71
80
|
ci.verify
|
72
81
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Capistrano
|
2
|
+
module CI
|
3
|
+
module Clients
|
4
|
+
class Semaphore < Base
|
5
|
+
base_uri 'https://semaphoreapp.com/'
|
6
|
+
|
7
|
+
attr_reader :repository_name
|
8
|
+
|
9
|
+
def initialize(settings = {})
|
10
|
+
self.class.default_params "auth_token" => settings[:ci_access_token]
|
11
|
+
|
12
|
+
@repository_name = settings[:ci_repository]
|
13
|
+
end
|
14
|
+
|
15
|
+
def passed?(branch_name)
|
16
|
+
state(branch_name) == "passed"
|
17
|
+
end
|
18
|
+
|
19
|
+
def state(branch_name)
|
20
|
+
branch(branch_name)["result"]
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def branch(branch_name)
|
26
|
+
project["branches"].detect { |branch| branch["branch_name"] == branch_name } || raise(ResponseError)
|
27
|
+
end
|
28
|
+
|
29
|
+
def project
|
30
|
+
owner, name = repository_name_parts
|
31
|
+
projects.detect { |project| project["owner"] = owner && project["name"] == name } || raise(ResponseError)
|
32
|
+
end
|
33
|
+
|
34
|
+
def repository_name_parts
|
35
|
+
self.repository_name.split("/")
|
36
|
+
end
|
37
|
+
|
38
|
+
def projects
|
39
|
+
get("/api/v1/projects")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/capistrano/ci.rb
CHANGED
@@ -3,8 +3,10 @@ require "capistrano/ci/clients/base"
|
|
3
3
|
require "capistrano/ci/clients/travis"
|
4
4
|
require "capistrano/ci/clients/travis_pro"
|
5
5
|
require "capistrano/ci/clients/circle"
|
6
|
+
require "capistrano/ci/clients/semaphore"
|
6
7
|
require "capistrano/ci/client"
|
7
8
|
|
8
9
|
Capistrano::CI::Client.register "travis", Capistrano::CI::Clients::Travis, [:ci_repository]
|
9
10
|
Capistrano::CI::Client.register "travis_pro", Capistrano::CI::Clients::TravisPro, [:ci_repository, :ci_access_token]
|
10
|
-
Capistrano::CI::Client.register "circle", Capistrano::CI::Clients::Circle, [:ci_repository, :ci_access_token]
|
11
|
+
Capistrano::CI::Client.register "circle", Capistrano::CI::Clients::Circle, [:ci_repository, :ci_access_token]
|
12
|
+
Capistrano::CI::Client.register "semaphore", Capistrano::CI::Clients::Semaphore, [:ci_repository, :ci_access_token]
|
@@ -30,7 +30,7 @@ describe Capistrano::CI::Client do
|
|
30
30
|
describe ".clients" do
|
31
31
|
subject{ described_class.clients }
|
32
32
|
|
33
|
-
it{ should have(
|
33
|
+
it{ should have(4).items }
|
34
34
|
end
|
35
35
|
|
36
36
|
describe "#state" do
|
@@ -50,16 +50,25 @@ describe Capistrano::CI::Client do
|
|
50
50
|
context "when circle" do
|
51
51
|
let(:client_class){ Capistrano::CI::Clients::Circle }
|
52
52
|
let(:ci_client){ "circle" }
|
53
|
-
let(:
|
53
|
+
let(:circle_client){ double(state: "passed") }
|
54
54
|
|
55
|
-
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(
|
55
|
+
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(circle_client) }
|
56
|
+
|
57
|
+
it{ should == "passed" }
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when semaphore" do
|
61
|
+
let(:client_class){ Capistrano::CI::Clients::Semaphore }
|
62
|
+
let(:ci_client){ "semaphore" }
|
63
|
+
let(:semaphore_client){ double(state: "passed") }
|
64
|
+
|
65
|
+
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(semaphore_client) }
|
56
66
|
|
57
67
|
it{ should == "passed" }
|
58
68
|
end
|
59
69
|
|
60
70
|
context "when travis pro" do
|
61
71
|
let(:client_class){ Capistrano::CI::Clients::TravisPro }
|
62
|
-
|
63
72
|
let(:ci_client){ "travis_pro" }
|
64
73
|
let(:travis_client){ double(state: "passed") }
|
65
74
|
|
@@ -91,9 +100,20 @@ describe Capistrano::CI::Client do
|
|
91
100
|
context "when circle" do
|
92
101
|
let(:client_class){ Capistrano::CI::Clients::Circle }
|
93
102
|
let(:ci_client){ "circle" }
|
94
|
-
let(:
|
103
|
+
let(:circle_client){ double(passed?: true) }
|
95
104
|
|
96
|
-
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(
|
105
|
+
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(circle_client) }
|
106
|
+
|
107
|
+
it{ should == true }
|
108
|
+
end
|
109
|
+
|
110
|
+
context "when semaphore" do
|
111
|
+
let(:client_class){ Capistrano::CI::Clients::Semaphore }
|
112
|
+
|
113
|
+
let(:ci_client){ "semaphore" }
|
114
|
+
let(:semaphore_client){ double(passed?: true) }
|
115
|
+
|
116
|
+
before{ expect(client_class).to receive(:new).with(ci_repository: "rails/rails", ci_access_token: "token").and_return(semaphore_client) }
|
97
117
|
|
98
118
|
it{ should == true }
|
99
119
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Capistrano::CI::Clients::Semaphore, :vcr do
|
4
|
+
let(:client){ described_class.new(ci_repository: "rails/rails", ci_access_token: "access_token") }
|
5
|
+
|
6
|
+
describe "#passed?" do
|
7
|
+
subject{ client.passed?(branch_name) }
|
8
|
+
|
9
|
+
context "when passed" do
|
10
|
+
let(:branch_name){ "master" }
|
11
|
+
|
12
|
+
it{ should == true }
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when not passed" do
|
16
|
+
let(:branch_name){ "feature" }
|
17
|
+
|
18
|
+
it{ should == false }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#state" do
|
23
|
+
|
24
|
+
subject{ client.state(branch_name) }
|
25
|
+
|
26
|
+
context "when passed" do
|
27
|
+
let(:branch_name){ "master" }
|
28
|
+
|
29
|
+
it{ should == "passed" }
|
30
|
+
end
|
31
|
+
|
32
|
+
context "when not passed" do
|
33
|
+
let(:branch_name){ "feature" }
|
34
|
+
|
35
|
+
it{ should == "failed" }
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when branch was not found" do
|
39
|
+
let(:branch_name){ "some_branch" }
|
40
|
+
|
41
|
+
it{ expect{ subject }.to raise_error(Capistrano::CI::Clients::ResponseError) }
|
42
|
+
end
|
43
|
+
|
44
|
+
context "when repository was not found" do
|
45
|
+
let(:client){ described_class.new(ci_repository: "rails/some_strange_repo", ci_access_token: "access_token") }
|
46
|
+
|
47
|
+
let(:branch_name){ "master" }
|
48
|
+
|
49
|
+
it{ expect{ subject }.to raise_error(Capistrano::CI::Clients::ResponseError) }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c451592a3c04ff3c072434b6863f3cc0"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- 0c3b9b6a58150a87fde565f486efb7b3
|
35
|
+
X-Runtime:
|
36
|
+
- '0.906014'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:04:00 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name": "rails","owner":"rails","branches":[{"branch_name": "master","result": "passed"},{"branch_name":"feature","result": "failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:04:05 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c451592a3c04ff3c072434b6863f3cc0"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- ad4d6018bf447e897bf0d4fd667d55b5
|
35
|
+
X-Runtime:
|
36
|
+
- '0.831302'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:03:57 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name":"rails","owner":"rails","branches":[{"branch_name": "master","result":"passed"},{"branch_name":"feature","result":"failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:04:02 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c7c2084f37578e84bc3d7c7b34131cc2"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- 9d4eadc4e8fd7cf2203b9e1c7ae68633
|
35
|
+
X-Runtime:
|
36
|
+
- '0.685264'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:38:11 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name":"rails","owner":"rails","branches":[{"branch_name":"master","result": "passed"},{"branch_name":"feature","result":"failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:38:16 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c7c2084f37578e84bc3d7c7b34131cc2"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- cf5870028ecf0d52510e47782172c031
|
35
|
+
X-Runtime:
|
36
|
+
- '0.770812'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:30:41 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name":"rails","owner":"rails","branches":[{"branch_name":"master","result":"passed"},{"branch_name":"feature","result":"failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:30:46 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c7c2084f37578e84bc3d7c7b34131cc2"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- 117ce3238a63526cd87d2c70f77c9689
|
35
|
+
X-Runtime:
|
36
|
+
- '0.792272'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:30:43 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name":"rails","owner":"rails","branches":[{"branch_name":"master","result": "passed"},{"branch_name":"feature","result":"failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:30:48 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
@@ -0,0 +1,48 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://semaphoreapp.com/api/v1/projects?auth_token=access_token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Content-Type:
|
16
|
+
- application/json; charset=utf-8
|
17
|
+
Transfer-Encoding:
|
18
|
+
- chunked
|
19
|
+
Connection:
|
20
|
+
- keep-alive
|
21
|
+
Status:
|
22
|
+
- '200'
|
23
|
+
X-Powered-By:
|
24
|
+
- Phusion Passenger (mod_rails/mod_rack) 3.0.13
|
25
|
+
Strict-Transport-Security:
|
26
|
+
- max-age=31536000
|
27
|
+
X-Ua-Compatible:
|
28
|
+
- IE=Edge,chrome=1
|
29
|
+
Etag:
|
30
|
+
- '"c7c2084f37578e84bc3d7c7b34131cc2"'
|
31
|
+
Cache-Control:
|
32
|
+
- max-age=0, private, must-revalidate
|
33
|
+
X-Request-Id:
|
34
|
+
- 182f4a292069ca3330d68622c365ebe8
|
35
|
+
X-Runtime:
|
36
|
+
- '0.701322'
|
37
|
+
Date:
|
38
|
+
- Tue, 19 Nov 2013 03:35:56 GMT
|
39
|
+
X-Rack-Cache:
|
40
|
+
- miss
|
41
|
+
Server:
|
42
|
+
- nginx/1.2.1 + Phusion Passenger 3.0.13 (mod_rails/mod_rack)
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: '[{"name":"rails","owner":"rails","branches":[{"branch_name":"master","result": "passed"},{"branch_name":"feature","result":"failed"}]}]'
|
46
|
+
http_version:
|
47
|
+
recorded_at: Tue, 19 Nov 2013 03:36:02 GMT
|
48
|
+
recorded_with: VCR 2.6.0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-ci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- paladiy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -140,6 +140,7 @@ files:
|
|
140
140
|
- lib/capistrano/ci/client.rb
|
141
141
|
- lib/capistrano/ci/clients/base.rb
|
142
142
|
- lib/capistrano/ci/clients/circle.rb
|
143
|
+
- lib/capistrano/ci/clients/semaphore.rb
|
143
144
|
- lib/capistrano/ci/clients/travis.rb
|
144
145
|
- lib/capistrano/ci/clients/travis_pro.rb
|
145
146
|
- lib/capistrano/ci/recipes.rb
|
@@ -147,6 +148,7 @@ files:
|
|
147
148
|
- spec/capistrano/ci/client_spec.rb
|
148
149
|
- spec/capistrano/ci/clients/base_spec.rb
|
149
150
|
- spec/capistrano/ci/clients/circle_spec.rb
|
151
|
+
- spec/capistrano/ci/clients/semaphore_spec.rb
|
150
152
|
- spec/capistrano/ci/clients/travis_pro_spec.rb
|
151
153
|
- spec/capistrano/ci/clients/travis_spec.rb
|
152
154
|
- spec/spec_helper.rb
|
@@ -156,6 +158,12 @@ files:
|
|
156
158
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_not_passed/.yml
|
157
159
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_passed/.yml
|
158
160
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_repository_was_not_found/.yml
|
161
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_not_passed/.yml
|
162
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_passed/.yml
|
163
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_branch_was_not_found/.yml
|
164
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_not_passed/.yml
|
165
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_passed/.yml
|
166
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_repository_was_not_found/.yml
|
159
167
|
- spec/vcr/Capistrano_CI_Clients_Travis/_passed_/when_failed/.yml
|
160
168
|
- spec/vcr/Capistrano_CI_Clients_Travis/_passed_/when_passed/.yml
|
161
169
|
- spec/vcr/Capistrano_CI_Clients_Travis/_state/when_failed/.yml
|
@@ -194,6 +202,7 @@ test_files:
|
|
194
202
|
- spec/capistrano/ci/client_spec.rb
|
195
203
|
- spec/capistrano/ci/clients/base_spec.rb
|
196
204
|
- spec/capistrano/ci/clients/circle_spec.rb
|
205
|
+
- spec/capistrano/ci/clients/semaphore_spec.rb
|
197
206
|
- spec/capistrano/ci/clients/travis_pro_spec.rb
|
198
207
|
- spec/capistrano/ci/clients/travis_spec.rb
|
199
208
|
- spec/spec_helper.rb
|
@@ -203,6 +212,12 @@ test_files:
|
|
203
212
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_not_passed/.yml
|
204
213
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_passed/.yml
|
205
214
|
- spec/vcr/Capistrano_CI_Clients_Circle/_state/when_repository_was_not_found/.yml
|
215
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_not_passed/.yml
|
216
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_passed_/when_passed/.yml
|
217
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_branch_was_not_found/.yml
|
218
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_not_passed/.yml
|
219
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_passed/.yml
|
220
|
+
- spec/vcr/Capistrano_CI_Clients_Semaphore/_state/when_repository_was_not_found/.yml
|
206
221
|
- spec/vcr/Capistrano_CI_Clients_Travis/_passed_/when_failed/.yml
|
207
222
|
- spec/vcr/Capistrano_CI_Clients_Travis/_passed_/when_passed/.yml
|
208
223
|
- spec/vcr/Capistrano_CI_Clients_Travis/_state/when_failed/.yml
|