🐙
Check! GitHub Actions で壮大なワークフローを作りました
Prologue
Code Polaris Advent Calendar 2020 の締めに滑り込むための記事です!!!
今 23:12 です!🥳😇
GitHub Actions の可能性を探る旅
今回担当したのは、とあるリポジトリでリリースタグが打たれたら、別のリポジトリでコードの自動生成を行う、という自動化です。
こちらに、検証用に作ったフローたちがあります(作業用なので、見せられるほど整ってはいません)。本番のリポジトリに移植するにあたりもう少しブラッシュアップできたので、後ほどこの検証環境にも反映したいです。
所感
かなり知見がたまったので、どんどん記事にしていきたい!とりあえず、雑感をつらつらと書き留めます。
利用したイベント契機は以下の通り。
それぞれのイベントでどんな情報が来るかの詳細はドキュメントにも全部は書かれていないので、都度出力して確認しては作りこむという繰り返しで、割と根気のいる作業ではありました。いろいろメモは取ったので、追って記事にしていきたいと思っています。
意外とよく利用したのが、シェルの中からアクションの出力を指定する echo "::set-output name={name}::{value}"
。エラーや警告としてログ出力してくれる echo "::error::<message>"
や echo "::warning::<message>"
も便利です。
まだ改善の余地がありそうで研究したいのが、step や job の間のやりとり。今回は jobs.<job_id>.outputs
をいくらか使いました。ベストプラクティスをみつけたい!
利用したアクションを紹介
以下のアクションはこれからも多用しそう!別途情報をまとめたいです。
アクション | 説明 |
---|---|
actions/checkout | 定番。git リポジトリのチェックアウトをしてくれる。パラメータ ref や fetch-depth 、persist-credentials を使いこなすとよさそう |
actions/create-release | リリースを作ってくれる |
actions/github-script | JavaScript でいろいろ書ける。ocktokit/rest.js を利用して GitHub REST API を実行したりできる |
octokit/request-action | GitHub の REST API を実行できる |
christian-draeger/increment-semantic-version | Semantic version のルールでバージョンをインクリメントしてくれる |
peter-evans/create-pull-request | プルリクエストを作ってくれる |
ad-m/github-push-action |
git push してくれる |
Epilogue
時間と体力と頭の限界が来たのでいったんここまで…。おそらく後で加筆します!すみません!
よいお年を!🎍
Discussion