Как выпустить версии на 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?