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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzA3ODlhMzRiZWEzYTZjZjc3MTZlMzRhNTUzZmYxZTg0YjJhMjQxNQ==
4
+ MDNkMTcwNGI4NjJkYzQ0MzU0YmMzM2I3MzM2NDgwMjY4NGZkOGRlNg==
5
5
  data.tar.gz: !binary |-
6
- MTcyYWQ4MmZiNDMwMDRkMTQ0MDA5ODlhODc4MmFhZGIzYWMyYzg1ZQ==
6
+ NmU1Mzk1YjA4N2JkZDVhODNmZWExNWQzZTAzNTNiOGQ2NzNjY2U2MA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- M2MyMzE5YWM1MzdjNTRjYjcwZjYyYWVlYjgzZTIxOTUzMDY4YTkzNWRjOGM1
10
- MDIxZDVkZjZmOTYzNGZlZmZlYTYzMzJmM2FhMTgyMDQwNWUzMWQyODk3MDFk
11
- Y2YwZmMwOTAxYzI5OGIwNWMxNzdmMGZlMDA1ZjhhZjA5YjdlZmM=
9
+ YWQyZmFmZjg0MTI4ZWQ1MjIzOTY4Y2VlZTlhMzZhNjc5ZTdhZTZmZTNkYzEz
10
+ N2EyYTBlYTc1M2NjYjVmZjZlMmY2N2NlMTg5YTc0OTA3ZDU5ODdhMDJhMmU2
11
+ OTIzNjEzY2U3NjAyOTI1ZTk2MjI2ODM3MTc0OGNmZWFhNDQ4YmI=
12
12
  data.tar.gz: !binary |-
13
- N2IxOTdmOGVhZjYyODE2YTAwMTJiMTdiZDhkNTQyNjAzYTI3M2FjMzhmODBl
14
- Mzg5Njc5MDA4YzY2OTgyMmYwYzVkZGVjMTUzYWI1MTI1NWJhYjcwMGU0MTUx
15
- YjMzZjBhMTUwNmI5MzJiM2IxMGVlZjlkZWE1ZWM0MmJjZTZhOGQ=
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 'travis', 'travis_pro' or 'circle';
35
- * :ci_repository (required) - organization or user name and repository name on github;
36
- * :ci_access_token(required only for 'travis_pro' ci client) - access token for Pro account on Travis-CI.
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-pro-access-token" }
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
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Ci
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  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(3).items }
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(:travis_client){ double(state: "passed") }
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(travis_client) }
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(:travis_client){ double(passed?: true) }
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(travis_client) }
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.2
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-10-24 00:00:00.000000000 Z
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