GitHub Actionsが創る開発者の未来―― コンテナ技術がワークフローをOSS化する【デブサミ2019】
【14-A-2】GitHub Actionsはどのような未来を描くのか : コンテナ技術が開くワークフローのOSS化
2008年の創業以来、世界中のソフトウェア開発を支えてきたGitHub。同社は昨年10月に、コンテナ技術をベースとしたワークフロー自動化の機能「GitHub Actions」を発表した。現代のソフトウェア開発では、多くの開発者たちが開発ワークフローの構築や設定に多大なる時間を費やしている。そんな中、GitHub Actionsは、コンテナ技術をうまく利用することで、開発ワークフローの課題を解決することを目指している。GitHub Actionsによって、開発者の世界はどう変わっていくのか。GitHubソリューションズエンジニアの池田尚史氏が、デモを交えながら解説した。
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でできることはたいていできるが、制限あり
現在ベータ版のため、今後変わっていく可能性は大いにあるという。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア
