Created
July 5, 2017 21:24
-
-
Save valeriomazzeo/5491aee76f758f7352e2e6611ce87ec1 to your computer and use it in GitHub Desktop.
Creates or update a GitHub release for the given tag name
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'optparse' | |
require 'octokit' | |
options = {} | |
OptionParser.new do |opt| | |
opt.on('-s', '--secret SECRET', 'GitHub access token') { |o| options[:secret] = o } | |
opt.on('-r', '--repo-slug REPO_SLUG', 'Repo slug. i.e.: apple/swift') { |o| options[:repo_slug] = o } | |
opt.on('-c', '--changelog-file CHANGELOG_FILE', 'Changelog path') { |o| options[:changelog_file] = o } | |
opt.on('-t', '--tag TAG', 'Tag name') { |o| options[:tag_name] = o } | |
end.parse! | |
raise OptionParser::MissingArgument if options[:secret].nil? | |
raise OptionParser::MissingArgument if options[:repo_slug].nil? | |
raise OptionParser::MissingArgument if options[:changelog_file].nil? | |
raise OptionParser::MissingArgument if options[:tag_name].nil? | |
client = Octokit::Client.new(:access_token => options[:secret]) | |
user = client.user | |
user.login | |
unless client.scopes.include? 'public_repo' or client.scopes.include? 'repo' | |
raise Error, "Insufficient permissions. Make sure your token contains the repo or public_repo scope." | |
end | |
puts "Logged in as #{user.name}" | |
puts "Deploying to repo: #{options[:repo_slug]}" | |
tag_matched = false | |
release_url = nil | |
releases = client.releases(options[:repo_slug]) | |
body = File.open(options[:changelog_file], "rb").read | |
releases.each do |release| | |
if release.tag_name == options[:tag_name] | |
release_url = release.rels[:self].href | |
tag_matched = true | |
end | |
end | |
# if tag has been pushed directly to git, create a github release | |
if tag_matched == false | |
client.create_release(options[:repo_slug], options[:tag_name], { :name => options[:tag_name], :body => body }) | |
else | |
client.update_release(release_url, { :name => options[:tag_name], :body => body }) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@hobbyquaker it looks like it could be an issue with that specific version of octokit and faraday.
I use bundler and in my
Gemfile
I don't installfaraday
manually.Instead - I only install the latest version of
gem 'octokit'
.In
.travis.yml
try replacing this:with this: