devops_helper 0.1.0 → 0.5.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 +4 -4
- data/.version_history.yml +14 -0
- data/README.md +23 -5
- data/devops_helper.gemspec +5 -5
- data/lib/devops_helper/gem_publish_helper.rb +101 -0
- data/lib/devops_helper/gem_rake_helper.rb +24 -0
- data/lib/devops_helper/tasks/release/gem.rake +188 -73
- data/lib/devops_helper/version.rb +1 -1
- data/lib/devops_helper.rb +2 -0
- metadata +28 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0c94b8d8e6d6447e4986ca70a523e2f82989e2a3d96b88f08c3c2b6a0db23a0
|
4
|
+
data.tar.gz: c7d72d4570e5a82aad8fbab0764f24b01c74ac78856358cf2b0edf12a2a4f053
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3385755ce5d4349a73c2075845ff1ed7620481c9fe2adb80dd18cc628337396f1806984b8bfcb0afe8393239b875eb644799a00a237d02aab67a6d79e9665ec4
|
7
|
+
data.tar.gz: a328ce96d2be7bdd05cfb62c029486442ffa5f6b26fe63f1c65adb376e6fd1e7208d8af9c6eef9f7ea4f277be6dc6f6584d608ce6eac888a754708aba56eaac5
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
devops_helper:
|
3
|
+
- :version: 0.1.0
|
4
|
+
:created_at: 2020-11-21 21:38:03.537785964 +08:00
|
5
|
+
- :version: 0.2.0
|
6
|
+
:created_at: 2020-12-07 15:19:19.158479582 +08:00
|
7
|
+
- :version: 0.2.0
|
8
|
+
:created_at: 2020-12-07 15:31:59.119617443 +08:00
|
9
|
+
- :version: 0.3.0
|
10
|
+
:created_at: 2020-12-07 23:21:14.961100811 +08:00
|
11
|
+
- :version: 0.3.1
|
12
|
+
:created_at: 2020-12-07 23:22:49.479627995 +08:00
|
13
|
+
- :version: 0.4.0
|
14
|
+
:created_at: 2021-10-21 11:46:03.352835295 +08:00
|
data/README.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
# DevopsHelper
|
2
2
|
|
3
|
-
|
3
|
+
DevOpsHelper is meant to standardize the workflow, specificially gem release, in simplified and easy to use Rake task.
|
4
4
|
|
5
|
-
|
5
|
+
Basically the typical workflow are:
|
6
|
+
1. Check in source code
|
7
|
+
2. Edit version.rb
|
8
|
+
3. Build the gem
|
9
|
+
4. Add to git and tag the release
|
10
|
+
5. Push gem file to rubygems
|
11
|
+
|
12
|
+
Sure there can have more such as integration with Continous Integration automated test etc. However that's my basic workflow as of now.
|
6
13
|
|
7
14
|
## Installation
|
8
15
|
|
@@ -20,9 +27,20 @@ Or install it yourself as:
|
|
20
27
|
|
21
28
|
$ gem install devops_helper
|
22
29
|
|
30
|
+
This is a set or Rake task haven't found automated way to include into the project Rakefile. Therefore manual intervention is required.
|
31
|
+
|
32
|
+
In order to complete the installation, need to add the following into the project Rakefile
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
require 'devops_helper'
|
36
|
+
```
|
23
37
|
## Usage
|
24
38
|
|
25
|
-
|
39
|
+
It runs as typical Rake task:
|
40
|
+
|
41
|
+
$ rake devops:gem_release
|
42
|
+
|
43
|
+
Then follow the prompt until it is done.
|
26
44
|
|
27
45
|
## Development
|
28
46
|
|
@@ -32,7 +50,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
50
|
|
33
51
|
## Contributing
|
34
52
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/devops_helper. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/
|
53
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/devops_helper. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/chrisliaw/devops_helper/blob/master/CODE_OF_CONDUCT.md).
|
36
54
|
|
37
55
|
|
38
56
|
## License
|
@@ -41,4 +59,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
41
59
|
|
42
60
|
## Code of Conduct
|
43
61
|
|
44
|
-
Everyone interacting in the DevopsHelper project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
62
|
+
Everyone interacting in the DevopsHelper project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/chrisliaw/devops_helper/blob/master/CODE_OF_CONDUCT.md).
|
data/devops_helper.gemspec
CHANGED
@@ -27,12 +27,12 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
|
-
spec.add_dependency 'toolrack'
|
31
|
-
spec.add_dependency 'tlogger'
|
32
|
-
spec.add_dependency 'tty-prompt'
|
30
|
+
spec.add_dependency 'toolrack'
|
31
|
+
spec.add_dependency 'tlogger'
|
32
|
+
spec.add_dependency 'tty-prompt', '0.22.0'
|
33
33
|
|
34
|
-
spec.add_dependency 'gvcs'
|
35
|
-
spec.add_dependency 'git_cli'
|
34
|
+
spec.add_dependency 'gvcs' #, '>= 0.1.0'
|
35
|
+
spec.add_dependency 'git_cli' #, '>= 0.6.0'
|
36
36
|
|
37
37
|
#spec.add_dependency 'rubygems-tasks'
|
38
38
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
|
2
|
+
require 'toolrack'
|
3
|
+
require_relative 'global'
|
4
|
+
|
5
|
+
module DevopsHelper
|
6
|
+
module GemPublishHelper
|
7
|
+
include TR::CondUtils
|
8
|
+
|
9
|
+
class GemPublisherError < StandardError; end
|
10
|
+
|
11
|
+
def publish_gem(version, opts = { }, &block)
|
12
|
+
|
13
|
+
cred = find_rubygems_api_key
|
14
|
+
|
15
|
+
selAcct = cred.keys.first
|
16
|
+
if cred.keys.length > 1
|
17
|
+
logger.tdebug :pubgem, "Multiple rubygems account detected."
|
18
|
+
# multiple account configured...
|
19
|
+
selAcct = block.call(:multiple_rubygems_account, cred)
|
20
|
+
raise GemPublisherError, "No rubygems account is selected." if is_empty?(selAcct)
|
21
|
+
end
|
22
|
+
|
23
|
+
# find the package
|
24
|
+
root = opts[:root] || Dir.getwd
|
25
|
+
foundGem = Dir.glob("**/*-#{version}.gem")
|
26
|
+
if foundGem.length == 0
|
27
|
+
raise DevopsHelper::Error, "No built gem found."
|
28
|
+
elsif foundGem.length > 1
|
29
|
+
if block
|
30
|
+
targetGem = block.call(:multiple_built_gems, foundGem)
|
31
|
+
else
|
32
|
+
raise DevopsHelper::Error, "Multiple versions of gem found : #{foundGem}. Please provide a block for selection"
|
33
|
+
end
|
34
|
+
else
|
35
|
+
targetGem = foundGem.first
|
36
|
+
end
|
37
|
+
|
38
|
+
cmd = "cd #{root} && gem push #{targetGem} -k #{selAcct}"
|
39
|
+
logger.tdebug :pubgem, "Command to publish gem : #{cmd}"
|
40
|
+
`#{cmd}`
|
41
|
+
[$?, targetGem]
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
def publish_gem_file(gemfile, opts = { }, &block)
|
46
|
+
|
47
|
+
cred = find_rubygems_api_key
|
48
|
+
|
49
|
+
selAcct = cred.keys.first
|
50
|
+
if cred.keys.length > 1
|
51
|
+
logger.tdebug :pubgemfile, "Multiple rubygems account detected."
|
52
|
+
# multiple account configured...
|
53
|
+
selAcct = block.call(:multiple_rubygems_account, cred)
|
54
|
+
raise GemPublisherError, "No rubygems account is selected." if is_empty?(selAcct)
|
55
|
+
end
|
56
|
+
|
57
|
+
if File.exist?(gemfile)
|
58
|
+
root = File.dirname(gemfile)
|
59
|
+
targetGem = File.basename(gemfile)
|
60
|
+
|
61
|
+
cmd = "cd #{root} && gem push #{targetGem} -k #{selAcct}"
|
62
|
+
logger.tdebug :pubgemfile, "Command to publish gem : #{cmd}"
|
63
|
+
res = `#{cmd}`
|
64
|
+
[$?, res, targetGem]
|
65
|
+
else
|
66
|
+
raise GemPublisherError, "Given Gemfile '#{gemfile}' not found"
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
private
|
73
|
+
def logger
|
74
|
+
if @logger.nil?
|
75
|
+
@logger = DevopsHelper::Global.instance.logger
|
76
|
+
end
|
77
|
+
@logger
|
78
|
+
end
|
79
|
+
|
80
|
+
def find_rubygems_api_key
|
81
|
+
if TR::RTUtils.on_windows?
|
82
|
+
credFile = File.join(ENV['USERPROFILE'],".gem","credentials")
|
83
|
+
else
|
84
|
+
credFile = File.join(Dir.home,".local","share","gem","credentials")
|
85
|
+
end
|
86
|
+
|
87
|
+
raise GemPublisherError, "Credential file not found at '#{credFile}'" if not File.exist?(credFile)
|
88
|
+
|
89
|
+
cred = nil
|
90
|
+
File.open(credFile,"r") do |f|
|
91
|
+
cred = YAML.load(f.read)
|
92
|
+
end
|
93
|
+
|
94
|
+
raise GemPublisherError, "Credential file is empty" if is_empty?(cred)
|
95
|
+
raise GemPublisherError, "No credential created yet for rubygems." if is_empty?(cred.keys)
|
96
|
+
|
97
|
+
cred
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
@@ -14,6 +14,30 @@ module DevopsHelper
|
|
14
14
|
execute_build_task(t)
|
15
15
|
end
|
16
16
|
|
17
|
+
#def publish_gem(version, opts = { },&block)
|
18
|
+
# # find the package
|
19
|
+
# root = opts[:root] || Dir.getwd
|
20
|
+
# foundGem = Dir.glob("**/*-#{version}.gem")
|
21
|
+
# if foundGem.length == 0
|
22
|
+
# raise DevopsHelper::Error, "No built gem found."
|
23
|
+
# elsif foundGem.length > 1
|
24
|
+
# if block
|
25
|
+
# targetGem = block.call(:multiple_built_gems, foundGem)
|
26
|
+
# else
|
27
|
+
# raise DevopsHelper::Error, "Multiple versions of gem found : #{foundGem}. Please provide a block for selection"
|
28
|
+
# end
|
29
|
+
# else
|
30
|
+
# targetGem = foundGem.first
|
31
|
+
# end
|
32
|
+
|
33
|
+
#
|
34
|
+
|
35
|
+
# cmd = "cd #{root} && gem push #{targetGem}"
|
36
|
+
# DevopsHelper::Global.instance.logger.tdebug :gem_rake_helper, "Command to publish gem : #{cmd}"
|
37
|
+
# `#{cmd}`
|
38
|
+
# [$?, targetGem]
|
39
|
+
#end
|
40
|
+
|
17
41
|
private
|
18
42
|
def find_build_task
|
19
43
|
task = nil
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'toolrack'
|
3
3
|
include Antrapol::ToolRack::ConditionUtils
|
4
4
|
|
5
|
-
|
5
|
+
require_relative '../../../devops_helper' #'devops_helper'
|
6
6
|
|
7
7
|
# include task like 'rake build'
|
8
8
|
require 'bundler/gem_tasks'
|
@@ -11,103 +11,218 @@ require 'bundler/gem_tasks'
|
|
11
11
|
|
12
12
|
require 'fileutils'
|
13
13
|
|
14
|
-
desc "Some simple rake tasks to assist gem developer in releasing new version of gem"
|
15
|
-
|
16
14
|
namespace :devops do
|
17
15
|
|
18
|
-
|
19
|
-
|
20
|
-
STDOUT.puts "Managed gem release V#{DevopsHelper::VERSION}"
|
16
|
+
namespace :gem do
|
21
17
|
|
22
|
-
|
23
|
-
|
18
|
+
desc "Some simple rake tasks to assist gem developer in releasing new version of gem"
|
19
|
+
task :release do
|
24
20
|
|
25
|
-
|
26
|
-
if vh.is_workspace?
|
21
|
+
STDOUT.puts "Managed gem release V#{DevopsHelper::VERSION}"
|
27
22
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
wd = Dir.getwd
|
24
|
+
tp = TTY::Prompt.new
|
25
|
+
|
26
|
+
vh = DevopsHelper::VcsHelper.new(wd)
|
27
|
+
if vh.is_workspace?
|
28
|
+
# check if workspace has pending changes
|
29
|
+
begin
|
30
|
+
if vh.has_pending_changes? or vh.has_new_changes?
|
31
|
+
cc = tp.yes?("There are pending changes not yet commit. Commit first? ")
|
32
|
+
if cc
|
33
|
+
STDOUT.puts "Commit the changes first before release"
|
34
|
+
exit(0)
|
35
|
+
end
|
34
36
|
end
|
37
|
+
rescue TTY::Reader::InputInterrupt
|
38
|
+
STDOUT.puts "\n\nAborted"
|
39
|
+
exit(1)
|
35
40
|
end
|
36
|
-
|
37
|
-
|
38
|
-
|
41
|
+
|
42
|
+
end # is_workspace?
|
43
|
+
|
44
|
+
rh = DevopsHelper::GemReleaseHelper.new
|
45
|
+
spec = rh.find_gemspec(wd)
|
46
|
+
|
47
|
+
# find version file
|
48
|
+
vf = rh.find_gem_version_file(wd)
|
49
|
+
if vf.length > 1
|
50
|
+
# more then one. User has to select
|
51
|
+
svf = vf.first
|
52
|
+
else
|
53
|
+
svf = vf.first
|
39
54
|
end
|
40
55
|
|
41
|
-
|
56
|
+
if not_empty?(spec) #and not_empty?(svf)
|
42
57
|
|
43
|
-
|
44
|
-
|
58
|
+
vs = rh.get_version_record(wd)
|
59
|
+
gs = Gem::Specification.load(spec)
|
60
|
+
lstVer = vs.last_version(gs.name)
|
61
|
+
if not is_empty?(lstVer)
|
62
|
+
targetVersion = rh.prompt_version(gs.name, lstVer[:version], lstVer[:created_at])
|
63
|
+
else
|
64
|
+
targetVersion = rh.prompt_version(gs.name, "", nil)
|
65
|
+
end
|
45
66
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
else
|
51
|
-
svf = vf.first
|
52
|
-
end
|
67
|
+
if targetVersion == -1
|
68
|
+
STDERR.puts "Aborted"
|
69
|
+
exit(1)
|
70
|
+
end
|
53
71
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
gs = Gem::Specification.load(spec)
|
58
|
-
lstVer = vs.last_version(gs.name)
|
59
|
-
if not is_empty?(lstVer)
|
60
|
-
targetVersion = rh.prompt_version(gs.name, lstVer[:version], lstVer[:created_at])
|
61
|
-
else
|
62
|
-
targetVersion = rh.prompt_version(gs.name, "", nil)
|
63
|
-
end
|
72
|
+
if not_empty?(svf)
|
73
|
+
rh.rewrite_gem_version_file(svf,targetVersion)
|
74
|
+
STDOUT.puts "Gem version file rewritten"
|
64
75
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
76
|
+
if vh.is_workspace?
|
77
|
+
# commit changes of the new version file before tagging
|
78
|
+
vh.add(svf)
|
79
|
+
vh.commit("Automated commit by DevOps Helper during release process", { files: [svf] })
|
80
|
+
end
|
69
81
|
|
70
|
-
|
71
|
-
rh.rewrite_gem_version_file(svf,targetVersion)
|
72
|
-
STDOUT.puts "Gem version file rewritten"
|
82
|
+
end
|
73
83
|
|
84
|
+
# tagging start here. Any new changes has to be done before this stage
|
74
85
|
if vh.is_workspace?
|
75
|
-
|
76
|
-
|
77
|
-
|
86
|
+
begin
|
87
|
+
tagSrc = tp.yes?("\nTag the source code for this release? ")
|
88
|
+
if tagSrc
|
89
|
+
msg = tp.ask("Please provide message for this tag (optional) : ", default: "Tagged version '#{targetVersion}' by DevOps Helper")
|
90
|
+
msg = "Automated tagging version '#{targetVersion}' by DevOps Helper" if is_empty?(msg)
|
91
|
+
vh.create_tag(targetVersion, msg)
|
92
|
+
end
|
93
|
+
rescue TTY::Reader::InputInterrupt
|
94
|
+
STDERR.puts "\n\nAborted"
|
95
|
+
exit(1)
|
96
|
+
end
|
78
97
|
end
|
98
|
+
# done tagging source code
|
79
99
|
|
80
|
-
|
100
|
+
# build the gem
|
101
|
+
res = rh.build_gem
|
102
|
+
STDOUT.puts "Gem '#{gs.name}' built"
|
103
|
+
# gem built
|
81
104
|
|
82
|
-
|
105
|
+
vs.register_version(gs.name, targetVersion)
|
106
|
+
vs.save(wd)
|
107
|
+
STDOUT.puts "Version '#{targetVersion}' registered"
|
108
|
+
|
109
|
+
# push gem? Optional anyway
|
83
110
|
begin
|
84
|
-
|
85
|
-
if
|
86
|
-
|
87
|
-
|
88
|
-
|
111
|
+
pub = tp.yes?("Do you want to publish the generated Gem file? ")
|
112
|
+
if pub
|
113
|
+
res, gemFile = rh.publish_gem(targetVersion) do |ops, vers|
|
114
|
+
case ops
|
115
|
+
when :multiple_rubygems_account
|
116
|
+
acct = vers.keys
|
117
|
+
acct << "Don't publish yet"
|
118
|
+
selAcct = tp.select("There are multiple Rubygems account configured inside this machine. Please select the account to push:", acct)
|
119
|
+
if selAcct == acct.last
|
120
|
+
STDOUT.puts "Noted. Publishing of gem file is aborted."
|
121
|
+
exit(0)
|
122
|
+
else
|
123
|
+
selAcct
|
124
|
+
end
|
125
|
+
when :multiple_built_gems
|
126
|
+
sel = vers
|
127
|
+
sel << "Don't publish yet"
|
128
|
+
selGem = tp.select("There are multiple Gems with the same version number found. Please select one of the following to publish: ", sel)
|
129
|
+
if selGem == sel.last
|
130
|
+
STDOUT.puts "Noted. Publishing of gem file is aborted."
|
131
|
+
exit(0)
|
132
|
+
else
|
133
|
+
selGem
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
if not res.success?
|
139
|
+
STDERR.puts "Failed to publish the Gem."
|
140
|
+
else
|
141
|
+
STDOUT.puts "Gem '#{gemFile}' published"
|
142
|
+
end
|
143
|
+
else
|
144
|
+
STDOUT.puts "Gem will not be published. Please manually publish the gem."
|
89
145
|
end
|
146
|
+
rescue DevopsHelper::GemPublishHelper::GemPublisherError => e
|
147
|
+
STDERR.puts "Error while publishing gem: #{e.message}"
|
148
|
+
exit(1)
|
90
149
|
rescue TTY::Reader::InputInterrupt
|
91
150
|
STDERR.puts "\n\nAborted"
|
92
151
|
exit(1)
|
93
152
|
end
|
153
|
+
|
154
|
+
# end push gem
|
155
|
+
|
156
|
+
# push source code?
|
157
|
+
#pushSrc = tp.no?("Do you want to push the source code to remote?")
|
158
|
+
|
159
|
+
elsif is_empty?(spec)
|
160
|
+
STDERR.puts "gemspec file not found at '#{wd}'"
|
161
|
+
exit(2)
|
162
|
+
elsif is_empty?(svf)
|
163
|
+
STDERR.puts "Cannot find version.rb to update GEM version"
|
164
|
+
exit(2)
|
165
|
+
end
|
166
|
+
|
167
|
+
end # gem_release
|
168
|
+
|
169
|
+
desc "Task just to publish the generated gem file to Rubygems"
|
170
|
+
task :publish do
|
171
|
+
|
172
|
+
tp = TTY::Prompt.new
|
173
|
+
|
174
|
+
foundGems = []
|
175
|
+
Dir.glob(File.join(Dir.getwd, "**/*.gem")) do |f|
|
176
|
+
foundGems << f
|
177
|
+
end
|
178
|
+
|
179
|
+
selGem = tp.select("Please select which Gem file to publish:") do |menu|
|
180
|
+
foundGems.sort.reverse.each do |f|
|
181
|
+
menu.choice File.basename(f), f
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
rh = DevopsHelper::GemReleaseHelper.new
|
186
|
+
begin
|
187
|
+
res, cmdOut, gemFile = rh.publish_gem_file(selGem) do |ops, vers|
|
188
|
+
case ops
|
189
|
+
when :multiple_rubygems_account
|
190
|
+
acct = vers.keys
|
191
|
+
acct << "Don't publish yet"
|
192
|
+
selAcct = tp.select("There are multiple Rubygems account configured inside this machine. Please select the account to push:", acct)
|
193
|
+
if selAcct == acct.last
|
194
|
+
STDOUT.puts "Noted. Publishing of gem file is aborted."
|
195
|
+
exit(0)
|
196
|
+
else
|
197
|
+
selAcct
|
198
|
+
end
|
199
|
+
when :multiple_built_gems
|
200
|
+
sel = vers
|
201
|
+
sel << "Don't publish yet"
|
202
|
+
selGem = tp.select("There are multiple Gems with the same version number found. Please select one of the following to publish: ", sel)
|
203
|
+
if selGem == sel.last
|
204
|
+
STDOUT.puts "Noted. Publishing of gem file is aborted."
|
205
|
+
exit(0)
|
206
|
+
else
|
207
|
+
selGem
|
208
|
+
end
|
209
|
+
end
|
210
|
+
rescue DevopsHelper::GemPublishHelper::GemPublisherError => e
|
211
|
+
STDERR.puts "Error while publishing gem: #{e.message}"
|
212
|
+
exit(1)
|
213
|
+
rescue TTY::Reader::InputInterrupt
|
214
|
+
STDERR.puts "\n\nAborted"
|
215
|
+
exit(1)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
if not res.success?
|
220
|
+
STDERR.puts "Failed to publish the Gem. Output was : \r\n#{cmdOut}"
|
221
|
+
else
|
222
|
+
STDOUT.puts "Gem '#{gemFile}' published"
|
94
223
|
end
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
vs.register_version(gs.name, targetVersion)
|
100
|
-
vs.save(wd)
|
101
|
-
STDOUT.puts "Version '#{targetVersion}' registered"
|
102
|
-
|
103
|
-
elsif is_empty?(spec)
|
104
|
-
STDERR.puts "gemspec file not found at '#{wd}'"
|
105
|
-
exit(2)
|
106
|
-
elsif is_empty?(svf)
|
107
|
-
STDERR.puts "Cannot find version.rb to update GEM version"
|
108
|
-
exit(2)
|
109
|
-
end
|
110
|
-
|
111
|
-
end # gem_release
|
224
|
+
|
225
|
+
end
|
226
|
+
end
|
112
227
|
|
113
228
|
end # devops
|
data/lib/devops_helper.rb
CHANGED
@@ -4,6 +4,7 @@ require "devops_helper/gem_core_helper"
|
|
4
4
|
require "devops_helper/gem_version_helper"
|
5
5
|
require "devops_helper/gem_rake_helper"
|
6
6
|
require "devops_helper/vcs_helper"
|
7
|
+
require "devops_helper/gem_publish_helper"
|
7
8
|
|
8
9
|
module DevopsHelper
|
9
10
|
class Error < StandardError; end
|
@@ -13,6 +14,7 @@ module DevopsHelper
|
|
13
14
|
include GemCoreHelper
|
14
15
|
include GemVersionHelper
|
15
16
|
include GemRakeHelper
|
17
|
+
include GemPublishHelper
|
16
18
|
end
|
17
19
|
|
18
20
|
class VcsHelper
|
metadata
CHANGED
@@ -1,85 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devops_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toolrack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
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: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tlogger
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
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
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: tty-prompt
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.22.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.22.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: gvcs
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
61
|
+
version: '0'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: git_cli
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
75
|
+
version: '0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
82
|
+
version: '0'
|
83
83
|
description: " "
|
84
84
|
email:
|
85
85
|
- chrisliaw@antrapol.com
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
91
|
- ".travis.yml"
|
92
|
+
- ".version_history.yml"
|
92
93
|
- CODE_OF_CONDUCT.md
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE.txt
|
@@ -100,6 +101,7 @@ files:
|
|
100
101
|
- lib/Rakefile
|
101
102
|
- lib/devops_helper.rb
|
102
103
|
- lib/devops_helper/gem_core_helper.rb
|
104
|
+
- lib/devops_helper/gem_publish_helper.rb
|
103
105
|
- lib/devops_helper/gem_rake_helper.rb
|
104
106
|
- lib/devops_helper/gem_version_helper.rb
|
105
107
|
- lib/devops_helper/global.rb
|
@@ -111,7 +113,7 @@ homepage: https://github.com/chrisliaw/devops_helper
|
|
111
113
|
licenses:
|
112
114
|
- MIT
|
113
115
|
metadata: {}
|
114
|
-
post_install_message:
|
116
|
+
post_install_message:
|
115
117
|
rdoc_options: []
|
116
118
|
require_paths:
|
117
119
|
- lib
|
@@ -126,8 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
128
|
- !ruby/object:Gem::Version
|
127
129
|
version: '0'
|
128
130
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
130
|
-
signing_key:
|
131
|
+
rubygems_version: 3.2.22
|
132
|
+
signing_key:
|
131
133
|
specification_version: 4
|
132
134
|
summary: DevOps Helper to assist in DevOps operation
|
133
135
|
test_files: []
|