capistrano-ci 0.0.2 → 0.0.3
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 +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
|