GitHub Universe GitHub Actions には、OpenID に基づく新しいセキュリティと、再利用可能なワークフローを作成する機能があり、Universe イベントでのプレゼンテーションによると、使用量は前年比でほぼ 2 倍になっています。
Actionsサービスは3年前のUniverse 2018でプレビューされ、1年後に一般公開されました。これはGitHubプラットフォームに初めて自動化を組み込んだ、非常に重要な機能でした(ただし、ライバルのGitLabは既にDevOpsの自動化を提供していました)。
ランナーと呼ばれるコンピューティングリソースが必要です。ランナーはGitHubホスト型またはセルフホスト型です。アクションはランナー上で実行されるコマンドです。ジョブは一連のステップで、アクションまたはシェルコマンドとして使用できます。ワークフローは、依存関係に基づいて並列または順次実行できるジョブのセットです。例えば、ビルドとテストが成功しなければデプロイは実行されません。アクションを使用すると、継続的インテグレーションや継続的デリバリーを比較的簡単に設定できます。特に、アクションはクラウドホスト型であり、無料プランでも月間2,000分の自動化時間が提供され、パブリックリポジトリの場合はそれ以上の時間も利用できるからです。
アクションをデプロイしたり、テスト目的でデータベースなどのリソースにアクセスしたりするには、それらのリソースに対して認証を行う必要があります。一般的なアプローチとしては、暗号化された環境変数を使用することがありますが、シークレットが誤ってプレーンテキストで記録されるなどの危険性や、認証情報が古くなって更新が必要になるという問題があります。
解決策はOIDC(OpenID Connect)トークンです。これは、クラウドプロバイダーにワンタイムトークンを要求することを意味します。プロバイダーには、AWS、Azure、Google Cloud Platform、HashiCorp Vaultなどがあります。ワークフロー内のステップまたはアクションでこのトークンを要求できます。OIDCの使用方法については、上記の4つのプロバイダー向けの具体的なガイドとともに、こちらで説明しています。
GitHub Actions の OpenID Connect アーキテクチャ
OIDCのもう一つの利点は、トークン発行の条件を設定することで、権限をより細かく設定できることです。UniverseのプレゼンテーションでプロダクトマネージャーのJennifer Schelkopf氏が示した例として、ステージングジョブは本番環境へのアクセスを必要とせずに設定できるため、本番環境へのデプロイを2つ目の「本番環境へのデプロイ」ジョブに割り当てておくことができます。
- 今年もGitHubが新機能やちょっと新しい機能を発表する時期がやってきました。
- GitHub Codespacesはちょっと閉鎖的すぎる?GitpodがOpenVSCode Serverをオープン化、Microsoftのコントロールから逃れる
- GitLab 14.2では、macOSの「ビルドクラウド」クローズドベータ版とGitpodサポートの改善など、約50の新機能が追加されました。
- 15ヶ月のプレビュー期間を経て、GitHubはCodespacesをリリースしました。おそらくActions以来最も派手な新機能でしょう。
Actionsのもう一つの新機能は、現在ベータ版である再利用可能なワークフローです。これは、アクションのusesステートメントを使用するのと同じくらい簡単に、あるワークフローから別のワークフローを呼び出すことができるようにするためのものです。再利用可能なワークフローは、呼び出し元のワークフローからシークレットを含む入力を受け取るworkflow_callイベントを介して、この方法での呼び出しを明示的にサポートする必要があります。これにより、「クリップボード継承」の使用頻度が少なくなります。
シンプルで再利用可能なワークフロー
ネスト機能(再利用可能なワークフローは別の再利用可能なワークフローを呼び出すことができない)など、いくつかの制限があります。環境変数は伝播されないため、入力として渡す必要があります。ベータ版では、呼び出し元のワークフローは呼び出されたワークフローの出力にアクセスできませんが、一般公開時には修正される予定です。ドキュメントはこちらです。
GitHub Actionsの利用量は、Universe 2020で報告された月間7,500万ジョブから、今回のイベントでは月間1億4,700万ジョブ以上に増加しました。さらに、GitHubマーケットプレイスにおけるアクション数は、1年前の6,200件から本稿執筆時点で10,431件に増加しています。クラウドサービスやツールを提供するベンダーは、利用の自動化を容易にするアクションを提供することでメリットを得られます。例えば、AWSのアクションは300件(ほとんどが非公式)、Azureのアクションは136件あります。SlackやTeamsの通知、セキュリティスキャン、そして多数のデプロイメントプラットフォーム向けのアクションも存在します。
Actionsには他に何が予定されているのでしょうか?まずはGitHubのロードマップをご覧ください。今後の予定がある程度分かります。予定されている嬉しい機能の一つは、ワークフローがホストされているリポジトリ以外の内部リポジトリからActionsを利用できる機能です。®