¿Cómo publico versiones en github a través de la command-line?

github tiene una function en su website que le permite marcar instantáneas particulares de su repository como versiones de lanzamiento del software.

captura de pantalla de la función del sitio web github

¿Hay alguna forma de que pueda hacer esto desde la command-line, sin tener que iniciar session y usar la interfaz? Me doy count de que la function no es parte de git, pero esperaba que haya algún tipo de API o solución que otras personas utilicen para automatizar el process.

Puede usar la API "Crear versión" de la API de GitHub V3 .

POST /repos/:owner/:repo/releases 

Ver, por ejemplo, este script de ruby ​​" create-release.rb " de Mathias Lafeldt ( mlafeldt ) :

 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 

Hay muchos proyectos que ofrecen esto:

E incluso puedes hacer esto directamente con curl directamente:

 OWNER= REPOSITORY= ACCESS_TOKEN= VERSION= curl --data '{"tag_name": "v$VERSION", "target_commitish": "master", "name": "v$VERSION", "body": "Release of version $VERSION", "draft": false, "prerelease": false}' \ https://api.github.com/repos/$OWNER/$REPOSITORY/releases?access_token=$ACCESS_TOKEN 

de https://www.barrykooij.com/create-github-releases-via-command-line/

Si quieres una respuesta con todas las funciones en stackoverflow: Liberar un artefacto de construcción en github