GitHub Actionsとは?ネットワーク自動化の特徴と使用例を徹底解説!

GitHub Actionsは、GitHubが提供するソフトウェア開発におけるワークフローを自動化させるためのサービスです。この記事では、GitHub Actionsの特徴や注意点、実行環境などについて解説します。GitHub Actionsについて、学びたい方は是非とも参考にしてください。

GitHub Actionsとは

GitHub Actionsは、GitHub上のpush(ファイルの変更履歴をアップロード)などの操作をトリガーとして、事前に定義しておいた処理を実行できます。
以前はシステム開発で自動テストや自動ビルドを行うには、外部サービスとの連携が必要でした。GitHub Actionsがリリースされたことで、自動テストや自動ビルドがGitHubだけで実現できるようになりました。ビルド、テスト、デプロイなどのCI/CD関連のワークフローが自動化できるため、多くのエンジニアから注目されています。

\文字より動画で学びたいあなたへ/

Udemyで講座を探す >

CI/CDとは

CIとは継続的インテグレーション(Continuous Integration)のことであり、ソフトウェアのビルドやテストを自動化して、短期間で品質向上や開発の効率化を目指す手法です。

CDとは、継続的デリバリー(Continuous Delivery)または継続的デプロイ(Continuous Deployment)のことを指します。CDはCIの要素に加えて、リリースやデプロイを自動化する手法です。これにより、開発者からの変更をリポジトリ (ファイルや変更履歴を保存する場所) から自動的にリリースして、ユーザーがすぐに使用できるようになります。これらCI/CD関連のワークフローを、GitHub ActionsはGitHub上で自動化できるようにします。

GitHub Actionsの特徴

GitHub Actionsは、既存のCI/CDツールと同じくリポジトリに対しての操作や、予約した時刻に事前に定義した処理を実行できます。これらは、GitHubが提供するサーバー上にある仮想マシンで実行ができるため、ユーザーがサーバーを準備しなくてよいというメリットがあります。

GitHub Actionsの使用例

GitHub Actionsの使用例としては、次のようなものが考えられます。

  • JavaScriptのLintをPush時に実行する
  • 特定のGitHub Projectsに、新規作成したIssueを自動的に追加する
  • ソフトウェアのリリース時に、リリース情報をSendGrid経由でメール送信する

グループに新規メンバーを追加したとき、報告用のIssueを作成するこれらの処理は、既存のCI/CDツールでも可能です。しかし、GitHub Actionsであれば、GitHubとスムーズに連携できるメリットがあります。

ActionとWorkflow

実行したい処理と、その処理を実行するための条件定義の事をWorkflow(ワークフロー)と、GitHub Actionsでは呼びます。

Workflowは、リポジトリ内の.github/workflowsディレクトリに保存することで実行可能になります。Workflowでは、シェル(Unix OSのユーザーインターフェース)経由で任意のコマンドを実行できます。また、複数のActionを組み合わせてWorkflowを構築することも可能です。

GitHub Actionsの一覧

Action名 説明
setup-node Node.js環境のセットアップをする
github-script Workflowのコンテキスト内で、GitHub APIを実行する
labeler GitHub上のラベル管理ファイル「.github/labeler.yml」を作成する
upload-artifact 「artifact」として指定したファイルを保存する
cache キャッシュして処理を高速化する
checkout ファイルをリポジトリからチェックアウトする
setup-java Java環境をセットアップする
setup-python Python環境をセットアップする
setup-ruby Ruby環境をセットアップする
setup-go Go環境をセットアップする
setup-haskell Haskell環境のセットアップ
create-release リリースを作成する
download-artifact artifactとして保存されるファイルのダウンロード
stale イシューやプルリクエストのうち、一定期間活動のないものを閉じる処理をする
setup-dotnet NET core環境をセットアップする
setup-elixir Elixir環境をセットアップする
first-interaction プルリクエストやイシューをはじめて登録したユーザーに、メッセージを表示する

 

上記Action以外にも、他のユーザーが作成したActionもあります。ユーザーが作成したActionは、マーケットプレイスで提供されています。

※ Github マーケットプレイスは下記URLよりご確認ください。
https://github.com/marketplace

GitHubとの連携

既存のCI/CDツールでは、push以外のイベントを検知するには、手間がかかります。GitHub ActionsはGitHubと連携しているため、GitHub上のさまざまなイベントが検知できます。
またActionを実行する際に、デフォルトでリポジトリのデータが搭載されているため、コードのテストやビルドに必要なソースコードのダウンロードをする必要がありません。

またリポジトリごとにGitHub Tokenを発行し、自動的に環境変数に登録されることも特徴のひとつです。これにより、Tokenをコピーやペーストすることなく、Action内でGitHub APIを安全に実行できます。

GitHub Actionsの注意点

GitHub Actionsは自由度が高く、GitHubが提供するサーバー上で処理を実行できます。しかし、GitHub Actionsには、以下のような制約があります。

  • GitHub利用規約の範囲内で、使用をすること
  • 同時実行可能なワークフローは、1リポジトリに対して20まで
  • ワークフローで実行できるジョブの実行時間は、最大6時間まで

 

1つのアカウントで同時実行できるWindows・Linux環境内で実行されるジョブの最大数

プラン ジョブの最大数
Free 20
Pro 40
Team 60
Enterprise 180

 

1つのアカウントで同時実行できるmacOS環境内で実行されるジョブの最大数

プラン ジョブの最大数
Free 5
Pro 5
Team 5
Enterprise 50

 

プライベートリポジトリにおけるストレージと実行時間上限

プラン 最大ストレージ容量 月あたり
Free 500MB 2000分
Pro 1GB 3000分
Team 2GB 10000分
Enterprise 50GB 50000分

※追加料金を支払うことで、ストレージ容量と実行時間上限が拡張されます。詳しくは公式サイトをご確認ください。

GitHub Actionsの仮想マシンの実行環境

GitHub Actionsの仮想マシンの実行環境は以下のようになります。

Windows・Linux
CPU:2コア (x86_64)
RAM:7GB
SSD:14GB

MacOS
CPU:3コア (x86_64)
RAM:14GB
SSD:14GBのスペース

上記のように仮想マシンとして使用できるOSは、Linux(Ubuntu)・Windows、macOSです。OS以外にも、主要ライブラリ・各種ランタイム・コンパイラなどのソフトウェア開発環境も標準インストールされています。そのため、一般的なサーバーでほとんどの処理は実行可能となります。

この記事では、GitHub Actionsでできることや特徴・制約などの注意点・仮想マシンの実行環境について解説しました。GitHub Actionsは、自動テストや自動ビルドがGitHubだけで実現できるため、システム開発において便利なツールです。この機会に、GitHub Actionsを活用して開発の効率化を目指しましょう。