capistrano-jira 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
  SHA1:
3
- metadata.gz: 3d71f8dc9b592a0718a36cf151d5148857fc29a3
4
- data.tar.gz: fc9afc9620a9e4ff96feb186f6772b3c64c25482
3
+ metadata.gz: ca992eb03cd4d34fe9624b50930ad8d32d7fa5cc
4
+ data.tar.gz: 7dfd66877aab0380606fc9d067180f3437611bfd
5
5
  SHA512:
6
- metadata.gz: 179755583fad4d3ce68efda8b725f6276cc34decd592516fe1dafe43e912cda59bb782db5cfbd1d34e775def6418c591c412d80f37fa388e69fefede85234035
7
- data.tar.gz: e1ae6415135e0a3377020f7dd9ef5ff7689136675fc77be99e43e2124124b1a0b6a4eadcb8b59fb1c9496b1530ffc88e1e974433a9306ce97ff44f1eb4622d22
6
+ metadata.gz: 35d7cac445e0a03a37f8b560577bd8fc06e1b9c1ef1541182e346b8f4b49f7a858dbcf260c3e809bb1c8af9f0b2d5defe2c1030af0abf39f88e9c72cb30cde70
7
+ data.tar.gz: 600204753da6c7e156118f432ae7871e96876693693c9aa462001d60ad7161a90c6c7b0082accc4a2119a7bf6f450ade8d7109feb574a46fc06c6f67523325f0
data/Changelog.md ADDED
@@ -0,0 +1,13 @@
1
+ ## 0.2.0
2
+
3
+ - Handle errors without exiting deployment (*wojw5*, #2)
4
+ - Add comment on transition
5
+ - Use capistrano output methods
6
+ - remove rspec - there are no tests
7
+ - remove travis CI - not needed
8
+ - lock versions
9
+
10
+
11
+ ## 0.1.0
12
+
13
+ - Initial release (*wojw5*, #1)
data/README.md CHANGED
@@ -1,4 +1,3 @@
1
- [![Build Status](https://travis-ci.org/wojw5/capistrano-jira.svg?branch=master)](https://travis-ci.org/wojw5/capistrano-jira)
2
1
  [![Code Climate](https://codeclimate.com/github/wojw5/capistrano-jira/badges/gpa.svg)](https://codeclimate.com/github/wojw5/capistrano-jira)
3
2
  # Capistrano::Jira
4
3
 
@@ -29,10 +28,11 @@ require 'capistrano/jira'
29
28
 
30
29
  - Set general parameters in `config/deploy.rb`
31
30
  ```ruby
32
- set :jira_username, 'john.doe@exalmple.com' # default: ENV['CAPISTRANO_JIRA_USERNAME']
33
- set :jira_password, 'p@55w0rD' # default: ENV['CAPISTRANO_JIRA_PASSWORD']
34
- set :jira_site, 'https://example.atlassian.net' # default: ENV['CAPISTRANO_JIRA_SITE']
35
- set :jira_project_key, 'PROJ' # required
31
+ set :jira_username, 'john.doe@exalmple.com' # default: ENV['CAPISTRANO_JIRA_USERNAME']
32
+ set :jira_password, 'p@55w0rD' # default: ENV['CAPISTRANO_JIRA_PASSWORD']
33
+ set :jira_site, 'https://example.atlassian.net' # default: ENV['CAPISTRANO_JIRA_SITE']
34
+ set :jira_comment_on_transition, false # default: true
35
+ set :jira_project_key, 'PROJ' # required
36
36
  ```
37
37
 
38
38
  - Set parameters for specific environment (for example `config/deploy/staging.rb`)
data/Rakefile CHANGED
@@ -1,6 +1 @@
1
1
  require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task default: :spec
@@ -15,13 +15,11 @@ Gem::Specification.new do |spec|
15
15
 
16
16
  spec.files = `git ls-files -z`
17
17
  .split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
18
  spec.require_paths = ['lib']
20
19
 
21
- spec.add_dependency 'capistrano'
22
- spec.add_dependency 'jira-ruby'
20
+ spec.add_dependency 'capistrano', '~> 3.7'
21
+ spec.add_dependency 'jira-ruby', '~> 1.2'
23
22
 
24
23
  spec.add_development_dependency 'bundler', '~> 1.12'
25
24
  spec.add_development_dependency 'rake', '~> 10.0'
26
- spec.add_development_dependency 'rspec', '~> 3.0'
27
25
  end
File without changes
@@ -2,5 +2,17 @@ module Capistrano
2
2
  module Jira
3
3
  class TransitionError < StandardError; end
4
4
  class FinderError < StandardError; end
5
+
6
+ module ErrorHelpers
7
+ def error_message(e)
8
+ case e
9
+ when JIRA::HTTPError
10
+ r = e.response
11
+ "#{r.class.name}; #{r.code}: #{r.message} \n #{r.body}"
12
+ else
13
+ e.message
14
+ end
15
+ end
16
+ end
5
17
  end
6
18
  end
@@ -3,6 +3,8 @@ module Capistrano
3
3
  class IssueFinder
4
4
  attr_reader :issues
5
5
 
6
+ include ErrorHelpers
7
+
6
8
  def find!
7
9
  @issues = execute
8
10
  end
@@ -24,9 +26,7 @@ module Capistrano
24
26
  def execute
25
27
  Jira.client.Issue.jql(jql, fields: ['status'], max_results: 1_000_000)
26
28
  rescue JIRA::HTTPError => e
27
- r = e.response
28
- raise FinderError,
29
- "#{r.class.name}; #{r.code}: #{r.message} \n #{r.body}"
29
+ raise FinderError, error_message(e)
30
30
  end
31
31
  end
32
32
  end
@@ -21,18 +21,31 @@ module Capistrano
21
21
  end
22
22
 
23
23
  def validate_transition
24
- unless transition
25
- raise TransitionError,
26
- "Transition #{fetch(:jira_transition_name)} not available"
27
- end
24
+ return if transition
25
+ raise TransitionError,
26
+ "Transition #{fetch(:jira_transition_name)} not available"
28
27
  end
29
28
 
30
29
  def execute
31
- issue.transitions.build.save!(transition: { id: transition.id })
30
+ issue.transitions.build.save!(transition_hash)
32
31
  rescue JIRA::HTTPError => e
33
- r = e.response
34
- raise TransitionError,
35
- "#{r.class.name}; #{r.code}: #{r.message} \n #{r.body}"
32
+ raise TransitionError, error_message(e)
33
+ end
34
+
35
+ def transition_hash
36
+ hash = { transition: { id: transition.id } }
37
+ hash.merge(comment_hash) if fetch(:jira_comment_on_transition)
38
+ hash
39
+ end
40
+
41
+ def comment_hash
42
+ { update:
43
+ { comment: [
44
+ { add:
45
+ {
46
+ body: 'Issue transited automatically during deployment.'
47
+ } }
48
+ ] } }
36
49
  end
37
50
  end
38
51
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Jira
3
- VERSION = '0.1.0'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -1,26 +1,33 @@
1
1
  namespace :load do
2
2
  task :defaults do
3
- set :jira_username, ENV['CAPISTRANO_JIRA_USERNAME']
4
- set :jira_password, ENV['CAPISTRANO_JIRA_PASSWORD']
5
- set :jira_site, ENV['CAPISTRANO_JIRA_SITE']
6
- set :jira_project_key, nil
7
- set :jira_status_name, nil
8
- set :jira_transition_name, nil
9
- set :jira_filter_jql, nil
3
+ set :jira_username, ENV['CAPISTRANO_JIRA_USERNAME']
4
+ set :jira_password, ENV['CAPISTRANO_JIRA_PASSWORD']
5
+ set :jira_site, ENV['CAPISTRANO_JIRA_SITE']
6
+ set :jira_project_key, nil
7
+ set :jira_status_name, nil
8
+ set :jira_transition_name, nil
9
+ set :jira_filter_jql, nil
10
+ set :jira_comment_on_transition, true
10
11
  end
11
12
  end
12
13
 
13
14
  namespace :jira do
14
15
  desc 'Find and transit possible JIRA issues'
15
16
  task :find_and_transit do |_t|
16
- puts 'Looking for issues'
17
- issues = Capistrano::Jira::IssueFinder.new.find
18
- issues.each do |issue|
17
+ on :all do |_host|
18
+ info 'Looking for issues'
19
19
  begin
20
- Capistrano::Jira::IssueTransiter.new(issue).transit
21
- puts "#{issue.key}\t\u{2713} Transited"
22
- rescue Capistrano::Jira::TransitionError => e
23
- puts "#{issue.key}\t\u{2717} #{e.message}"
20
+ issues = Capistrano::Jira::IssueFinder.new.find
21
+ issues.each do |issue|
22
+ begin
23
+ Capistrano::Jira::IssueTransiter.new(issue).transit
24
+ info "#{issue.key}\t\u{2713} Transited"
25
+ rescue Capistrano::Jira::TransitionError => e
26
+ warn "#{issue.key}\t\u{2717} #{e.message}"
27
+ end
28
+ end
29
+ rescue Capistrano::Jira::FinderError => e
30
+ error "#{e.class} #{e.message}"
24
31
  end
25
32
  end
26
33
  end
@@ -28,8 +35,10 @@ namespace :jira do
28
35
  desc 'Check JIRA setup'
29
36
  task :check do
30
37
  errored = false
31
- required_params = %i(jira_username jira_password jira_site jira_project_key
32
- jira_status_name jira_transition_name)
38
+ required_params =
39
+ %i(jira_username jira_password jira_site jira_project_key
40
+ jira_status_name jira_transition_name jira_comment_on_transition)
41
+
33
42
  puts '=> Required params'
34
43
  required_params.each do |param|
35
44
  print "#{param} = "
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-jira
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
  - Wojciech Widenka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-11 00:00:00.000000000 Z
11
+ date: 2017-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jira-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '1.2'
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'
40
+ version: '1.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
69
  description:
84
70
  email:
85
71
  - wojtek@codegarden.online
@@ -89,13 +75,12 @@ extra_rdoc_files: []
89
75
  files:
90
76
  - ".gitignore"
91
77
  - ".rspec"
92
- - ".travis.yml"
78
+ - Changelog.md
93
79
  - Gemfile
94
80
  - README.md
95
81
  - Rakefile
96
- - bin/console
97
- - bin/setup
98
82
  - capistrano-jira.gemspec
83
+ - lib/capistrano-jira.rb
99
84
  - lib/capistrano/jira.rb
100
85
  - lib/capistrano/jira/errors.rb
101
86
  - lib/capistrano/jira/issue_finder.rb
data/.travis.yml DELETED
@@ -1,5 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.3.1
5
- before_install: gem install bundler -v 1.12.5
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'bundler/setup'
4
- require 'capistrano/jira'
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require 'irb'
14
- IRB.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here