Skip to content

Commit 02c2c5d

Browse files
committed
Improvements to releaser
* Check for gh default repo * Add --verify-tag to release create * Run build and print checksums before push
1 parent 74fceba commit 02c2c5d

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

tools/releaser/lib/releaser.rb

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

33
require "json"
4+
require "digest"
45
require "rake/tasklib"
56

67
class Releaser < Rake::TaskLib
@@ -114,6 +115,18 @@ def define
114115
desc "Build gem files for all projects"
115116
task build: FRAMEWORKS.map { |f| "#{f}:build" } + ["rails:build"]
116117

118+
task checksums: :build do
119+
Dir.chdir(root) do
120+
puts
121+
[*FRAMEWORKS, "rails"].each do |fw|
122+
path = gem_path(fw)
123+
sha = ::Digest::SHA256.file(path)
124+
puts "#{sha} #{path}"
125+
end
126+
puts
127+
end
128+
end
129+
117130
task :bundle do
118131
sh "bundle check"
119132
end
@@ -127,6 +140,10 @@ def define
127140
raise "GitHub CLI is not logged in. Please run `gh auth login` to log in."
128141
end
129142
end
143+
default_repo = `git config --local --get-regexp '\.gh-resolved$'`.strip
144+
if !$?.success? || default_repo.empty?
145+
raise "GitHub CLI does not have a default repo configured. Please run `gh repo set-default rails/rails`"
146+
end
130147
end
131148

132149
task :commit do
@@ -155,15 +172,17 @@ def define
155172
Dir.chdir(root) do
156173
File.write("pkg/#{version}.md", release_notes)
157174

158-
sh "gh release create #{tag} -t #{version} -F pkg/#{version}.md --draft#{pre_release? ? " --prerelease" : ""}"
175+
sh "gh release create --verify-tag #{tag} -t #{version} -F pkg/#{version}.md --draft#{pre_release? ? " --prerelease" : ""}"
159176
end
160177
end
161178

162179
desc "Release all gems and create a tag"
163180
task release: %w(check_gh_client prep_release commit tag create_release)
164181

182+
task pre_push: [:build, :checksums]
183+
165184
desc "Push the gem to rubygems.org and the npm package to npmjs.com"
166-
task push: FRAMEWORKS.map { |f| "#{f}:push" } + ["rails:push"]
185+
task push: [:pre_push] + FRAMEWORKS.map { |f| "#{f}:push" } + ["rails:push"]
167186
end
168187

169188
def pre_release?

0 commit comments

Comments
 (0)