GitHub Actionsとは
GitHub Actionsベストプラティクス
GitHub Actions料金 Datadogによる可視化と削減のヒント
モノレポで GitHub Actions の jest coverage report を動かす
- 現在のソフトウェア開発における課題
ソフトウェア開発を取り巻く環境は日々変化し、様々なツールやライブラリが次々と登場する時代がやってきました。これまで人が行っていた作業やハードウェアが実行していたタスクは、どんどんソフトウェアに置き換えられ、我々はソフトウェアに覆われた世界に向かって加速していま す。これは喜ばしいことですが、一方で新しいツールができることや、それらを正しく連携させるための設定はどんどん複雑化し、本来の目的だったソフトウェア開発のために十分な時間を取れないといったケースが増えています。 GitHubの利用形態について分析すると、全ユーザの約60%がリポジトリと何らかの外部ツールやサービスを連携させている、という結果がわかっていました。そこでGitHubでは、ソフトウェア開発のプラットフォームとしてこの問題を解決し、開発者の体験をより良いものにするにはどうしたらいいか考え、2018年10月にGitHub Actionsを発表しました。 ソフトウェアのソースコードを一定の品質に保ちつつ速いサイクルで開発・デプロイするために、現代ではこれだけ多様な技術が使われるようになりました。テスト、ビルド、デプロイのパターンだけでも多くの選択肢があり、その他のツールの利用も含めると組み合わせは無限にあります。苦労してプロジェクトに最適な組み合わせを見つけ、ワークフローを作り上げたとしても、今まではそれをコードとして記述するスタンダードな方法がなかったので、GitHub上で共有したり再利用することができないという問題がありました。
ジョブサマリー
GitHub Actionsでジョブサマリー機能が利用可能になり、各ジョブによって生成される実行サマリーにカスタムMarkdownコンテンツを出力できるようになった。
dependabot.yml
GitHub actionsまとめる
GitHub ActionsのTipsやベストプラクティスを淡々と記録する
GitHub Appsトークン解体新書:GitHub ActionsからPATを駆逐する技術
GitHub ActionsからIAMロールを利用する。
Actions secretsはGitHub側で暗号化されていますが、アクセスキーに紐づくAWS IAM(Identity and AccessManagement)ポリシーも必要最低限の権限付与に留めることが重要。 しかし、特定のAWS IAMユーザーに紐づく固定のアクセスキーをGitHub Actionsのようなサービスに設定する運用にはまだ懸念が残る、。 、GitHubActionsでサポートされているOpenIDConnectを使ったしくみを組み合わせることで、AWS IAM Roleから一時的なアクセスキーを取得できるようになります。 以下の例では、もともとaws accesskey idとaws secret accesskeyを設定していたところがrole to assumeに変わっています。このようにGitHubActionsに固定のアクセスキーを設定する必要がなくなり、よりセキュアに運用できます。
GitHub actions debug
この記述で対応可能
- name: Debug
if: ${{ always() }}
uses: mxschmitt/action-tmate@v3
GitHub Actions 料金
※前提としてプライベートリポジトリが料金かかる。パブリックは無料。
OSによって料金が変わる。
Linuxは1分あたり0.008ドルと安価
Windowsは0.016ドル(2倍)
macOSは0.08ドル(10倍)という価格
GitHub Actions実行単位
3つの実行単位が存在する。
- workflow
- Job(1つのworkflow複数指定可能)
- Step
高速化
CI/CDのビルドでは、リポジトリが依存するパッケージのダウンロードが原因でビルド時間が長くなってしまうことがある。 理由として、近年のCI/CDではビルドごとに完全にクリーンな実行環境が用意され、前回のビルドでダウンロードしたファイルが持ち越されないため。 このため、CI/CDが提供するキャッシュ機能を用いて、異なるビルド間でダウンロードしたパッケージを使い回して高速化することがよくある。 GitHub Actionsでもキャッシュ機能が提供されている。
Action内ではwarnでは止まらない
GitHub Actionsの処理では警告(warn)はsuccessとして通るので注意。