【ツール活用|初心者向け】GitHub Actionsを使いこなす!「Self-hosted Runners」でCI/CDの壁を突破しよう

1. 導入:なぜSelf-hosted Runnerが必要なのか?

GitHub Actionsを利用していると、「社内のデータベースに直接アクセスしたい」「ビルドのたびに課金が発生するのを抑えたい」「GPUを使って学習を行いたい」といった課題に直面することがあります。GitHubが提供する標準のランナー(マネージドランナー)は非常に便利ですが、インターネットから隔離された環境や、特定のハードウェアスペックが必要な場合には対応できません。そこで登場するのが「Self-hosted Runners」です。これを導入することで、あなたの会社独自の環境でCI/CDジョブを実行できるようになり、インフラの自由度が劇的に向上します。

2. 基礎知識:Self-hosted Runnerの仕組み

Self-hosted Runnerとは、GitHub Actionsのジョブを処理するために、あなたが用意したサーバー上で動かす「専用エージェント」のことです。

仕組み:GitHubのリポジトリとあなたのサーバー間で通信を行い、GitHubから送られてくるジョブをサーバー側で受信して実行します。
メリット:
社内ネットワークへのアクセス:ファイアウォール内にあるDBや社内APIに直接接続できます。
コスト最適化:使い慣れたクラウドインスタンスやオンプレミスサーバーを活用することで、実行時間の課金を抑えられます。
カスタマイズ性:OSの選定や、大容量メモリ、GPUなどの特殊なリソースを自由に追加できます。

3. 実装/解決策:構築の基本的な手順

Self-hosted Runnerの構築は、GitHubの管理画面からガイドに従うのが一番確実です。

1. GitHubのリポジトリ設定へ:「Settings」→「Actions」→「Runners」を開きます。
2. Runnerの追加:「New self-hosted runner」をクリックし、OSを選択します。
3. インストールコマンドの実行:表示されたシェルスクリプトを、対象のサーバー上で順に実行します。
4. 設定の完了:インストールが完了すると、サーバー上で「./run.sh」を実行することで、ジョブを受け付けられる待機状態(Idle)になります。

4. サンプルプログラム:ワークフローでの指定方法

作成したRunnerを実際に使うには、ワークフローファイル(.github/workflows/xxx.yml)内の「runs-on」セクションを書き換える必要があります。


name: Self-hosted Runner Test
on: [push]

jobs:
build:
# ここで「self-hosted」を指定します。
# もし特定のタグ(例:gpu-machine)を付けた場合、下記のように指定可能です。
runs-on: [self-hosted, linux, x64]

steps:

  • name: チェックアウト

uses: actions/checkout@v4

  • name: 社内DBへの接続確認

run: |
# サーバー内から社内ネットワーク上のDBへ接続するコマンド例
echo “社内ネットワーク内のDBに接続中…”
ping -c 3 192.168.1.100

  • name: ビルド実行

run: |
# サーバーにインストール済みのツールを使ってビルド
echo “ビルドを開始します”
make build

5. 応用・注意点:現場で陥りやすい罠

Self-hosted Runnerを導入する際は、以下の点に注意してください。

セキュリティリスク:ランナーが動いているサーバーは、リポジトリのコードを実行する権限を持ちます。信頼できないコードが実行されないよう、リポジトリへのアクセス権限を厳密に管理してください。
クリーンアップの徹底:ジョブごとに環境を汚さないよう、Dockerコンテナ内で実行する設定にするか、スクリプトの最後で一時ファイルを削除する工夫が必要です。
常時稼働の監視:サーバーがダウンするとCIが止まってしまいます。systemdなどを使用して、OS起動時に自動でランナーが立ち上がるように設定しておくのが「現場の鉄則」です。

適切に管理すれば、Self-hosted Runnerはインフラエンジニアにとって最強の武器になります。まずは小さなサーバーから構築を始めてみてください。

コメント

タイトルとURLをコピーしました