毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
タイトルの通りですが、Jetson Xavier NX Developer KitにGitHub ActionsのSelf-hosted Runnerをインストールしたという内容になります。
Jetsonを使おうかという人はGitHub Actionsをインストールするのなんて息をするようにできるので記事がないのかもしれないですね。
1. 環境
機種: Jetson Xavier NX Development Kit
NVIDIA JetPack SDK: Jetpack 5.1.1
Linux: Linux jetsonnx4 5.10.104-tegra #1 SMP PREEMPT Sun Mar 19 07:55:28 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux
1. GitHubでリポジトリーを作成する
割愛します。
PublicでもPrivateでもどちらでもかまいません。
2. Runnerインストール
2-1. Runnerインストールの手順をGitHubで表示
Settings > Actions > Runnersから「New self-hosted runner」をクリック
2-2. Jetson向けの手順に切り替え
手順が表示されるので、Runner image
で「Linux」を選択、Architecture
で「ARM64」を選択
2-3. 手順通りにダウンロードして展開
- フォルダー作成
mkdir actions-runner && cd actions-runner
- Runnerパッケージをダウンロード
curl -o actions-runner-linux-arm64-2.304.0.tar.gz -L
https://github.com/actions/runner/releases/download/v2.304.0/actions-runner-linux-arm64-2.304.0.tar.gz
- パッケージが正しいか確認(オプション)
echo "34c49bd0e294abce6e4a073627ed60dc2f31eee970c13d389b704697724b31c6 actions-runner-linux-arm64-2.304.0.tar.gz" | shasum -a 256 -c
tar xzf ./actions-runner-linux-arm64-2.304.0.tar.gz
- 展開内容を確認
2-4. 設定
展開したディレクトリで./config.shを実行する
以下のコマンドではなくて、GitHubの手順のコマンドを実行すること
途中インタラクティブに入力を求められるが基本的にはエンターだけでOK。
Runnerを複数動かして、ホスト名が同じだと区別が付かなくなる場合は入力した方が賢明
グループ分けとかもできるようだ
./config.sh --url https://github.com/yourname/your-repository-name --token XXXXXXXXXXXXXXXXXXXXXXX
- 実行結果
2-5. 実行
手順では以下の./run.sh
だけです
./run.sh
しかし、これで動かすとずっとジョブ待ちになってしまってコンソールが奪われてしまうので、サービスとして動かします。
3. Actions Runnerをサービスとして起動する
3-1. サービスインストール
展開されたディレクトリにあるsvc.sh
ファイルを利用して、systemdファイルを作成します。
sudo ./svc.sh install
ログインしたユーザー以外で動かす場合は、USERNAMEを付けるとよいようです
./svc.sh install USERNAME
Configuring the self-hosted runner application as a service - GitHub Docs
しかし、systemdファイルを作っただけではサービスとして起動していないのでsystemctlコマンドで起動します
3-2. GitHub Runnerサービスを開始する
コマンドで状態を確認する。
systemctl status actions.runner.<YourRepositoryName>-runner.<Hostname>.service
サービス名が分からない場合は、以下のコマンドで出てきたファイル名がサービス名になる
ls -la /etc/systemd/system/actions.runner*
まだ起動していないので以下のようにinactiveでdeadの状態、有効化はされている模様
以下のコマンドで起動する
sudo systemctl start actions.runner.<YourRepositoryName>-runner.<Hostname>.service
※補足:
svc.shコマンドを使うと、start
、status
、stop
できるそうです
- 起動
sudo ./svc.sh start
- ステータス
sudo ./svc.sh status
- 停止
sudo ./svc.sh stop
Configuring the self-hosted runner application as a service - GitHub Docs
https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service#starting-the-service
3-3. 起動状態を確認
以下のコマンドで起動状態を確認する
sudo systemctl status actions.runner.<YourRepositoryName>-runner.<Hostname>.service
3-4. GitHub側で確認
以下のようにRunnersで StatusがIdle
になっていればOKです。
以下のようにOffline
だとサービスが落ちているか、接続できていません。
4. まとめ
JetsonでもGitHub Runnerを動かせました。
サービスとして動かせたので再起動後も自動的にRunnerが起動して利用することができます。
5. 参考資料
GitHub Actionsでself-hosted runnerを使ってみる - とことんDevOps | 日本仮想化技術が提供するDevOps技術情報メディア
https://devops-blog.virtualtech.jp/entry/20220926/1664160391