capistrano-rocketdeploy 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb0d9b6602f4506569134aae9ebe39d495d2976e8651e343226a6615aead04b2
4
- data.tar.gz: 238befbd588aafdf073f268e00c60703dabc5d6a5cdf5679d95e83a499317496
3
+ metadata.gz: 382e7ff574ae14db5f4db05443e4b921ac1f49bbbd01d1fdcb662a1935b1b00d
4
+ data.tar.gz: dea2c9a063acd8a659a69c1b7f63d3984ffdbf6cd3a9a102b7fc4114edf457a4
5
5
  SHA512:
6
- metadata.gz: 509cd7ed770d1aa06dd078796130590dfea29d2fd9613c3023be6a0d52f81e4b11901dce5158632904a338325569ee4992a8c7c17e7c799bcc8ed40de9eb6d25
7
- data.tar.gz: 7e479858f29fce529e220a8e390d35143b6f359bd651a3152c89b073c9825ffc55651693c33389ba132e0acd17be246845d3c6695f1ef59596a6f357b990b9ad
6
+ metadata.gz: a3062e158b714e514978e9d85533880728a3cddd8ecebb7c66d49b8d65707b62ff25384220f0baa54c3c17e1e2e49880a39713cbf7cd5cbcf860de8ca142e11c
7
+ data.tar.gz: bef75c1451d1963e9d06eac9497ef5ed4dda31d5546a7dd72ddbe04ebef573f2d5d3e91eb8a683bec0faa6b469e25b7cb15f0f6812fb92e72c2c9929dee43883
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-rocketdeploy (0.1.0)
4
+ capistrano-rocketdeploy (0.2.0)
5
5
  capistrano (~> 3.0)
6
- httparty (~> 0.16)
6
+ rest-client
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -18,23 +18,28 @@ GEM
18
18
  coderay (1.1.2)
19
19
  concurrent-ruby (1.1.4)
20
20
  diff-lcs (1.3)
21
- httparty (0.16.3)
22
- mime-types (~> 3.0)
23
- multi_xml (>= 0.5.2)
21
+ domain_name (0.5.20180417)
22
+ unf (>= 0.0.5, < 1.0.0)
23
+ http-cookie (1.0.3)
24
+ domain_name (~> 0.5)
24
25
  i18n (1.5.1)
25
26
  concurrent-ruby (~> 1.0)
26
27
  method_source (0.9.2)
27
28
  mime-types (3.2.2)
28
29
  mime-types-data (~> 3.2015)
29
30
  mime-types-data (3.2018.0812)
30
- multi_xml (0.6.0)
31
31
  net-scp (1.2.1)
32
32
  net-ssh (>= 2.6.5)
33
33
  net-ssh (5.1.0)
34
+ netrc (0.11.0)
34
35
  pry (0.12.2)
35
36
  coderay (~> 1.1.0)
36
37
  method_source (~> 0.9.0)
37
38
  rake (10.5.0)
39
+ rest-client (2.0.2)
40
+ http-cookie (>= 1.0.2, < 2.0)
41
+ mime-types (>= 1.16, < 4.0)
42
+ netrc (~> 0.8)
38
43
  rspec (3.8.0)
39
44
  rspec-core (~> 3.8.0)
40
45
  rspec-expectations (~> 3.8.0)
@@ -51,6 +56,9 @@ GEM
51
56
  sshkit (1.18.0)
52
57
  net-scp (>= 1.1.2)
53
58
  net-ssh (>= 2.8.0)
59
+ unf (0.1.4)
60
+ unf_ext
61
+ unf_ext (0.0.7.5)
54
62
 
55
63
  PLATFORMS
56
64
  ruby
data/README.md CHANGED
@@ -33,7 +33,7 @@ require 'capistrano/rocketdeploy'
33
33
  Set in `config/deploy.rb`
34
34
 
35
35
  ```
36
- set :rocketdeploy_token, 'secret_and_very_long_project_token' # generate by rocketdeploy
36
+ set :rocketdeploy_token, 'secret_token' # generate by rocketdeploy
37
37
  ```
38
38
 
39
39
 
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.require_paths = ["lib"]
34
34
 
35
35
  spec.add_dependency 'capistrano', '~> 3.0'
36
- spec.add_dependency 'httparty', '~> 0.16'
36
+ spec.add_dependency 'rest-client'
37
37
 
38
38
  spec.add_development_dependency 'pry', '~> 0.12.2'
39
39
  spec.add_development_dependency 'bundler', '~> 1.16'
@@ -1,3 +1,5 @@
1
+ require 'httparty'
2
+
1
3
  require "capistrano/rocketdeploy/version"
2
4
  require "capistrano/rocketdeploy/client"
3
5
 
@@ -1,33 +1,43 @@
1
+ require 'rest-client'
2
+
1
3
  module Capistrano
2
4
  module Rocketdeploy
3
5
  class Client
4
- include HTTParty
5
- base_uri
6
6
 
7
- def initialize(service, page)
8
- @options = { query: { site: service, page: page } }
7
+ def initialize(base_url, token)
8
+ puts "rocketdeploy base url: #{base_url}"
9
+ @base_url = base_url
10
+ @token = token
9
11
  end
10
12
 
11
13
  def deploy_started(params)
12
- self.class.post("/deploy/started", body(params))
14
+ post("", params)
13
15
  end
14
16
 
15
- def deploy_finished(params)
16
- self.class.post("/deploy/finished", body(params))
17
+ def deploy_finished(deploy_id)
18
+ post("/#{deploy_id}/finished")
17
19
  end
18
20
 
19
- def deploy_failed(params)
20
- self.class.post("/deploy/failed", body(params))
21
+ def deploy_failed(deploy_id)
22
+ post("/#{deploy_id}/failed")
21
23
  end
22
24
 
23
25
  private
24
- def body(params)
25
- {
26
- body: params.to_json,
27
- headers: {
28
- 'Content-Type' => 'application/json'
26
+ def post(url, params = {})
27
+ resp = RestClient.post(
28
+ "#{@base_url}api/deploys#{url}",
29
+ params.to_json,
30
+ {
31
+ content_type: :json,
32
+ accept: :json,
33
+ 'Access-Token' => @token,
29
34
  }
30
- }
35
+ )
36
+ JSON.parse(resp)
37
+ rescue Exception => e
38
+ puts "RocketDeploy error: #{e.class.name}: #{e.message}"
39
+ puts e.backtrace[0..10].join("\n")
40
+ nil
31
41
  end
32
42
  end
33
43
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Rocketdeploy
3
- VERSION = "0.1.0".freeze
3
+ VERSION = "0.2.0".freeze
4
4
  end
5
5
  end
@@ -1,44 +1,66 @@
1
1
  namespace :rocketdeploy do
2
2
  task :collect_env do
3
3
  @data = {
4
- local_user: fetch(:local_user),
4
+ #local_user: fetch(:local_user),
5
+ git_user: `git config user.name`,
6
+ git_email: `git config user.email`,
5
7
  branch: fetch(:branch),
6
- current_revision: fetch(:current_revision),
8
+ commit_hash: fetch(:current_revision, "HEAD"),
7
9
  stage: fetch(:stage),
10
+ environment: fetch(:rails_env),
8
11
  repo_url: fetch(:repo_url),
9
12
  hosts: [],
10
13
  }
11
14
  end
12
15
 
13
16
  task :notify_deploy_started => [:collect_env] do
17
+ data = @data
14
18
  on roles(:app) do |host|
15
19
  host_url = "#{host&.user}.#{host&.hostname}"
16
- p @data
17
- @data.hosts.push(host_url)
20
+ data[:hosts].push(host_url)
18
21
  end
19
22
 
20
23
  client = fetch(:rocketdeploy_client)
21
- client.deploy_started(@data)
24
+ r = client.deploy_started(@data)
25
+ unless r.nil?
26
+ @deploy_id = r['id']
27
+ end
22
28
  end
23
29
 
24
30
  task :notify_deploy_finished => [:collect_env] do
25
31
  client = fetch(:rocketdeploy_client)
26
- client.deploy_finished(@data)
32
+ if @deploy_id.nil?
33
+ puts "RocketDeploy: no deploy_id, cant report"
34
+ else
35
+ client.deploy_finished(@deploy_id)
36
+ end
27
37
  end
28
38
 
29
39
  task :notify_deploy_failed => [:collect_env] do
30
40
  client = fetch(:rocketdeploy_client)
31
- client.deploy_failed(@data)
41
+ p 'iiiiiiiiiiiiiiiiiiiiii'
42
+ p @deploy_id
43
+ if @deploy_id.nil?
44
+ puts "RocketDeploy: no deploy_id, cant report"
45
+ else
46
+ client.deploy_failed(@deploy_id)
47
+ end
32
48
  end
33
49
 
34
- before "deploy:updated", "rocketdeploy:notify_deploy_started"
50
+ puts "install rocketdeploy cap tasks"
51
+ #before "deploy:check:directories", "rocketdeploy:notify_deploy_started"
52
+ after "git:set_current_revision", "rocketdeploy:notify_deploy_started"
35
53
  after "deploy:finished", "rocketdeploy:notify_deploy_finished"
54
+ before "deploy:failed", "rocketdeploy:notify_deploy_failed"
36
55
  before "deploy:reverted", "rocketdeploy:notify_deploy_failed"
37
56
  end
38
57
 
39
58
  namespace :load do
40
59
  task :defaults do
41
- require 'capistrano-rocketdeploy'
42
- set(:rocketdeploy_client, -> { Capistrano::Rocketdeploy::Client.new(fetch(:hipchat_token))[fetch(:hipchat_room_name)] })
60
+ set(:rocketdeploy_client, -> {
61
+ base_url = fetch(:rocketdeploy_server) || "https://rocketdeploy.ru"
62
+ token = fetch(:rocketdeploy_token)
63
+ Capistrano::Rocketdeploy::Client.new(base_url, token)
64
+ })
43
65
  end
44
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-rocketdeploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Yegorov
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: httparty
28
+ name: rest-client
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0.16'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0.16'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry
43
43
  requirement: !ruby/object:Gem::Requirement