web-dev-qa-db-ja.com

JenkinsのリリースとしてビルドアーティファクトをGithubにアップロードする

ビルドアーティファクトをJenkinsでビルド後のアクションまたはパブリッシャーとして Github Release としてアップロードする方法を探しています- Publish Over と同様です。

これは、JenkinsのGithubプラグイン( JENKINS-18598 )ではまだサポートされていません。

私は postbuild-task プラグインを調査してきましたが、これは環境変数をサポートしていないようです(ビルド出力でのAPIトークンのロギングを防ぐのに役立つと思います)。

まだ誰かがこれをしましたか?ジェンキンスでこれを解決する良い方法は何でしょうか? cURLまたはCLIクライアントを介してアップロードする(例:Goベースの github-release )。

26
StephenKing

github-release ツールを使用して解決しました。魅力のように機能し、非常に簡単です。

  1. 関連するパラメータをビルドに追加します
  2. ビルド後のステップにシェルスクリプトを追加する
  3. このコードを入力してください:
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
27
Asaf Shveki

順調だと思います!

  1. ビルド後のタスクプラグインをJenkinsに追加する
  2. 「前のステップがすべて成功した場合にのみスクリプトを実行する」オプションを使用する
  3. リリース名、タグ名などのJenkinsパラメータを作成し、それらを資格情報とともにファイルにビルドプロセスの最後のステップとして(ビルド後のタスク実行前に)保存します。
  4. ビルド後のタスクステップに、Github APIを呼び出す短いスクリプトを追加します。
  5. 保存したファイルから環境変数を設定して削除します
  6. CURL POST for https://developer.github.com/v3/repos/releases/#create-a-release (Jenkings Groovyポストビルドを使用できますビルド後のタスクプラグインの代わりにプラグインを使用し、ファイルに保存せずに環境変数にアクセスしますが、非常に複雑になるため、そのプラグインを使用する価値はありません。
  7. CURL POSTアーティファクトをアップロードするには: https://developer.github.com/v3/repos/releases/#upload-a-release-asset
13
Andrew