Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

GitHub Actionsが創る開発者の未来―― コンテナ技術がワークフローをOSS化する【デブサミ2019】

【14-A-2】GitHub Actionsはどのような未来を描くのか : コンテナ技術が開くワークフローのOSS化

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/03/07 11:00

 2008年の創業以来、世界中のソフトウェア開発を支えてきたGitHub。同社は昨年10月に、コンテナ技術をベースとしたワークフロー自動化の機能「GitHub Actions」を発表した。現代のソフトウェア開発では、多くの開発者たちが開発ワークフローの構築や設定に多大なる時間を費やしている。そんな中、GitHub Actionsは、コンテナ技術をうまく利用することで、開発ワークフローの課題を解決することを目指している。GitHub Actionsによって、開発者の世界はどう変わっていくのか。GitHubソリューションズエンジニアの池田尚史氏が、デモを交えながら解説した。

目次
GitHubソリューションズエンジニア 池田尚史氏
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ステップに分かれている。

  1. Actionを格納するリポジトリを作成
  2. ActionをDockerfileとして定義
  3. エントリーポイントとなるシェルスクリプトを定義
  4. 定義したActionを呼び出すワークフローを定義
  5. 実行

 「まずはリポジトリを用意します。まだワークフローファイルも存在しない状態なので、この中に自分で作ったActionを格納していきます。Hello World ActionをDockerfileとして定義しましょう」

「Hello World」を表示するためのAction
「Hello World」を表示するためのAction

 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でできることはたいていできるが、制限あり

 現在ベータ版のため、今後変わっていく可能性は大いにあるという。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:【デブサミ2019】セッションレポート

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5