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 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