Skip to content

Instantly share code, notes, and snippets.

@alexrudall
Last active June 17, 2024 16:15
Show Gist options
  • Save alexrudall/077a9c279a6541945af5124bdad784c0 to your computer and use it in GitHub Desktop.
Save alexrudall/077a9c279a6541945af5124bdad784c0 to your computer and use it in GitHub Desktop.
Rake task to release a new version of a private gem on KeyGen.sh

Ready-made rake task to release new version of private gem on KeyGen.sh!

How to: Just copy tasks.rake into your project, replace ai-engine with the name of your gem, and run!

  app:tasks:release[your-gem-name,0.1.1]
namespace :tasks do
desc "Build and release a new version of the gem like so: `rake 'app:tasks:release[ai-engine,0.1.1]'`"
task :release, [:name, :version] => :environment do |t, args|
name = args[:name]
version = args[:version]
# Build the gem
sh "gem build #{name}.gemspec --output=build/gems/#{name}-#{version}.gem"
sh "gem generate_index --directory build/"
# Tag the release in git
sh "git tag v#{version}"
sh "git push origin v#{version}"
# Create a new version in Keygen
sh "keygen new --version '#{version}'"
# Upload the gem and build files to Keygen
sh "keygen upload build/gems/#{name}-#{version}.gem --filename 'gems/#{name}-#{version}.gem' --release '#{version}'"
%w[
latest_specs.4.8
latest_specs.4.8.gz
prerelease_specs.4.8
prerelease_specs.4.8.gz
specs.4.8
specs.4.8.gz
].each do |file|
sh "keygen upload build/#{file} --filetype '' --release '#{version}'"
end
# Upload the quick gemspec to Keygen
sh "keygen upload build/quick/Marshal.4.8/#{name}-#{version}.gemspec.rz --filename 'quick/Marshal.4.8/#{name}-#{version}.gemspec.rz' --release '#{version}'"
# Publish the release in Keygen
sh "keygen publish --release '#{version}'"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment