capistrano-rocketdeploy 0.1.0 → 0.2.0

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