GitHub Actions の紹介と基本的な使い方

GitHub Actions とは? ワークフロー自動化を実現する機能
GitHub Actions は、あらかじめ定義した処理と条件の組み合わせ、つまりワークフローを自動化する GitHub 公式機能である。
GitHub Actions では、リポジトリへの push などの処理をトリガーとして、専用 Workflow に定義した処理を自動で実行する。
GitHub Actions を使うと、開発で注目されている CI/CD を実現できる。
GitHub Actions を構成する主な要素と機能
GitHub Actions は複数の構成要素と機能で構成されている。その中でも主なものは次のとおりである。
Action | あらかじめ定義された作業を実行するカスタムアプリケーション
Action は、あらかじめ定義された作業を実行する GitHub Actions 専用のカスタムアプリケーションである。既存の Action は GitHub Marketplace で探すことができ、自分で Action を作成することもできる。
主な Action
実際にどのような Action があるのか、主な例を見てみよう。
Action の例
| Action | 説明 |
|---|---|
| checkout | リポジトリからファイルをチェックアウトする。 |
| upload-artifact | 任意のファイルを成果物として保存する。 |
| download-artifact | 成果物として保存されているファイルをダウンロードする。 |
| cache | 依存関係やビルド結果をキャッシュして処理速度を上げる。 |
| github-script | GitHub API を通じて GitHub の各種機能にアクセスする。 |
| create-release | GitHub Release API を通じてリリースを作成する。 |
| stale | 一定期間使われていない Issue や Pull Request がある場合に警告したり閉じたりする。 |
| labeler | Pull Request にラベルを付与する。 |
| delete-package-versions | GitHub Packages からパッケージバージョンを削除する。 |
| setup-node | Node.js 環境を構築する。 |
| setup-python | Python 環境を構築する。 |
| setup-go | Go 環境を構築する。 |
| setup-dotnet | .NET CLI 環境を構築する。 |
| setup-java | Java 環境を構築する。 |
| toolkit | Action を簡単に作成するためのツールキットを利用できるようにする。 |
| javascript-action | JavaScript Action を作成する。 |
| typescript-action | TypeScript Action を作成する。 |
Workflow | 実行する処理とその条件をまとめたプロセス
Workflow は、実行する処理と、その処理を実行する条件をまとめたプロセスである。複数の Action を組み合わせて Workflow を作成することもできる。
Runner | ワークフローを実行するサーバー
GitHub では、Workflow を実行するサーバーまたは環境を Runner と呼ぶ。GitHub Actions を利用するときは、GitHub 公式が提供する仮想マシンを Runner として利用できる。自分で Runner を準備して使用することもできる。
Job | 同じ Runner で実行されるワークフローの段階
Job は、同じ Runner で実行されるワークフロー内の段階を意味する。Job はほかの Job との依存関係を設定することもできる。基本的に Job は、Job 間の依存関係がなければ並列で実行される。
GitHub Actions を使う利点
GitHub Actions 以外にも、CI/CD のような自動化を実現するツールは存在する。その中でも GitHub Actions の最大の利点は、GitHub が提供する仮想サーバーを利用できる点である。
GitHub Actions を使うと、ユーザーが自分でサーバーを準備する必要がない。また、仮想サーバーではなく物理サーバーを使う必要がある場合は、ユーザーが自分でサーバーを準備して GitHub Actions を使用することもできる。
さらに、GitHub 関連の処理の自動化は公式機能であるため、GitHub Actions を通じてスムーズに実装できる。これは、ほかのツールにはない GitHub Actions ならではの利点である。
GitHub Actions 利用時の注意点
GitHub Actions には、利用プランに応じて次のような機能制限がある。
| プラン | 最大同時 Job 数 | 最大同時 Job 数 (macOS) | 利用可能な時間制限 | 利用可能な保存容量 |
|---|---|---|---|---|
| Free | 20 | 5 | 2,000 分/月 | 500 MB |
| Pro | 40 | 5 | 3,000 分/月 | 1 GB |
| Team | 60 | 5 | 10,000 分/月 | 2 GB |
| Enterprise | 180 | 50 | 50,000 分/月 | 50 GB |
また、GitHub Actions は利用ポリシーの範囲内でのみ使用できる。GitHub の各プランと利用規約の詳細は、次の公式サイトで確認できる。
GitHub Actions の活用例
GitHub Actions はさまざまな用途に活用できる。以下に、参考になる利用例をいくつか紹介する。
- リリースノートやリリース Source などを自動生成して、ソフトウェアリリース作業を効率化する。
- Java や Python などの環境を自動的に構築する。
- Pull Request の内容などを Slack やメールで自動通知する。
- push のたびに JavaScript Lint を実行する。
ここで紹介したもの以外にも、GitHub Actions のさまざまな活用例を考えられる。
GitHub Actions の基本的な使用例
ここでは GitHub Actions を実際に設定しながら、基本的な使い方を確認する。
Git のインストール、GitHub アカウント作成など、GitHub 関連の初期設定は完了しているものとする。
まず、GitHub 管理画面で GitHub Actions を設定する専用リポジトリを作成する。GitHub 管理画面で ‘New’ をクリックする。

リポジトリ作成画面が表示される。リポジトリ名(‘Repository name’)に任意の名前を入力し、‘Create repository’ をクリックする。

Git bash などで次のコマンドを実行し、作成したリポジトリをローカルに clone する。
HTTP:
git clone https://github.com/[ユーザー名]/[リポジトリ名].git
SSH:
git clone git@github.com:[ユーザー名]/[リポジトリ名].git
ユーザー名が devkuma、リポジトリ名が test の場合、次のようなコマンドになる。
HTTP:
git clone https://github.com/user/git-actions.git
SSH:
git clone git@github.com:devkuma/git-actions.git
% git clone git@github.com:devkuma/git-actions.git
Cloning into 'git-actions'...
warning: You appear to have cloned an empty repository.
clone したローカルリポジトリ内に .github/workflows というフォルダを作成し、そのフォルダ内に actions-test.yml というファイルを 1 つ作成する。この actions-test.yml が GitHub Actions のワークフローになる。
% cd git-actions
% mkdir -p .github/workflows
% cd .github/workflows
% touch actions-test.yml
GitHub Actions のワークフローは
.github/workflowsというディレクトリに保存する。 workflow は YAML 形式(.yml)で作成する。
次に、任意のテキストエディタで actions-test.yml を次のように編集する。
name: actions-test
on: [push]
jobs:
check-bats-version:
runs-on: ubuntu-latest
steps:
- run: echo "Hello World"
このファイルの意味は次のとおりである。
| コード | 説明 |
|---|---|
name: actions-test |
actions-test という名前のワークフローを作成する。 |
on: [push] |
push が実行されたとき。 |
runs-on: ubuntu-latest |
最新版の Ubuntu 環境を準備する。 |
run: echo "Hello World" |
echo "Hello World" コマンドを実行する。 |
これで GitHub Actions のワークフローファイルが作成された。ファイル作成後、次の順序でファイル追加、コミット、push を実行する。
git add .
git commit -m "[Add] actions test"
git push
この push が実行されると workflow が実行される。
実際にワークフローが実行されるか確認してみよう。GitHub 管理画面で先ほど作成したリポジトリへ移動し、‘Actions’ メニューを開く。

GitHub Actions の管理画面が表示される。次のように git commit で指定したコメント名で GitHub Actions のログが記録されているため、このログをクリックして確認する。

次に、次の順序でクリックする。


次のような画面が表示され、workflow で指定したとおりに Run echo "Hello world!" というコマンドが実行されたことを確認できる。

今回紹介した例から分かるように、GitHub Actions の workflow では Ubuntu 環境を準備し、Ubuntu 内でさまざまなコマンドを実行することもできる。
まとめ
GitHub Actions を使うと、Push などの操作をトリガーとして指定した作業を自動実行でき、GitHub Actions を通じて CI/CD も実現できる。
GitHub Actions では GitHub が提供する仮想サーバーを利用できるため、ユーザーが実行環境を別途準備して運用する必要がない。また、GitHub 公式機能であるため GitHub との連携が容易である点も、ほかの CI/CD ツールにはない利点である。
GitHub Actions は、リリースノートの自動生成、push のたびに JavaScript Lint を自動実行するなど、さまざまな用途で便利に使える。一方で、Free プランでは同時実行できる最大 Job 数が 20 個までに制限されている点、GitHub Actions を使用するときは公式サイトにまとめられた利用規約を遵守する必要がある点にも注意する。