😺

WSL + Docker上でGitHub Actions Self-hosted Runnerを構築する

に公開

はじめに

ちょっとしたワークフローを試したいときや、クラウドのランナーでは再現しにくい構成を検証したいとき、 ローカル環境でRunnerを動かせると便利だ。

この記事では、WSL2上のUbuntuコンテナでGitHub ActionsのSelf-hosted Runnerを構築した際の手順をまとめる。


環境構成

要素 バージョン / 備考
OS Windows 11 + WSL2
コンテナ Ubuntu (Docker上で起動済み)
GitHub Actions Runner v2.329.0

1. Runnerのダウンロードと展開

まずは公式リリースからRunnerをダウンロードして展開する。

mkdir actions-runner && cd actions-runner

curl -o actions-runner-linux-x64-2.329.0.tar.gz -L \
  https://github.com/actions/runner/releases/download/v2.329.0/actions-runner-linux-x64-2.329.0.tar.gz

# 整合性確認
echo "194f1e1e4bd02f80b7e9633fc546084d8d4e19f3928a324d512ea53430102e1d  actions-runner-linux-x64-2.329.0.tar.gz" \
  | shasum -a 256 -c

# 展開
tar xzf ./actions-runner-linux-x64-2.329.0.tar.gz

shasumでダウンロードファイルの改ざんを防止している。
RunnerをCI環境で扱う場合は、毎回この検証を入れておくと安心。


2. 一般ユーザーを作成し、所有権を付与

GitHub Actions Runnerはsudoで実行できない。
そのため専用ユーザーを作成して権限を付与する。

useradd -m runner
chown -R runner:runner /actions-runner
su - runner
cd /actions-runner

3. トークンの登録と依存関係の解決

リポジトリの Settings → Actions → Runners から登録トークンを取得し、
以下のコマンドで登録を開始する。

./config.sh

このとき、以下のエラーが出る場合がある。

Libicu's dependencies is missing for Dotnet Core 6.0
Execute sudo ./bin/installdependencies.sh to install any missing Dotnet Core 6.0 dependencies.

これはRunner内部で.NET Core 6が使用されているため。
依存関係を以下のスクリプトでインストールして解決する。

sudo ./bin/installdependencies.sh

最後に以下の出力が出れば完了。

-----------------------------
 Finish Install Dependencies
-----------------------------

4. 対話型での登録

設定ようのスクリプトを実行する。

./config.sh

以下のような対話形式で進む。

# Authentication
√ Connected to GitHub

# Runner Registration
Enter the name of runner: [press Enter for default] runner-1
Enter any additional labels: [press Enter to skip] label-1

√ Runner successfully added

5. Runnerの起動

./run.sh

起動後、以下のように表示されれば成功。

√ Connected to GitHub
Current runner version: '2.329.0'

GitHubリポジトリの「Actions → Runners」にもrunner-1が登録される。


6. (補足)

記載したコマンドは、リポジトリの Settings → Actions → Runners → New self-hosted runner を押下すると、
ダウンロードから設定・起動までの一連のコマンドがすべて表示される。
この画面の指示に沿って進めれば基本的なセットアップが完了する。


まとめ

  • WSL + Docker環境でもGitHub Actions Runnerを問題なく構築できる
  • sudo実行制限に注意し、専用ユーザーを用意する
  • .NET Core 6.0依存はinstalldependencies.shで自動解決できる

📘 参考

Discussion