Как выпустить версии на GitHub через командную строку?

GitHub имеет на своем веб-сайте функцию feature, которая позволяет помечать определенные снимки вашего репозитория как продакшен версии программного обеспечения. Пример URL: https://github.com/github/orchestrator/releases

Есть ли способ, которым я могу сделать это из командной строки, без необходимости входить в систему и использовать интерфейс? Я понимаю, что эта функция не является частью git, но я надеялся, что есть какой-то api или решение, которое другие люди используют для автоматизации процесса.

Ответ 1

Есть много проектов, предлагающих это:

И вы можете сделать это непосредственно непосредственно с помощью curl:

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

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

Если вам нужен полный признак ответа на stackoverflow: Освобождение артефакта сборки на github

Ответ 2

Вы можете использовать "Создать выпуск" API GitHub V3 API.

POST /repos/:owner/:repo/releases

См., например, этот ruby ​​ script "create-release.rb "Матиас Лафельдт (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

Ответ 3

hub официальный инструмент GitHub CLI на основе Go

https://github.com/github/hub

Пакет Ubuntu, добавленный по состоянию на 19.04: https://packages.ubuntu.com/search?keywords=hub | https://github.com/github/hub/issues/718

sudo apt install hub

В противном случае для старой версии Ubuntu сначала установите Go. В Ubuntu: https://askubuntu.com/info/959932/installation-instructions-for-golang-1-9-into-ubuntu-16-04/1075726#1075726

Затем установите hub:

go get github.com/github/hub

После установки hub из репо:

hub release create -a prebuilt.zip -m 'release title' tag-name

этом:

  • запрашивает пароль в первый раз, а затем автоматически создает и хранит токен API локально
  • создает аннотированный тег на пульте с именем tag-name
  • создает релиз, связанный с этим тегом
  • загружает prebuilt.zip в виде вложения

Вы также можете предоставить свой существующий токен API с помощью переменной среды GITHUB_TOKEN.

Для других операций release см.:

hub release --help

Протестировано в hub de684cb613c47572cc9ec90d4fd73eef80aef09c.

Пример Python без каких-либо зависимостей

Если вы похожи на меня и не хотите устанавливать еще один язык:

Может кто-нибудь привести пример запросов Python о загрузке ресурса релиза в github?