GitHub Actionsは、ソフトウェア開発の進化の触媒
現代のソフトウェア開発は、ある課題を抱えている。あまりに多くのツールやソフトウェアが世の中にあふれていることだ。コンピューターの登場以来、それらの数は指数関数的に増加してきた。その結果、私たちが構築すべき開発ワークフローは複雑になりすぎてしまったのだ。
「その課題を解決するために、GitHub Actionsを開発しました。私たちは、ソフトウェア開発におけるワークフローは各ツールやフローがモジュール化されており、コンポーネントの自由な組み替えや再利用が可能であるべきだと考えています」
GitHub Actionsを使用すれば、ワークフローのコードをActionと呼ばれるコンテナに格納し、それらを相互に連結させて実行させることが可能だ。世界の誰かが作ったActionを再利用することも、自分が作ったActionを世界中に公開することもできる。ワークフローにフックできるイベントとして、check_runやdeployment、releaseなど26種類が用意されている。
「GitHub Actionsは、コンテナ技術をベースにしてWorkflow as Codeを目指すものです。私たちはこの機能を、ソフトウェア開発の新たな進化の触媒になるものだと信じています」
GitHub Actionsの概要説明の後、池田氏は動画によるデモを交えて機能の解説を行った。題材は、開発者にはおなじみの「Hello World」を表示するActionとワークフローである。手順は以下の5ステップに分かれている。
- Actionを格納するリポジトリを作成
- ActionをDockerfileとして定義
- エントリーポイントとなるシェルスクリプトを定義
- 定義したActionを呼び出すワークフローを定義
- 実行
「まずはリポジトリを用意します。まだワークフローファイルも存在しない状態なので、この中に自分で作ったActionを格納していきます。Hello World ActionをDockerfileとして定義しましょう」
Dockerfileには、さまざまなメタ情報を設定可能だ。Actionの名前やディスクリプション、リポジトリのURIやホームページのURI、メンテナ情報のほか、画面に表示される際のアイコンや色なども指定できる。
さらに、Dockerfile内に「ADD」という設定を記載することで、リポジトリ内のシェルスクリプトを追加できる。また「ENTRYPOINT」という設定を行うことで、そのシェルスクリプトをエントリーポイントとして定義可能だ。Actionの用意ができたら、次はワークフロー作成を行う。
池田氏は、GitHubの画面上から操作を行うことで、「Hello World」のワークフローが簡単に作れること、そして、編集した各ファイルのレビューやmasterブランチへの取りこみもPull Requestをベースにして行えるため、GitHubに慣れた開発者には非常にわかりやすい開発フローになることを解説した。
詳細情報として、現状のGitHub Actionsが持つ仕様や制限について以下のとおり言及された。
- ワークフローの実行時間は最大で58分
- ワークフロー1つにつきアクションは100個まで呼び出し可能
- 1ファイル内に複数ワークフローを定義可能だが、並列実行されるのは1リポジトリあたり2つまで
- アクションは他のワークフローをトリガーできない
- APIコールは1リポジトリあたりトータルで1時間1000回まで
- プロダクションのSecretを格納しないこと(ベータ版のうちはログにそのまま出力されてしまう)
- ActionはDockerfileなのでDockerでできることはたいていできるが、制限あり
現在ベータ版のため、今後変わっていく可能性は大いにあるという。