cookbook-release 1.4.3 → 1.7.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/.github/workflows/ci.yml +15 -0
- data/.github/workflows/release.yml +18 -0
- data/Rakefile +6 -0
- data/cookbook-release.gemspec +4 -2
- data/lib/cookbook-release/changelog.rb +41 -15
- data/lib/cookbook-release/commit.rb +13 -1
- data/lib/cookbook-release/git-utilities.rb +15 -2
- data/lib/cookbook-release/release.rb +10 -3
- data/lib/cookbook-release/supermarket.rb +4 -4
- data/spec/changelog_spec.rb +2 -2
- data/spec/commit_spec.rb +12 -0
- data/spec/git_spec.rb +17 -2
- data/spec/release_spec.rb +2 -1
- metadata +26 -6
- data/.travis.yml +0 -11
- data/Rakefile.rb +0 -7
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 59ea3c1e5d1d222c334a409f63333f4a7339cebc36655043656fd1c26c78ec2f
         | 
| 4 | 
            +
              data.tar.gz: 59d2e2dfb5db2d3bd9e28fc341b0839c0fdb63a0d8483764528cb2bede290320
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 5b292dadbf789958681065228a9732c0614008e9cca74a8e3bcf478cbbf42da2c0bef73f8a6ad2ae52309b0ac47573a6038ddd62480fb4c73afdab76616be4f1
         | 
| 7 | 
            +
              data.tar.gz: 5f856842d4d1588c21d3961d29f9346b8b41000e3054933dcfbdba830a3811703b5894b6ac41cdd530e9bb6d2e6a8911eb65874cfd423dfc0b98c2dc82f2f58f
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            name: Tests
         | 
| 2 | 
            +
            on: [push, pull_request]
         | 
| 3 | 
            +
            jobs:
         | 
| 4 | 
            +
              test:
         | 
| 5 | 
            +
                runs-on: ubuntu-latest
         | 
| 6 | 
            +
                strategy:
         | 
| 7 | 
            +
                  matrix:
         | 
| 8 | 
            +
                    ruby-version: ['2.5', '2.7']
         | 
| 9 | 
            +
                steps:
         | 
| 10 | 
            +
                - uses: actions/checkout@v2
         | 
| 11 | 
            +
                - uses: ruby/setup-ruby@v1
         | 
| 12 | 
            +
                  with:
         | 
| 13 | 
            +
                    ruby-version: ${{ matrix.ruby-version }}
         | 
| 14 | 
            +
                    bundler-cache: true
         | 
| 15 | 
            +
                - run: bundle exec rake
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            name: Release
         | 
| 2 | 
            +
            on:
         | 
| 3 | 
            +
              push:
         | 
| 4 | 
            +
                tags: [ '*' ]
         | 
| 5 | 
            +
            jobs:
         | 
| 6 | 
            +
              release:
         | 
| 7 | 
            +
                runs-on: ubuntu-latest
         | 
| 8 | 
            +
                steps:
         | 
| 9 | 
            +
                - uses: actions/checkout@v2
         | 
| 10 | 
            +
                - uses: ruby/setup-ruby@v1
         | 
| 11 | 
            +
                  with:
         | 
| 12 | 
            +
                    ruby-version: 2.7
         | 
| 13 | 
            +
                - run: |
         | 
| 14 | 
            +
                    install -D -m 600 <(echo -e "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}") $HOME/.gem/credentials
         | 
| 15 | 
            +
                    gem build *.gemspec
         | 
| 16 | 
            +
                    gem push *.gem
         | 
| 17 | 
            +
                  env:
         | 
| 18 | 
            +
                    RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
         | 
    
        data/Rakefile
    ADDED
    
    
    
        data/cookbook-release.gemspec
    CHANGED
    
    | @@ -6,7 +6,7 @@ require 'English' | |
| 6 6 |  | 
| 7 7 | 
             
            Gem::Specification.new do |spec|
         | 
| 8 8 | 
             
              spec.name          = 'cookbook-release'
         | 
| 9 | 
            -
              spec.version       = '1. | 
| 9 | 
            +
              spec.version       = '1.7.0'
         | 
| 10 10 | 
             
              spec.authors       = ['Grégoire Seux']
         | 
| 11 11 | 
             
              spec.email         = 'g.seux@criteo.com'
         | 
| 12 12 | 
             
              spec.summary       = 'Provide primitives (and rake tasks) to release a cookbook'
         | 
| @@ -22,8 +22,10 @@ Gem::Specification.new do |spec| | |
| 22 22 | 
             
              spec.add_dependency 'semantic'
         | 
| 23 23 | 
             
              spec.add_dependency 'highline'
         | 
| 24 24 | 
             
              spec.add_dependency 'mixlib-shellout'
         | 
| 25 | 
            -
               | 
| 25 | 
            +
              # TODO: support Chef 17 and leverage knife gem at some point
         | 
| 26 | 
            +
              spec.add_dependency 'chef', '>= 12.18.31', '< 17.0' # knife code has been moved to dedicated gem starting with Chef 17
         | 
| 26 27 | 
             
              spec.add_dependency 'git-ng' # see https://github.com/schacon/ruby-git/issues/307
         | 
| 28 | 
            +
              spec.add_dependency 'unicode-emoji'
         | 
| 27 29 |  | 
| 28 30 |  | 
| 29 31 | 
             
              spec.add_development_dependency 'rspec'
         | 
| @@ -11,6 +11,7 @@ module CookbookRelease | |
| 11 11 | 
             
                RISKY = 'RISKY/BREAKING (details below):'
         | 
| 12 12 | 
             
                NO_RISKY = 'NO RISKY/BREAKING COMMITS. READ FULL CHANGELOG.'
         | 
| 13 13 | 
             
                NON_NODES_ONLY = 'Non-risky/major, Non-node-only commits'
         | 
| 14 | 
            +
                NODES_ONLY = 'Commits impacting only nodes'
         | 
| 14 15 | 
             
                FULL = 'Full changelog:'
         | 
| 15 16 | 
             
                DETAILS = 'Details of risky commits:'
         | 
| 16 17 |  | 
| @@ -109,28 +110,53 @@ module CookbookRelease | |
| 109 110 | 
             
                end
         | 
| 110 111 |  | 
| 111 112 | 
             
                def markdown_priority_nodes
         | 
| 112 | 
            -
                  cl = changelog
         | 
| 113 | 
            -
                  risky_commits = cl.select { |c| c.risky? || c.major? }
         | 
| 114 | 
            -
                  not_nodes_only_commits = cl.reject { |c| c.nodes_only? || c.risky? || c.major? }
         | 
| 115 113 | 
             
                  result = []
         | 
| 116 | 
            -
                   | 
| 117 | 
            -
             | 
| 118 | 
            -
                   | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 114 | 
            +
                  result << append_risky(changelog)
         | 
| 115 | 
            +
                  result << append_by_impact(changelog)
         | 
| 116 | 
            +
                  result << append_risky_details(changelog)
         | 
| 117 | 
            +
                  result
         | 
| 118 | 
            +
                end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
                private
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                # @param changelog [Array<Commit>]
         | 
| 123 | 
            +
                # @return [String] a string describing the changelog
         | 
| 124 | 
            +
                def append_by_impact(changelog)
         | 
| 125 | 
            +
                  not_nodes_only_commits = changelog.reject { |c| c.nodes_only? || c.risky? || c.major? }
         | 
| 126 | 
            +
                  nodes_only_commits = changelog.select(&:nodes_only?)
         | 
| 127 | 
            +
                  output = []
         | 
| 121 128 | 
             
                  if not_nodes_only_commits.any?
         | 
| 122 | 
            -
                     | 
| 129 | 
            +
                    txt = not_nodes_only_commits.map { |c| c.to_s_markdown(false) }.join("\n")
         | 
| 130 | 
            +
                    output << "*#{NON_NODES_ONLY}*\n#{txt}\n"
         | 
| 123 131 | 
             
                  end
         | 
| 124 | 
            -
                   | 
| 125 | 
            -
             | 
| 132 | 
            +
                  if nodes_only_commits.any?
         | 
| 133 | 
            +
                    txt = nodes_only_commits.map { |c| c.to_s_markdown(false) }.join("\n")
         | 
| 134 | 
            +
                    output << "*#{NODES_ONLY}*\n#{txt}\n"
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                  output.join
         | 
| 137 | 
            +
                end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                # @param changelog [Array<Commit>]
         | 
| 140 | 
            +
                # @return [String] a string describing the changelog
         | 
| 141 | 
            +
                def append_risky_details(changelog)
         | 
| 142 | 
            +
                  risky_commits = changelog.select { |c| c.risky? || c.major? }
         | 
| 126 143 | 
             
                  if risky_commits.any?
         | 
| 127 | 
            -
                     | 
| 128 | 
            -
             | 
| 144 | 
            +
                    "\n#{DETAILS}\n" + risky_commits.map { |c| c.to_s_markdown(true) }.join("\n")
         | 
| 145 | 
            +
                  else
         | 
| 146 | 
            +
                    ''
         | 
| 129 147 | 
             
                  end
         | 
| 130 | 
            -
                  result
         | 
| 131 148 | 
             
                end
         | 
| 132 149 |  | 
| 133 | 
            -
                 | 
| 150 | 
            +
                # @param changelog [Array<Commit>]
         | 
| 151 | 
            +
                # @return [String] a string describing the changelog
         | 
| 152 | 
            +
                def append_risky(changelog)
         | 
| 153 | 
            +
                  risky_commits = changelog.select { |c| c.risky? || c.major? }
         | 
| 154 | 
            +
                  if risky_commits.any?
         | 
| 155 | 
            +
                    "*#{RISKY}*\n" << risky_commits.map { |c| c.to_s_markdown(false) }.join("\n") << "\n"
         | 
| 156 | 
            +
                  else
         | 
| 157 | 
            +
                    "*#{NO_RISKY}*\n\n"
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
                end
         | 
| 134 160 |  | 
| 135 161 | 
             
                def changelog
         | 
| 136 162 | 
             
                  ref = ENV['RELEASE_BRANCH'] || 'origin/master'
         | 
| @@ -1,3 +1,6 @@ | |
| 1 | 
            +
            require 'forwardable'
         | 
| 2 | 
            +
            require 'unicode/emoji'
         | 
| 3 | 
            +
             | 
| 1 4 | 
             
            module CookbookRelease
         | 
| 2 5 | 
             
              class Commit
         | 
| 3 6 | 
             
                extend Forwardable
         | 
| @@ -79,11 +82,20 @@ module CookbookRelease | |
| 79 82 | 
             
                  else
         | 
| 80 83 | 
             
                    result << "_#{self[:author]} <#{self[:email]}>_"
         | 
| 81 84 | 
             
                  end
         | 
| 82 | 
            -
                  result <<  | 
| 85 | 
            +
                  result << ' '
         | 
| 86 | 
            +
                  result << backtick_string(self[:subject])
         | 
| 83 87 | 
             
                  result << "\n```\n#{strip_change_id(self[:body])}```" if full && self[:body]
         | 
| 84 88 | 
             
                  result
         | 
| 85 89 | 
             
                end
         | 
| 86 90 |  | 
| 91 | 
            +
                def backtick_string(input)
         | 
| 92 | 
            +
                  s = input.gsub(/( )?(#{Unicode::Emoji::REGEX})( )?/, '` \2 `')
         | 
| 93 | 
            +
                           .gsub(/( )?``( )?/, '')
         | 
| 94 | 
            +
                  s += '`' unless s =~ /`$/
         | 
| 95 | 
            +
                  s = '`' + s unless s =~ /^`/
         | 
| 96 | 
            +
                  s
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 87 99 | 
             
                private
         | 
| 88 100 |  | 
| 89 101 | 
             
                def strip_change_id(body)
         | 
| @@ -8,6 +8,7 @@ module CookbookRelease | |
| 8 8 | 
             
              class GitUtilities
         | 
| 9 9 |  | 
| 10 10 | 
             
                attr_accessor :no_prompt
         | 
| 11 | 
            +
                attr_reader :sub_dir
         | 
| 11 12 |  | 
| 12 13 | 
             
                def initialize(options={})
         | 
| 13 14 | 
             
                  @tag_prefix = options[:tag_prefix] || ''
         | 
| @@ -23,6 +24,15 @@ module CookbookRelease | |
| 23 24 | 
             
                  File.directory?(::File.join(dir, '.git'))
         | 
| 24 25 | 
             
                end
         | 
| 25 26 |  | 
| 27 | 
            +
                def self.find_root(dir = Dir.pwd)
         | 
| 28 | 
            +
                  # Do not consider given dir as part of the git repo if not in git hierarchy or dir is not tracked
         | 
| 29 | 
            +
                  return if ::Mixlib::ShellOut.new('git ls-files --error-unmatch .', cwd: dir).run_command.error?
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  cmd = Mixlib::ShellOut.new("git rev-parse --show-toplevel", cwd: dir)
         | 
| 32 | 
            +
                  cmd.run_command
         | 
| 33 | 
            +
                  cmd.error? ? nil : cmd.stdout.chomp
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 26 36 | 
             
                def reset_command(new_version)
         | 
| 27 37 | 
             
                  remote = choose_remote
         | 
| 28 38 | 
             
                  "git tag -d #{new_version} ; git push #{remote} :#{new_version}"
         | 
| @@ -43,11 +53,13 @@ module CookbookRelease | |
| 43 53 | 
             
                def _compute_last_release
         | 
| 44 54 | 
             
                  tag = Mixlib::ShellOut.new([
         | 
| 45 55 | 
             
                    'git describe',
         | 
| 56 | 
            +
                    "--abbrev=0",
         | 
| 46 57 | 
             
                    "--tags",
         | 
| 47 58 | 
             
                    "--match \"#{@tag_prefix}[0-9]*\.[0-9]*\.[0-9]*\""
         | 
| 48 59 | 
             
                  ].join(" "), @shellout_opts)
         | 
| 49 60 | 
             
                  tag.run_command
         | 
| 50 | 
            -
                  tag.stdout. | 
| 61 | 
            +
                  rel = tag.stdout.sub(/^#{@tag_prefix}/, '').chomp
         | 
| 62 | 
            +
                  rel.empty? ? nil : rel
         | 
| 51 63 | 
             
                end
         | 
| 52 64 |  | 
| 53 65 | 
             
                def has_any_release?
         | 
| @@ -64,7 +76,8 @@ module CookbookRelease | |
| 64 76 | 
             
                end
         | 
| 65 77 |  | 
| 66 78 | 
             
                def compute_changelog(since, short_sha = true)
         | 
| 67 | 
            -
                  @ | 
| 79 | 
            +
                  ref = "#{@tag_prefix}#{since}"
         | 
| 80 | 
            +
                  @g.log(500).object(@sub_dir).between(ref, 'HEAD').map do |commit|
         | 
| 68 81 | 
             
                    message = commit.message.lines.map(&:chomp).compact.delete_if(&:empty?)
         | 
| 69 82 | 
             
                    Commit.new(
         | 
| 70 83 | 
             
                      author: commit.author.name,
         | 
| @@ -5,13 +5,20 @@ module CookbookRelease | |
| 5 5 | 
             
                def self.current_version(file)
         | 
| 6 6 | 
             
                  dir = File.dirname(file)
         | 
| 7 7 | 
             
                  version_file = File.join(dir, '.cookbook_version')
         | 
| 8 | 
            +
                  git_root = GitUtilities.find_root(dir)
         | 
| 8 9 |  | 
| 9 | 
            -
                  if !GitUtilities.git?(dir)
         | 
| 10 | 
            +
                  if !GitUtilities.git?(dir) && git_root.nil?
         | 
| 10 11 | 
             
                    return File.read(version_file) if File.exist?(version_file)
         | 
| 11 12 | 
             
                    raise "Can't determine version in a non-git environment without #{version_file}"
         | 
| 12 13 | 
             
                  end
         | 
| 13 14 |  | 
| 14 | 
            -
                   | 
| 15 | 
            +
                  git = if git_root == dir
         | 
| 16 | 
            +
                          GitUtilities.new(cwd: dir)
         | 
| 17 | 
            +
                        else
         | 
| 18 | 
            +
                          GitUtilities.new(cwd: git_root, tag_prefix: "#{File.basename(dir)}-", sub_dir: dir)
         | 
| 19 | 
            +
                        end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  r = Release.new(git)
         | 
| 15 22 | 
             
                  begin
         | 
| 16 23 | 
             
                    r.new_version.first
         | 
| 17 24 | 
             
                  rescue ExistingRelease
         | 
| @@ -101,7 +108,7 @@ module CookbookRelease | |
| 101 108 | 
             
                    exit 1 unless agreed
         | 
| 102 109 | 
             
                    git.push_tag(new_version)
         | 
| 103 110 | 
             
                    supermarket = Supermarket.new
         | 
| 104 | 
            -
                    supermarket.publish_ck(@category)
         | 
| 111 | 
            +
                    supermarket.publish_ck(@category, git.sub_dir)
         | 
| 105 112 | 
             
                  rescue
         | 
| 106 113 | 
             
                    puts HighLine.color("Release aborted, you have to reset to previous state manually", :red)
         | 
| 107 114 | 
             
                    puts ":use with care: #{git.reset_command(new_version)}"
         | 
| @@ -8,7 +8,7 @@ require 'json' | |
| 8 8 | 
             
            module CookbookRelease
         | 
| 9 9 | 
             
              class Supermarket
         | 
| 10 10 |  | 
| 11 | 
            -
                # This code is adapted from "knife cookbook share" and travis dpl provider | 
| 11 | 
            +
                # This code is adapted from "knife cookbook share" and travis dpl provider
         | 
| 12 12 | 
             
                # for supermarket.
         | 
| 13 13 |  | 
| 14 14 | 
             
                def initialize(opts={})
         | 
| @@ -20,11 +20,11 @@ module CookbookRelease | |
| 20 20 |  | 
| 21 21 | 
             
                include ::Chef::Mixin::ShellOut
         | 
| 22 22 |  | 
| 23 | 
            -
                def publish_ck(category)
         | 
| 24 | 
            -
                  ck = ::Chef::Cookbook::CookbookVersionLoader.new('.')
         | 
| 23 | 
            +
                def publish_ck(category, path = nil)
         | 
| 24 | 
            +
                  ck = ::Chef::Cookbook::CookbookVersionLoader.new(path || '.')
         | 
| 25 25 | 
             
                  ck.load!
         | 
| 26 26 | 
             
                  cookbook = ck.cookbook_version
         | 
| 27 | 
            -
                  # we have to provide a rest option otherwise it will try to load a | 
| 27 | 
            +
                  # we have to provide a rest option otherwise it will try to load a
         | 
| 28 28 | 
             
                  # client.pem key
         | 
| 29 29 | 
             
                  ::Chef::CookbookUploader.new(cookbook, rest: 'fake_rest').validate_cookbooks
         | 
| 30 30 |  | 
    
        data/spec/changelog_spec.rb
    CHANGED
    
    | @@ -83,10 +83,10 @@ describe CookbookRelease::Changelog do | |
| 83 83 | 
             
                  end
         | 
| 84 84 |  | 
| 85 85 | 
             
                  it 'expands the body with non-risky+non-nodes' do
         | 
| 86 | 
            -
                    expect(git).to receive(:compute_changelog).and_return(commits)
         | 
| 86 | 
            +
                    expect(git).to receive(:compute_changelog).and_return(commits).at_least(:once)
         | 
| 87 87 | 
             
                    changelog = CookbookRelease::Changelog.new(git, expand_risky: true, nodes_only: true)
         | 
| 88 88 | 
             
                    expect(changelog.markdown_priority_nodes.join('')).to include(
         | 
| 89 | 
            -
                      "\n*Non-risky/major, Non-node-only commits*\n*654321* _John Doe <j.doe@nobody.com>_ `hello`\n* | 
| 89 | 
            +
                      "\n*Non-risky/major, Non-node-only commits*\n*654321* _John Doe <j.doe@nobody.com>_ `hello`\n*Commits impacting only nodes"
         | 
| 90 90 | 
             
                    )
         | 
| 91 91 | 
             
                  end
         | 
| 92 92 | 
             
                end
         | 
    
        data/spec/commit_spec.rb
    CHANGED
    
    | @@ -23,4 +23,16 @@ describe CookbookRelease::Commit do | |
| 23 23 | 
             
                  expect(minor_change)   .not_to be_patch
         | 
| 24 24 | 
             
                end
         | 
| 25 25 | 
             
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              describe '.to_s_markdown' do
         | 
| 28 | 
            +
                it 'surrounds subject with backticks' do
         | 
| 29 | 
            +
                  commit = CookbookRelease::Commit.new(subject: 'This is a fix', hash: 'abcdef', author: 'Linus', email: 'linus@linux.org')
         | 
| 30 | 
            +
                  expect(commit.to_s_markdown(false)).to match(/`#{commit[:subject]}`/)
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                it 'properly handle emojis' do
         | 
| 34 | 
            +
                  commit = CookbookRelease::Commit.new(subject: 'This is a fix 🔧 and I love 🪐🚀', hash: 'abcdef', author: 'Linus', email: 'linus@linux.org')
         | 
| 35 | 
            +
                  expect(commit.to_s_markdown(false)).to match(/`This is a fix` 🔧 `and I love` 🪐🚀/)
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 26 38 | 
             
            end
         | 
    
        data/spec/git_spec.rb
    CHANGED
    
    | @@ -44,6 +44,21 @@ describe CookbookRelease::GitUtilities do | |
| 44 44 | 
             
                  expect(CookbookRelease::GitUtilities.git?(tmp)).to be(true)
         | 
| 45 45 | 
             
                  FileUtils.rm_rf(tmp)
         | 
| 46 46 | 
             
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                it 'do not finds repo\'s root from untracked subdir' do
         | 
| 49 | 
            +
                  subdir = 'cookbooks/mycookbook'
         | 
| 50 | 
            +
                  FileUtils.mkdir_p(subdir)
         | 
| 51 | 
            +
                  expect(CookbookRelease::GitUtilities.find_root(subdir)).to be nil
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                it 'finds repo\'s root from tracked subdir' do
         | 
| 55 | 
            +
                  subdir = 'cookbooks/mycookbook'
         | 
| 56 | 
            +
                  tracked_file = ::File.join(subdir, 'tracked_file')
         | 
| 57 | 
            +
                  FileUtils.mkdir_p(subdir)
         | 
| 58 | 
            +
                  FileUtils.touch(tracked_file)
         | 
| 59 | 
            +
                  ::Mixlib::ShellOut.new("git add '#{tracked_file}'").run_command
         | 
| 60 | 
            +
                  expect(CookbookRelease::GitUtilities.find_root(subdir)).to eq(Dir.pwd)
         | 
| 61 | 
            +
                end
         | 
| 47 62 | 
             
              end
         | 
| 48 63 |  | 
| 49 64 | 
             
              describe '.clean_index(?|!)' do
         | 
| @@ -150,8 +165,8 @@ git tag 12.34.56 | |
| 150 165 |  | 
| 151 166 | 
             
                it 'parse correctly commits' do
         | 
| 152 167 | 
             
                  cmds = <<-EOH
         | 
| 153 | 
            -
                  git commit --allow-empty -m "subject" -m "body" -m "line2"
         | 
| 154 | 
            -
                  git commit --allow-empty -m "without body"
         | 
| 168 | 
            +
                  git commit --allow-empty --no-verify -m "subject" -m "body" -m "line2"
         | 
| 169 | 
            +
                  git commit --allow-empty --no-verify -m "without body"
         | 
| 155 170 | 
             
                  EOH
         | 
| 156 171 | 
             
                  cmds.split("\n").each do |cmd|
         | 
| 157 172 | 
             
                    cmd = Mixlib::ShellOut.new(cmd)
         | 
    
        data/spec/release_spec.rb
    CHANGED
    
    | @@ -36,12 +36,13 @@ describe Release do | |
| 36 36 | 
             
                               :push_tag => true,
         | 
| 37 37 | 
             
                              )
         | 
| 38 38 | 
             
                  allow(git).to receive(:no_prompt=)
         | 
| 39 | 
            +
                  allow(git).to receive(:sub_dir).and_return(nil)
         | 
| 39 40 | 
             
                  release = Release.new(git, no_prompt: true)
         | 
| 40 41 |  | 
| 41 42 | 
             
                  supermarket = double('supermarket')
         | 
| 42 43 | 
             
                  expect(CookbookRelease::Supermarket).to receive(:new).and_return(supermarket)
         | 
| 43 44 |  | 
| 44 | 
            -
                  expect(supermarket).to receive(:publish_ck).with('Other')
         | 
| 45 | 
            +
                  expect(supermarket).to receive(:publish_ck).with('Other', nil)
         | 
| 45 46 | 
             
                  release.release!
         | 
| 46 47 | 
             
                end
         | 
| 47 48 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cookbook-release
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.7.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Grégoire Seux
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-07-02 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: semantic
         | 
| @@ -59,6 +59,9 @@ dependencies: | |
| 59 59 | 
             
                - - ">="
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 61 | 
             
                    version: 12.18.31
         | 
| 62 | 
            +
                - - "<"
         | 
| 63 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 64 | 
            +
                    version: '17.0'
         | 
| 62 65 | 
             
              type: :runtime
         | 
| 63 66 | 
             
              prerelease: false
         | 
| 64 67 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -66,6 +69,9 @@ dependencies: | |
| 66 69 | 
             
                - - ">="
         | 
| 67 70 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 71 | 
             
                    version: 12.18.31
         | 
| 72 | 
            +
                - - "<"
         | 
| 73 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            +
                    version: '17.0'
         | 
| 69 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 76 | 
             
              name: git-ng
         | 
| 71 77 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -80,6 +86,20 @@ dependencies: | |
| 80 86 | 
             
                - - ">="
         | 
| 81 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 88 | 
             
                    version: '0'
         | 
| 89 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 90 | 
            +
              name: unicode-emoji
         | 
| 91 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 92 | 
            +
                requirements:
         | 
| 93 | 
            +
                - - ">="
         | 
| 94 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            +
                    version: '0'
         | 
| 96 | 
            +
              type: :runtime
         | 
| 97 | 
            +
              prerelease: false
         | 
| 98 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 | 
            +
                requirements:
         | 
| 100 | 
            +
                - - ">="
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: '0'
         | 
| 83 103 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 104 | 
             
              name: rspec
         | 
| 85 105 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -142,12 +162,13 @@ executables: [] | |
| 142 162 | 
             
            extensions: []
         | 
| 143 163 | 
             
            extra_rdoc_files: []
         | 
| 144 164 | 
             
            files:
         | 
| 165 | 
            +
            - ".github/workflows/ci.yml"
         | 
| 166 | 
            +
            - ".github/workflows/release.yml"
         | 
| 145 167 | 
             
            - ".gitignore"
         | 
| 146 | 
            -
            - ".travis.yml"
         | 
| 147 168 | 
             
            - Gemfile
         | 
| 148 169 | 
             
            - LICENSE.txt
         | 
| 149 170 | 
             
            - README.md
         | 
| 150 | 
            -
            - Rakefile | 
| 171 | 
            +
            - Rakefile
         | 
| 151 172 | 
             
            - cookbook-release.gemspec
         | 
| 152 173 | 
             
            - lib/cookbook-release.rb
         | 
| 153 174 | 
             
            - lib/cookbook-release/changelog.rb
         | 
| @@ -180,8 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 180 201 | 
             
                - !ruby/object:Gem::Version
         | 
| 181 202 | 
             
                  version: '0'
         | 
| 182 203 | 
             
            requirements: []
         | 
| 183 | 
            -
             | 
| 184 | 
            -
            rubygems_version: 2.7.6
         | 
| 204 | 
            +
            rubygems_version: 3.1.6
         | 
| 185 205 | 
             
            signing_key: 
         | 
| 186 206 | 
             
            specification_version: 4
         | 
| 187 207 | 
             
            summary: Provide primitives (and rake tasks) to release a cookbook
         | 
    
        data/.travis.yml
    DELETED
    
    | @@ -1,11 +0,0 @@ | |
| 1 | 
            -
            language: ruby
         | 
| 2 | 
            -
            rvm:
         | 
| 3 | 
            -
              - 2.4
         | 
| 4 | 
            -
            deploy:
         | 
| 5 | 
            -
              provider: rubygems
         | 
| 6 | 
            -
              api_key:
         | 
| 7 | 
            -
                secure: nrEzm2dqWjyaa5ewApSonF+2D+y3PYwt9xaQC04d1NtbhQYyzX6wti3oatpMJI2gkcuuLjKrNHH/aLbKOGv7+Jj5BUJGOLixxhRdJyLWde/6cKCYVgIYPxeUtSJrRgyHAS2o8TDPjhWCT5oRwSkmhd+5D2JKjVqAycetbIzKWWvqScO09z0bF66bbKSfO1s44JwKjnUUW7W9tzrPvMPouBBoFtQ+dQVgxYLajgmjprVvIwzlHxgq/zP8YwL8i7vyRJFiQXyveSxZfBagN2qrUM72HWBPLLW4AeAdLDHYWon88GDU0p+cy2mVeSe67fBPVDopAEGij7MNJCBWV1/SRRKQcEb2U823+1GSB13OvaOGTn9rYsJP5zLKu77ATbHPi22nMfWOAzdEJJ+uFu9XW4nwUO/j79zPC1mEsRZDJlDrmTc4XZQJRKkCUjSl/J53vbdy4JQfos8B2V15tzx1baswQVPZuNiwuP4dOupI34FohJSVXQrsOoWVWVEX5Tfod6s3kpivW6lzwM68I2qXFa/4H8RPU2m0eVpfQslOO8TaGnbodudbQ1LSi/d5W6XWrMVqWGH910JG3jlJgHn5J7yQlI4VqnOpCjGsx/5xincuJZ7hBhcu5q5zcAGem7TrYSNkrx6neBYKmpZBHOWalIGw8wI9uViEsGQ6fayFee8=
         | 
| 8 | 
            -
              gem: cookbook-release
         | 
| 9 | 
            -
              on:
         | 
| 10 | 
            -
                tags: true
         | 
| 11 | 
            -
                repo: criteo/cookbook-release
         |