マシンランナーの Linux へのインストール
このページでは、Linux に CircleCI のマシンランナーをインストールする方法を説明します。
このページはセルフホストランナーのインストールの続きです。 下記の手順を進めるには、既存の CircleCI 名前空間とリソースクラスが必要です。 これは、 CircleCI Web アプリ で Self-Hosted Runners に移動して実行できます ( Web アプリのインストール のドキュメントを参照)。 また、 CLI もご使用いただけます。 |
マシンランナーローンチエージェントスクリプトをダウンロードする
Save the launch-agent.sh script file to an easily accessible location. その場所から、ターゲットプラットフォーム (x86_6、ARM64、s390x または ppc64le) 向けのローンチエージェントバイナリをインストールします。
curl https://raw.githubusercontent.com/CircleCI-Public/runner-installation-files/main/download-launch-agent.sh --output ./download-launch-agent.sh
chmod +x ./download-launch-agent.sh
# For Linux x86_64:
export platform=linux/amd64 && sh ./download-launch-agent.sh
# For Linux ARM64:
export platform=linux/arm64 && sh ./download-launch-agent.sh
# For Linux s390x:
export platform=linux/s390x && sh ./download-launch-agent.sh
# For Linux ppc64le:
export platform=linux/ppc64le && sh ./download-launch-agent.sh
正常にインストールしたら、download-launch-agent.sh ファイルは削除できます。
circleci
ユーザーと作業ディレクトリを作成する
これらはタスクエージェントの実行時に使用されます。 以下のコマンドは、他のユーザーを作成する権限を持ったユーザーとして実行する必要があります (例: root
)。 GECOS については、https://en.wikipedia.org/wiki/Gecos_field[Wiki ページ]を参照してください。
Ubuntu/Debian
id -u circleci &>/dev/null || sudo adduser --disabled-password --gecos GECOS circleci
CentOS/RHEL
id -u circleci &>/dev/null || sudo adduser -c GECOS circleci
作業ディレクトリを作成し、権限を設定する
sudo mkdir -p /var/opt/circleci
sudo chmod 0750 /var/opt/circleci
sudo chown -R circleci /var/opt/circleci /opt/circleci
セルフホストランナーでクラウド上で動作する認定 Orb をエラーなく使用するには、下記の追加コマンドの実行をご検討ください。 これにより、コードによるマシン上でのルートコマンドの実行が可能になり、システムへの変更はジョブの実行後も保持される場合があるのでご注意ください。
echo "circleci ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
CircleCI のセルフホストランナー設定ファイルを作成する
launch-agent-config.yaml
ファイルを、パス /etc/opt/circleci/launch-agent-config.yaml
、所有者 circleci
、アクセス許可 600
で作成します。 次のコマンドを使用します。
sudo mkdir -p /etc/opt/circleci && sudo touch /etc/opt/circleci/launch-agent-config.yaml
sudo chown -R circleci: /etc/opt/circleci
sudo chmod 600 /etc/opt/circleci/launch-agent-config.yaml
新しく作成した /etc/opt/circleci/launch-agent-config.yaml
ファイルに次の内容をコピーします。
api:
auth_token: AUTH_TOKEN
# On server, set url to the hostname of your server installation. For example,
# url: https://circleci.example.com
runner:
name: RUNNER_NAME
working_directory: /var/opt/circleci/workdir
cleanup_working_directory: true
-
Replace
AUTH_TOKEN
with the resource class token created in the set up process. -
RUNNER_NAME
を任意のセルフホストランナー名に置き換えます。RUNNER_NAME
は、ランナーをインストールするマシン一意の名前です。RUNNER_NAME
には、任意の値を設定でき、名前空間やリソースクラス名を含む必要はありません。 CircleCI Web アプリでステータスやジョブ結果を確認する際にエージェントを特定できるよう、名前にはマシンのホスト名を使用することをお勧めします。 The only special characters accepted in RUNNER_NAME are. () - _
.
SELinux ポリシーを設定する (RHEL 8)
RHEL 8 システムでセルフホストランナーがジョブを受け取り、起動するには、SELinux ポリシーが必要です (RHEL 8 より前のバージョンはサポートされていません)。 このポリシーは、このセルフホストランナーインストール環境で実行される個々のジョブで必要となる可能性のある権限を追加するものではないのでご注意ください。
/etc/opt/circleci/policy
というディレクトリを作成し、最初のポリシーモジュールを生成します。
sudo mkdir -p /etc/opt/circleci/policy
# Install sepolicy and rpmbuild if you haven't already
sudo yum install -y policycoreutils-devel rpm-build
sudo sepolicy generate --path /etc/opt/circleci/policy --init /opt/circleci/circleci-launch-agent
次の Type Enforcement ファイル circleci_launch_agent.te
をダウンロードして、ポリシーをインストールします。
sudo curl https://raw.githubusercontent.com/CircleCI-Public/runner-installation-files/main/rhel8-install/circleci_launch_agent.te --output /etc/opt/circleci/policy/circleci_launch_agent.te
sudo /etc/opt/circleci/policy/circleci_launch_agent.sh
マシンランナーを起動する
マシンランナーを以下のように起動できるようになりました。
sudo /opt/circleci/circleci-launch-agent --config /etc/opt/circleci/launch-agent-config.yaml
You can also optionally run machine runner as a systemd service.
マシンランナーの設定例
セルフホストランナーを使って実行する特定のジョブについて、以下のフィールドを設定する必要があります。
-
machine: true
-
resource_class: <namespace>/<resource-class>
以下は、ジョブ設定のシンプルなコード例です。
version: 2.1
workflows:
build-workflow:
jobs:
- runner
jobs:
runner:
machine: true
resource_class: <namespace>/<resource-class>
steps:
- run: echo "Hi I'm on Runners!"
この設定ファイルを VCS プロバイダーにプッシュすると、セルフホストランナーを使ってジョブが実行されます。
systemd
ユニットを有効にする
この手順はオプションです。 |
このオプション手順を実行するには、バージョン 235 以降の systemd のインストールが必要です。
所有者を root
にして /usr/lib/systemd/system/circleci.service
を作成し、権限を 755
に設定します。
sudo touch /usr/lib/systemd/system/circleci.service
sudo chown root: /usr/lib/systemd/system/circleci.service
sudo chmod 755 /usr/lib/systemd/system/circleci.service
TimeoutStopSec
のデフォルト値は 5 時間ですが、タスクの総実行時間よりも大きい値を指定する必要があります。
CircleCI のセルフホストランナーがマシン起動時に起動するようにインストール環境を設定する場合、マシンランナーは起動されるとすぐにジョブを開始しようとするので注意が必要です。そのため、起動する前に適切に設定しておく必要があります。 マシンランナーはサービスとして設定することができ、下記のスクリプトで systemd
により管理できます。
[Unit]
Description=CircleCI Runner
After=network.target
[Service]
ExecStart=/opt/circleci/circleci-launch-agent --config /etc/opt/circleci/launch-agent-config.yaml
Restart=always
User=circleci
NotifyAccess=exec
TimeoutStopSec=18300
[Install]
WantedBy = multi-user.target
circleci
ユーザーの環境を使用するタスクエージェントとは異なり、ローンチエージェントでは、その設定ファイルで明示的に定義されている環境変数 (プロキシ設定など) が必要です。 これは Environment=
または EnvironmentFile=
で設定できます。 詳細については、 systemd
のドキュメント をご覧ください。
次に、下記コマンドによりサービスを有効化します。
sudo systemctl enable circleci.service
サービスを起動する
CircleCI のセルフホストランナーサービスは起動するとすぐにジョブを実行しようとするため、サービスの初回起動前に設定を適切に行なっておく必要があります。
sudo systemctl start circleci.service
サービスの実行状態を確認する
systemctl
コマンドで表示されるシステムレポートの status
フィールドで、簡単な実行状態を確認できます。 このフィールドには、CircleCI API との接続状態に応じて、Healthy (正常) または Unhealthy (異常) と表示されます。
エージェントの状態は、次のコマンドを実行して確認できます。
systemctl status circleci.service --no-pager
このコマンドの出力は次のようになります。
circleci.service - CircleCI Runner
Loaded: loaded (/var/opt/circleci/circleci.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-05-29 14:33:31 UTC; 18min ago
Main PID: 5592 (circleci-launch)
Status: "Healthy"
Tasks: 8 (limit: 2287)
CGroup: /system.slice/circleci.service
└─5592 /opt/circleci/circleci-launch-agent --config /etc/opt/circleci/launch-agent-config.yaml
また、次のコマンドを実行してシステムのログを確認することもできます。
journalctl -u circleci
トラブルシューティング
Refer to the Troubleshoot Machine Runner section of the Troubleshoot Self-hosted Runner guide if you encounter issues installing or running machine runner on Linux.
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.