diff --git a/.github/workflows/gems-release-to-rubygems.yml b/.github/workflows/gems-release-to-rubygems.yml index abb70a5d774..68c8b6e2e32 100644 --- a/.github/workflows/gems-release-to-rubygems.yml +++ b/.github/workflows/gems-release-to-rubygems.yml @@ -23,4 +23,4 @@ jobs: # We can't use the https://github.com/rubygems/release-gem workflow because it calls `rake release` rather than `rake gems:release`. # `rake release` causes problems because it tries to push a git tag, but we've already manually tagged the release as part of the `gems-bump-version` workflow. - - run: gem install rake && rake gems:release + - run: gem exec rake gems:release diff --git a/Rakefile b/Rakefile index 4013ceb0fd3..e36ebfdddc6 100644 --- a/Rakefile +++ b/Rakefile @@ -68,7 +68,9 @@ namespace :gems do GEMSPECS.each do |gemspec_path| gem_name = File.basename(gemspec_path).sub(/\.gemspec$/, "") - gem_path = "pkg/#{gem_name}-#{Dependabot::VERSION}.gem" + gem_name_and_version = "#{gem_name}-#{Dependabot::VERSION}" + gem_path = "pkg/#{gem_name_and_version}.gem" + gem_attestation_path = "pkg/#{gem_name_and_version}.sigstore.json" attempts = 0 loop do @@ -80,7 +82,8 @@ namespace :gems do attempts += 1 sleep(2) begin - sh "gem push #{gem_path}" + sh "gem exec sigstore-cli:0.2.1 sign #{gem_path} --bundle #{gem_attestation_path}" + sh "gem push #{gem_path} --attestation #{gem_attestation_path}" break rescue StandardError => e puts "! `gem push` failed with error: #{e}" @@ -92,7 +95,7 @@ namespace :gems do end task :clean do - FileUtils.rm(Dir["pkg/*.gem"]) + FileUtils.rm(Dir["pkg/*.gem", "pkg/*.sigstore.json"]) end end