🚀

self-hosted runner のダウンロードパスをコマンドで取得

2024/05/12に公開

self-hosted runner のダウンロードパスをコマンドで取得

self-hosted runner の追加手順の自動化するのに必要なダウンロードパスをコマンドで取得する。

結論 (linux x64 版の場合)

DOWNLOAD_PATH=$(curl -L \
  -s \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/actions/runner/releases?per_page=1  \
  | jq -r ".[].assets[].browser_download_url"  \
  | grep linux-x64)

wget $DOWNLOAD_PATH -O actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz

この記事の次のステップ
self-hosted runner のConfigure で使用するトークンの生成をコマンドで取得

説明

参考サイト

通常シーケンス (手動)

SettingActionsRunners に移動する。

New self-hosted runner を押す。

表示されるコマンドを実行する。

# Create a folder
$ mkdir actions-runner && cd actions-runner# Download the latest runner package
$ curl -o actions-runner-linux-x64-2.316.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.316.1/actions-runner-linux-x64-2.316.1.tar.gz# Optional: Validate the hash
$ echo "d62de2400eeeacd195db91e2ff011bfb646cd5d85545e81d8f78c436183e09a8  actions-runner-linux-x64-2.316.1.tar.gz" | shasum -a 256 -c# Extract the installer
$ tar xzf ./actions-runner-linux-x64-2.316.1.tar.gz

問題点

actions-runner-linux-x64-2.316.1.tar.gz の部分は新しいバージョンがリリースされるとバージョン番号が変わるので、手動で、New self-hosted runner を押す必要がある。

対策

ダウンロードのパスをよく見ると、https://github.com/actions/runner のリポジトリの v2.316.1 のタグリリースの中の artifact であることがわかる。

つまり、 https://github.com/actions/runner/releases の Assets の中で必要なファイルの ダウンロードパスをGitHub API を使って取得する。

使用する GitHub API

https://docs.github.com/ja/rest/releases/releases?apiVersion=2022-11-28#list-releases

使用するコマンド

curl -L \
  -s \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/actions/runner/releases?per_page=1  | jq -r ".[].assets[].browser_download_url"  | grep linux-x64

Authorization: Bearer を指定しなくても動いた。

ダウンロード URL の取得処理 (実行例)

$ curl -L \
  -s \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/actions/runner/releases?per_page=1  | jq -r ".[].assets[].browser_download_url"  | grep linux-x64
https://github.com/actions/runner/releases/download/v2.316.1/actions-runner-linux-x64-2.316.1.tar.gz

Discussion