【GitHubActions】ローカル実行する方法

2024/08/01に公開

GitHub Actions: ワークフローをローカルで実行する方法

はじめに

GitHub Actionsのワークフローをサーバー上で実行するたびにコミットするのは面倒な作業です(スキルが発展途上のためやりがち...)
この記事では、actを使用してワークフローをローカルで実行する方法を紹介します。

準備

actを使用するにはDockerが必要です。
まず、Dockerが稼働していることを確認しましょう。

最近私は colima を利用してDockerを稼働させています。

actのインストールは、さまざまなパッケージマネージャを通じて行うことができます(詳細はこちら)。
インストール後、初回起動時に使用するDockerイメージを選択するように求められます。イメージには軽量なもの(例: node:16-buster-slim)から大型のもの(18GB以上)まであります。作業内容に応じて適切なイメージを選びましょう。

実行手順

  1. ワークフローの一覧表示
    コマンドプロンプトでリポジトリを開き、以下のコマンドを使用してワークフローとジョブのトリガーを確認します:

    $ act pull_request -l
    
  2. ドライランの実行
    ワークフローを実行する前に、ドライランを行って問題をチェックできます:

    $ act pull_request -n
    
  3. ワークフローの実行
    ドライランが問題なければ、以下のコマンドで実際にワークフローを実行します:

    $ act pull_request
    

    ワークフローの結果は、GitHub上での実行結果と同様になります。

仕組み

actはDockerコンテナを使用してワークフローをローカルで実行することは前述しました。
.github/workflows/ディレクトリ内のGitHub Actionsを読み込み、必要なアクションを特定します。
Docker APIを利用して必要なイメージを取得または構築し、実行経路を決定した後、各アクションに対応するコンテナを実行します。

ワークフローでGITHUB_TOKENを使用している場合、個人用アクセストークン(PAT)を提供する必要がありますが、GitHub CLIを使用してトークンを自動的に取得することも可能です。

さらに詳しく

actの課題の一つは、デフォルトのGitHubホストランナーのイメージが非常に大きいことです。しかし、ほとんどのワークフローではそれほど多くのツールを必要としません。
カスタムDockerイメージを使用することで、ローカルとサーバーでの実行環境をほぼ一致させることができます。詳細はこちらをご覧ください。

GitHubで編集を提案

Discussion