Загрузите артефакт сборки в Github как выпуск в Jenkins

Я ищу способ загрузить артефакт сборки как Github Release в Jenkins как действие или издатель пост-сборки - похожее на Опубликовать более.

Это еще не поддерживается плагином Github для Jenkins (JENKINS-18598).

Я изучал плагин postbuild-task, но это, похоже, не поддерживает переменные среды (которые, как я полагаю, были бы полезны для предотвращения регистрации моего API в выводе сборки).

Кто-нибудь это сделал? Что было бы хорошим способом решить это с Дженкинсом? Загрузка через cURL или через клиент CLI (например, Go-based github-release).

Ответы

Ответ 1

Я решил это, используя инструмент github-release. Работает как очарование и очень легко.

  • Добавьте соответствующие параметры в сборку
  • Добавьте оболочку script к этапам создания сообщений
  • Введите этот код:
echo "Compressing artifacts into one file"
zip -r artifacts.zip artifacts_folder

echo "Exporting token and enterprise api to enable github-release tool"
export GITHUB_TOKEN=$$$$$$$$$$$$
export GITHUB_API=https://git.{your domain}.com/api/v3 # needed only for enterprise

echo "Deleting release from github before creating new one"
github-release delete --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME}

echo "Creating a new release in github"
github-release release --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${VERSION_NAME}"

echo "Uploading the artifacts into github"
github-release upload --user ${GITHUB_ORGANIZATION} --repo ${GITHUB_REPO} --tag ${VERSION_NAME} --name "${PROJECT_NAME}-${VERSION_NAME}.zip" --file artifacts.zip

Ответ 2

Я думаю, что ты в пути!

  • Добавить плагин для сборки post build для Jenkins
  • Используйте "Run script, только если все предыдущие шаги были успешными".
  • Я бы создал параметры Jenkins для имени выпуска, имени тега и т.д. и сохранил бы их вместе с вашими учетными данными в файл в качестве последнего шага процесса сборки (перед выполнением задачи пост-сборки).
  • Добавьте короткий script к шагу задания post build, который вызывает API Github:
  • Установите переменные среды из сохраненного файла и удалите его
  • CURL POST для https://developer.github.com/v3/repos/releases/#create-a-release (вы можете использовать плагин posten для создания Jenkings Groovy вместо плагина задачи post build и обращаться к переменным среды без сохранения их в файл, но это добавит столько сложностей, что не стоит использовать этот плагин.)
  • CURL POST для загрузки артефакта: https://developer.github.com/v3/repos/releases/#upload-a-release-asset