【GitHubActions】ローカル実行する方法
GitHub Actions: ワークフローをローカルで実行する方法
はじめに
GitHub Actionsのワークフローをサーバー上で実行するたびにコミットするのは面倒な作業です(スキルが発展途上のためやりがち...)
この記事では、actを使用してワークフローをローカルで実行する方法を紹介します。
準備
actを使用するにはDockerが必要です。
まず、Dockerが稼働していることを確認しましょう。
最近私は colima を利用してDockerを稼働させています。
actのインストールは、さまざまなパッケージマネージャを通じて行うことができます(詳細はこちら)。
インストール後、初回起動時に使用するDockerイメージを選択するように求められます。イメージには軽量なもの(例: node:16-buster-slim)から大型のもの(18GB以上)まであります。作業内容に応じて適切なイメージを選びましょう。
実行手順
-
ワークフローの一覧表示
コマンドプロンプトでリポジトリを開き、以下のコマンドを使用してワークフローとジョブのトリガーを確認します:$ act pull_request -l
-
ドライランの実行
ワークフローを実行する前に、ドライランを行って問題をチェックできます:$ act pull_request -n
-
ワークフローの実行
ドライランが問題なければ、以下のコマンドで実際にワークフローを実行します:$ act pull_request
ワークフローの結果は、GitHub上での実行結果と同様になります。
仕組み
actはDockerコンテナを使用してワークフローをローカルで実行することは前述しました。
.github/workflows/ディレクトリ
内のGitHub Actionsを読み込み、必要なアクションを特定します。
Docker APIを利用して必要なイメージを取得または構築し、実行経路を決定した後、各アクションに対応するコンテナを実行します。
ワークフローでGITHUB_TOKENを使用している場合、個人用アクセストークン(PAT)を提供する必要がありますが、GitHub CLIを使用してトークンを自動的に取得することも可能です。
さらに詳しく
actの課題の一つは、デフォルトのGitHubホストランナーのイメージが非常に大きいことです。しかし、ほとんどのワークフローではそれほど多くのツールを必要としません。
カスタムDockerイメージを使用することで、ローカルとサーバーでの実行環境をほぼ一致させることができます。詳細はこちらをご覧ください。
Discussion