Skip to content

Instantly share code, notes, and snippets.

@mlafeldt
Last active March 13, 2017 01:45
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mlafeldt/6716465 to your computer and use it in GitHub Desktop.
Save mlafeldt/6716465 to your computer and use it in GitHub Desktop.
Accessing GitHub Releases API with Ruby -- http://developer.github.com/v3/repos/releases/
require "net/https"
require "json"
gh_token = ENV.fetch("GITHUB_TOKEN")
gh_user = ARGV.fetch(0)
gh_repo = ARGV.fetch(1)
release_name = ARGV.fetch(2)
release_desc = ARGV[3]
uri = URI("https://api.github.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new("/repos/#{gh_user}/#{gh_repo}/releases")
request["Accept"] = "application/vnd.github.manifold-preview"
request["Authorization"] = "token #{gh_token}"
request.body = {
"tag_name" => release_name,
"target_commitish" => "master",
"name" => release_name,
"body" => release_desc,
"draft" => false,
"prerelease" => false,
}.to_json
response = http.request(request)
abort response.body unless response.is_a?(Net::HTTPSuccess)
release = JSON.parse(response.body)
puts release
require "net/https"
require "json"
gh_user = ARGV.fetch(0)
gh_repo = ARGV.fetch(1)
uri = URI("https://api.github.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
headers = { "Accept" => "application/vnd.github.manifold-preview" }
response = http.request_get("/repos/#{gh_user}/#{gh_repo}/releases", headers)
abort response.body unless response.is_a?(Net::HTTPSuccess)
releases = JSON.parse(response.body)
releases.each do |r|
name = r["name"] || ""
puts name
puts "-" * name.length
puts
puts r["body"]
puts
end
@mlafeldt
Copy link
Author

Turns out Octokit already supports GitHub releases: http://rubydoc.info/gems/octokit/2.2.0/Octokit/Client/Releases

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment