1
1

GitHub Actionsをローカル実行できるactについて簡易解説

Last updated at Posted at 2024-09-15

概要

Github Actionを構築する際のymlファイル作成の段階で修正の都度、特定のブランチに対してトリガーを発動させて、対象のサーバーに対してデプロイを繰り返して試行錯誤したりしていないだろうか?

その作業がローカルでできてしまうといういうのがactの最大のメリットだと考える。

もちろん、これから解説するactだけでなく、
gfコマンドのインストールなども必要だったり、Githubの認証が場合によってはSSOで少しめんどかったり(所感)などはあるかもしれないが、
上記は割愛したい。

また、自身はGithub Actionに関しては精通しているわけではなく、
学習した防備録として記載する形なので、そちらも了承をお願いしたい。

では本編を始めたいと思う。

actとは

GitHub Actionsのワークフローファイル(*.yml)をローカル環境で実行し、GitHub Actionsの動作をテストするツールである。

作成したワークフローをローカルで実行できるツールというところがポイント。

GitHub ActionsのCI/CDパイプラインをローカル環境でテストするための便利なツールであり、次のような特徴とメリットがある。

Dockerコンテナを利用して、実際のGitHub Actionsの実行環境をローカルに再現する。これにより、CI/CDパイプラインの修正やデバッグを迅速に行うことができる。

→検証環境などに直に試すということがなくなるので、時間の短縮や予期せぬ不都合を回避しやすい。

メリット

迅速なフィードバック
ワークフローの変更や修正をローカルで即座にテストできるため、GitHubにプッシュする前に問題を特定しやすくなる。

コスト削減
GitHub Actionsの実行が頻繁に発生する場合、ローカルでのテストにより、GitHubの実行リソースやランナーの利用コストを削減できる。

デバッグの容易さ
ローカル環境でのテストは、ネットワークの遅延やGitHub Actionsの制約に影響されず、問題のトラブルシューティングが行いやすい。

環境の再現性
Dockerを使用するため、GitHub Actionsの実行環境をローカルで再現し、一貫性のあるテストが可能である。

導入方法

actのインストール

actは、さまざまなプラットフォーム(Linux、macOS、Windows)で利用可能である。以下の手順でインストールできる。

macOS / Linux

Homebrewを使ってインストールする場合:

brew install act

Windows

Chocolateyを使ってインストールする場合:

choco install act-cli

その他の方法

GitHubのリリースページからバイナリをダウンロードし、
パスを通すことでもインストールできる。
リリースページのURLは、GitHub Releasesで確認できる。

リポジトリの設定

actを使うには、GitHub Actionsのワークフローファイルがリポジトリに存在する必要がある。

リポジトリのルートに.github/workflowsディレクトリがあり、その中に[*.yml]ファイルが含まれていることを確認する。

実際、新規で作成する場合は上記のディレクトリ下の
【独自名称可】.yml
を作成して、CI/DCを構築していくことになる。

ローカル実行

ワークフローをローカルで実行するには、以下のコマンドを使用する:

act

特定のイベントやジョブを指定して実行することもできる:

act push
act -j <job_id>

オプションの設定

actには、さまざまなオプションがある。
例えば、Dockerのコンテナイメージを指定したり、
GitHubのイベントのシミュレーションを行ったりすることができる。

詳細なオプションは

act --help

で確認できる。

まとめ

actを導入することで、GitHub Actionsのワークフローをローカルで効率よくテストできるようになる。
これにより、CI/CDパイプラインの品質を向上させることができる。

また、実験的に簡単に動かすことができるリポジトリは下記で、
使用感などをまずは体験してみるといいかもしれない。

また、今回はactの紹介ということで、github/workflowsディレクトリ内の
[*.yml]ファイルの書き方などには全く触れていないが、

むしろCI/CDとしてのGitHub Actionの業務として一番面白いところは、
そこだと思うので、自身でサービスをデプロイしていてかつリリース作業を手動で行っているという人は、

是非取り入れて自動化してみるのはいかがだろか?

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1