SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

サポートエンジニアが解説するGitHub

GitHubの新機能「GitHub Actions」でワークフローを自動化しよう

サポートエンジニアが解説するGitHub 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

GitHub Actionsの特徴と使いみち

 少し話が逸れますが、GitHubは2017年にGitHub Appsという機能を発表しました。この機能によって、GitHubと連携して特定のタスクを自動化したりGitHubを便利にしてくれるアプリケーションを、ユーザが自由に作成したり配布したりできるようになりました。GitHubとの連携を実現するには様々な選択肢があるのですが、その中でも最も汎用性が高い方法です。

 では、GitHub ActionsはGitHub Appsとどのように違うのでしょうか。この章ではGitHub Actionsの特徴や、GitHub Appsとの使い分けついて説明します。

GitHub Actionsの使用例

 GitHub Appsは高機能なアプリケーションを作成するためのフレームワークとも言えますが、アプリケーションを作成したり運用するにはある程度の準備が必要になります。一方、GitHub ActionsはDockerファイルを書くだけで始められ、実行はGitHubのインフラ上で行う点が異なります。そのため、GitHub Appsと比べるとより小〜中規模のタスク実行に向いています。例えば

  1. 新しく作成されたIssueは全て自動的に特定のGitHub Projectsに追加したい
  2. プッシュの度にJavaScriptのLintを実行したい
  3. ソフトウェアをリリースしたら、リリースノートを作成してSendGrid経由でメールを送信したい
  4. Orgに新しいメンバーが追加されたら、HRのリポジトリにオンボーディング用のIssueを作成したい

といったタスクです。これらは一見、一般的なCI/CD(継続的インテグレーション/デリバリー)ツールでもできることに見えますが、GitHub Actionsは様々な点でこういったCIツールと異なります。主な違いをひとつずつ見ていきましょう。

ステップのモジュール化

 1つ目の違いは、ステップのモジュール化です。Workflowの各ステップ(=Action)は独立したDockerコンテナ内で実行されます。つまりActionは一つのモジュールとして分離でき、Action単位でGitHubに公開したり、公開されているActionを組み合わせてWorkflowを構築したりできます。

GitHubとの深い連携

 上述したように、WorkflowはGitHub上の様々なイベントをトリガーにできます。一般的なCIツールではpushイベント以外のイベント検知に一手間必要になる場合が多いのですが、GitHub Actionsではより簡単です。さらに、Action実行時のコンテナ内にはデフォルトでリポジトリのデータがマウントされているので、コードに対してテストやビルドを実行するためにソースコードをダウンロードする必要がありません。これも大きな違いです。

 また、リポジトリ毎に専用のGitHub Tokenが発行され、自動的に環境変数に登録される点も、GitHub Actionsの特徴です。これによって、Tokenの値をコピー&ペーストしたりすることなく、Action内でGitHub APIを安全かつ簡単に実行できます。

重い処理の実行には向いていない

 今後GitHub Actionsがどのように進化するか未知数ですが、現時点ではGitHub Actions用に提供されるコンテナ実行環境は下記の通りコンパクトで、重い処理の実行には向いていません。

 したがって、そういったケースでは従来のCI/CDツールが有効です。GitHub Actionsはそういったツールとも連携可能なので、自動化したい処理の内容に応じて、適切なWorkflowを構築するのが重要です。

Botツールとの違い

 GitHub上のイベントをきっかけとした自動化と言えば、ProbotなどのオープンソースのBotフレームワークの利用も考えられます。こういったBotツールとGitHub Actionsの大きな違いは、前述したようにそのBotを運用するサーバを用意しなくていいという点です。ActionはGitHubのインフラ上で実行されるので、インフラについて考える必要はありません。また、Probotの場合JavaScriptで処理を記述する必要がありますが、GitHub Actionsの場合はDockerコンテナなので、任意の言語で開発できる点も異なります。

 ただし、単にGitHub上のイベントに反応するだけではなく、なんらかのデータを永続的に蓄積したいなど、より高機能なアプリケーションを作成したい場合はGitHub ActionsではなくGitHub Appsが必要になるので、こうしたBotフレームワークを使ったほうが良いでしょう。

 つまり、GitHub Actionsは各種CI/CDツールやBotフレームワークと競合するものではなく、むしろ補完関係にあるのです。

次のページ
GitHub Actions実例1 - ブランチの自動削除

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
サポートエンジニアが解説するGitHub連載記事一覧
この記事の著者

水谷 翔(GitHub, Inc.)(ミズタニ ショウ)

 東京都生まれ。工学部建築学科出身。ウェブデザイナー、インフラエンジニア、AWSのデータセンターテクニシャン等のキャリアを経て2016年6月にGitHub, Inc.に入社。Enterprise Support Engineerとして、GitHubの企業向け製品GitHub Enterpriseを導入してい...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11450 2019/04/05 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング