release_manager 0.9.0 → 0.9.1

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
- SHA1:
3
- metadata.gz: f1eb100282aec6a63243d57a5d99e057a16a6f72
4
- data.tar.gz: 80945c3821447d4f1611dfaef6a79074073ee204
2
+ SHA256:
3
+ metadata.gz: 40f987ae556eeffe3ab2fca6e4aba94cc54ca9660ce44c7f1780827a1b2cab74
4
+ data.tar.gz: 6e0612667bd4a50e5cd332d6825ae44415e1080dd1d7abeafc6fcad41847cd23
5
5
  SHA512:
6
- metadata.gz: e1de851fb872828299abc3446836fcc0994b5e8ce35c6e8c26d3c507c7ca88085b38427e3bafe4ba0176228b3cce4ba7277fb9966075b77ba743d0f93aeb9721
7
- data.tar.gz: 3003adc21f31b607ec98542dbf0e8f54516cfc82607689320b6293ef9cc411176ccfc62924e756d927a8e080edba7ff9b8d20a2dc0ff021a7aa584d784974eb2
6
+ metadata.gz: 9466b5af4b5be8e33b696f89e5601684226c4a7585ffcfd53ae990674793d539304b3fcdfda81450a7067bebed0386c8b42f2b6a3a6a3b25379404f3751c1560
7
+ data.tar.gz: a04bbe4f4b2783f529ee58793ccf88e9de8c2fed7ef73d4cc6884d40d60e09e442ad0c4111fe56a75431af6a7b53f154e83f566e72f65356033a3e487a532175
@@ -1,5 +1,8 @@
1
1
  # Release Manager
2
2
 
3
+ ## 0.9.1
4
+ * Adds ability to publish release notes when tagging remotely
5
+
3
6
  ## 0.9.0
4
7
  * Adds ability to push a single tag
5
8
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- release_manager (0.9.0)
4
+ release_manager (0.9.1)
5
5
  gitlab (~> 4.2.0)
6
6
  highline (~> 1.7)
7
7
  rugged (~> 0.26)
@@ -71,4 +71,4 @@ DEPENDENCIES
71
71
  rugged (~> 0.26)
72
72
 
73
73
  BUNDLED WITH
74
- 1.15.4
74
+ 1.16.2
data/README.md CHANGED
@@ -407,6 +407,35 @@ ssh-add
407
407
 
408
408
  ```
409
409
 
410
+ ### Unable to exchange encryption keys
411
+ If you see an error message related to `Unable to exchange encryption keys` you may be dealing with an issue on your git server openssh
412
+ does not support the key exchange that libssh2 supports. Libssh2 is used by release_manager so it is important they can negotiate on the same algorithm.
413
+
414
+ There are two possible fixes for this.
415
+
416
+ * Update libssh2 to 1.7.x+
417
+
418
+ You can grab the libssh2 library on your puppetserver with r10k should you not have access to libssh2-1.7.0+
419
+
420
+ `cp /opt/puppetlabs/server/apps/r10k/lib/libssh2.so.1.0.1 /usr/lib64/libssh2.so.1.0.1`
421
+
422
+ Note: you will actually want to copy the the library whereever release_manager is used. Additionally you need to recompile
423
+ the rugged gem, only after updating libssh2 in /usr/lib64
424
+
425
+ `gem uninstall rugged && gem install rugged `
426
+
427
+
428
+ If you don't want to update libssh2 you should add support more more algorithms on the git server.
429
+
430
+
431
+ ```
432
+ # /etc/ssh/sshd_config
433
+
434
+ KexAlgorithms hmac-sha2-512
435
+ ```
436
+
437
+ Note: you should have more algorithms as that is an example only.
438
+
410
439
  ## Development
411
440
 
412
441
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -35,6 +35,7 @@ class Changelog < WorkflowAction
35
35
  @root_dir
36
36
  end
37
37
 
38
+ # Create the changelog entries and commit
38
39
  # @param remote [Boolean] - if the commit is a remote git on the vcs server
39
40
  # @return [String] - sha of the commit
40
41
  def run(remote = false, branch = 'master')
@@ -79,6 +80,23 @@ class Changelog < WorkflowAction
79
80
  !!changelog_lines.each_index.find {|index| changelog_lines[index] =~ /\A\s*\#{2}\s*Version #{version}/i }
80
81
  end
81
82
 
83
+ # @return [Array] - array of lines of the unreleased content, text between unreleased and next version
84
+ def get_unreleased_content
85
+ unreleased_index
86
+ start_content = changelog_lines.slice((unreleased_index + 1), changelog_lines.count)
87
+ start_content.slice_when {|a,b| b.downcase.start_with?('## version') }.map {|d| d}.first
88
+ end
89
+
90
+ # @return [Array] - array of lines of the specified version content, text between specified version and next version
91
+ # @param [String] - the version of content you want
92
+ # @note - returns empty string if version is not found
93
+ def get_version_content(version)
94
+ start_index = changelog_lines.find_index {|line| line.downcase.include?("version #{version}") }
95
+ return nil unless start_index
96
+ start_content = changelog_lines.slice((start_index + 1), changelog_lines.count)
97
+ start_content.slice_when {|a,b| b.downcase.start_with?('## version') }.map {|d| d}.first
98
+ end
99
+
82
100
  # @returns [Array[String]] - inserts the version header in the change log and returns the entire array of lines
83
101
  def update_unreleased
84
102
  time = Time.now.strftime("%B %d, %Y")
@@ -74,7 +74,6 @@ module ReleaseManager
74
74
  # this method does currently now work
75
75
  def ssh_key_credentials(url = nil)
76
76
  logger.error("Must use ssh-agent, please run ssh-agent zsh, then ssh-add to load your ssh key")
77
- exit 1
78
77
  unless File.readable?(global_private_key)
79
78
  raise Exception.new("Unable to use SSH key auth for %{url}: private key %{private_key} is missing or unreadable" % {url: url.inspect, private_key: global_private_key.inspect} )
80
79
  end
@@ -140,12 +140,13 @@ class PuppetModule < WorkflowAction
140
140
 
141
141
  # @param remote [Boolean] - create the tag remotely using the remote VCS
142
142
  # @param id [String] - the commit id to tag to
143
- def tag_module(remote = false, id = nil)
143
+ # @param remote [Boolean] - use the vcs adapter instead of local tag
144
+ # @param release_notes [Boolean] - add release notes to the tag when remote is true
145
+ def tag_module(remote = false, id = nil, release_notes = nil)
144
146
  id ||= repo.head.target_id
145
147
  if remote
146
- # TODO add release_notes as the last argument, currently nil
147
148
  # where we get the latest from the changelog
148
- create_tag(source, "v#{version}", id, "v#{version}", nil)
149
+ create_tag(source, "v#{version}", id, "v#{version}", release_notes)
149
150
  else
150
151
  create_local_tag("v#{version}", id)
151
152
  end
@@ -34,12 +34,18 @@ class Release
34
34
  puppet_module.next_version(level)
35
35
  end
36
36
 
37
+ def release_notes
38
+ notes = changelog.get_version_content(version) || changelog.get_unreleased_content || []
39
+ notes.join(" ")
40
+ end
41
+
42
+ # @param id [String] - the commit id to tag to
37
43
  def tag(id)
38
44
  if dry_run?
39
45
  logger.info "Would have just tagged the module to #{version}"
40
46
  return
41
47
  end
42
- puppet_module.tag_module(options[:remote], id)
48
+ puppet_module.tag_module(options[:remote], id, release_notes)
43
49
  end
44
50
 
45
51
  def bump
@@ -55,14 +61,17 @@ class Release
55
61
  puppet_module.commit_metadata(options[:remote])
56
62
  end
57
63
 
64
+ def changelog
65
+ @changelog ||= Changelog.new(puppet_module.path, version, {:commit => true})
66
+ end
67
+
58
68
  # @return [String] - sha of the commit
59
69
  def bump_log
60
70
  if dry_run?
61
71
  logger.info "Would have just bumped the CHANGELOG to version #{version}"
62
72
  return
63
73
  end
64
- log = Changelog.new(puppet_module.path, version, {:commit => true})
65
- log.run(options[:remote], puppet_module.src_branch)
74
+ changelog.run(options[:remote], puppet_module.src_branch)
66
75
  end
67
76
 
68
77
  # @param id [String] - a ref spec to push
@@ -1,3 +1,3 @@
1
1
  module ReleaseManager
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: release_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Osman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-20 00:00:00.000000000 Z
11
+ date: 2018-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gitlab
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
200
  version: '0'
201
201
  requirements: []
202
202
  rubyforge_project:
203
- rubygems_version: 2.6.11
203
+ rubygems_version: 2.7.7
204
204
  signing_key:
205
205
  specification_version: 4
206
206
  summary: Release tools for puppet code