🐙

Check! GitHub Actions で壮大なワークフローを作りました

2020/12/25に公開

Prologue

Code Polaris Advent Calendar 2020 の締めに滑り込むための記事です!!!

今 23:12 です!🥳😇

GitHub Actions の可能性を探る旅

今回担当したのは、とあるリポジトリでリリースタグが打たれたら、別のリポジトリでコードの自動生成を行う、という自動化です。

こちらに、検証用に作ったフローたちがあります(作業用なので、見せられるほど整ってはいません)。本番のリポジトリに移植するにあたりもう少しブラッシュアップできたので、後ほどこの検証環境にも反映したいです。

https://github.com/dzeyelid/github-actions-playground

所感

かなり知見がたまったので、どんどん記事にしていきたい!とりあえず、雑感をつらつらと書き留めます。

利用したイベント契機は以下の通り。

それぞれのイベントでどんな情報が来るかの詳細はドキュメントにも全部は書かれていないので、都度出力して確認しては作りこむという繰り返しで、割と根気のいる作業ではありました。いろいろメモは取ったので、追って記事にしていきたいと思っています。

意外とよく利用したのが、シェルの中からアクションの出力を指定する echo "::set-output name={name}::{value}" 。エラーや警告としてログ出力してくれる echo "::error::<message>"echo "::warning::<message>" も便利です。

まだ改善の余地がありそうで研究したいのが、step や job の間のやりとり。今回は jobs.<job_id>.outputs をいくらか使いました。ベストプラクティスをみつけたい!

利用したアクションを紹介

以下のアクションはこれからも多用しそう!別途情報をまとめたいです。

アクション 説明
actions/checkout 定番。git リポジトリのチェックアウトをしてくれる。パラメータ reffetch-depthpersist-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