😸
GitHub CLI で GitHub Actions のartifact をダウンロードする
GitHub CLI で GitHub Actions の artifact をダウンロードする
gh run コマンドの list サブコマンド と download サブコマンド を使って、artifact を列挙、ダウンロードする。
※ ここでは sakura editor を例に説明する。
結論
処理内容自体は sakura editor に依存しているので使用したいリポジトリに応じて適宜カスタマイズが必要。
$ gh -R sakura-editor/sakura run download \
$(gh -R sakura-editor/sakura run list \
-L 1 -b master -w "build sakura" --json databaseId --jq '.[].databaseId') \
-p "*Installer*"
sakura editor の依存しているのは以下の部分。それ以外は他のプロジェクトでも流用可能。
-
-R sakura-editor/sakura
(使用したいプロジェクトを指定する) -
-b master
(main
ブランチを使用するプロジェクトの場合は変更必要) -
-w "build sakura"
(使用したいプロジェクトの workflow 名を指定する) -
-p "*Installer*"
(使用したいプロジェクトで取得したい artifact 名を指定する)
list サブコマンド
workflow の列挙
-
gh run list
で GitHub Actions の workflow を列挙できる。 - 該当のリポジトリ外で実行する場合、
-R sakura-editor/sakura
でリポジトリを指定する。 - 該当のリポジトリ内で実行する場合、
-R sakura-editor/sakura
は省略できる。 - デフォルトで最大 30要素表示するので
-L 5
のようにして列挙する上限を設定できる。
$ gh -R sakura-editor/sakura run list -L 5
STATUS TITLE WORKFLOW BRANCH EVENT ID ELAPSED AGE
✓ ヘルプをUTF8のままコンパイルする build sakura utf8help pull_request 3855650468 11m17s 10h
✓ ヘルプをUTF8のままコンパイルする SonarCloud utf8help pull_request_target 3855650423 9m47s 10h
✓ SonarCloud SonarCloud master schedule 3853570129 12m8s 16h
✓ ヘルプをUTF8のままコンパイルする SonarCloud utf8help pull_request_target 3846931454 7m44s 1d
✓ ヘルプをUTF8のままコンパイルする build sakura utf8help pull_request 3846931433 10m32s 1d
列挙 する workflow を限定
-
-w "build sakura"
で列挙するWORKFLOW
を限定できる。 -
-b master
で列挙するBRANCH
を限定できる。
$ gh -R sakura-editor/sakura run list -L 5 -b master -w "build sakura"
STATUS TITLE WORKFLOW BRANCH EVENT ID ELAPSED AGE
✓ Merge pull request #1893 from berryzplus/feature/remove_minidump build sakura master push 3834956834 8m15s 2d
✓ Merge pull request #1888 from dep5/removePopup build sakura master push 3834127722 11m36s 2d
✓ Merge pull request #1887 from beru/HighDPI_CPropTypesColor__DrawColor… build sakura master push 3804948023 9m55s 7d
✓ Merge pull request #1881 from dep5/setwidthimg build sakura master push 3798585802 12m19s 8d
✓ Merge pull request #1879 from dep5/build-chm-nopy build sakura master push 3798521306 8m23s 8d
download サブコマンド
指定したworkflow の artifact をダウンロード
-
gh run download
で GitHub Actions の artifact をダウンロードできる。 -
3834956834
はID
を指定する。 -
⣷
の部分がダウンロード中更新されて進捗を表す。完了すると消える。
$ gh -R sakura-editor/sakura run download 3834956834
⣷
ダウンロードする artifact を限定
-
-p "*Installer*"
のように指定すると artifact 名にInstaller
を含むもののみをダウンロードできる。
$ gh -R sakura-editor/sakura run download 3834956834 -p "*Installer*"
最新の artifact をダウンロード
list サブコマンドの出力の ID
の部分を解析して、download サブコマンドに渡してやることで、最新の artifact をダウンロードする。
json 形式で出力し、含める要素を指定
-
--json databaseId
を指定することで json 形式でID
の部分のみを出力する。
$ gh -R sakura-editor/sakura run list -L 5 -b master -w "build sakura" --json databaseId
[
{
"databaseId": 3834956834
},
{
"databaseId": 3834127722
},
{
"databaseId": 3804948023
},
{
"databaseId": 3798585802
},
{
"databaseId": 3798521306
}
]
jq
を使用して取り出し
json 形式の結果を -
--jq '.[].databaseId'
を指定して、配列要素の中のdatabaseId
の部分のみを取り出す。
$ gh -R sakura-editor/sakura run list \
-L 5 -b master -w "build sakura" --json databaseId --jq '.[].databaseId'
3834956834
3834127722
3804948023
3798585802
3798521306
最新の workflow の ID を取得
-L 1
を指定して最新のものだけ取り出す。
$ gh -R sakura-editor/sakura run list \
-L 1 -b master -w "build sakura" --json databaseId --jq '.[].databaseId'
3834956834
参考: json 形式で指定できる要素
-
--json
を引数なしで指定すると指定可能な値を表示する。
$ gh -R sakura-editor/sakura run list --json
Specify one or more comma-separated fields for `--json`:
conclusion
createdAt
databaseId
displayTitle
event
headBranch
headSha
name
number
startedAt
status
updatedAt
url
workflowDatabaseId
workflowName
最新の workflow の ID の artifact をダウンロードする。
これまでの手順をまとめて、以下で最新の Installer
を含む artifact をダウンロードできる。
$ gh -R sakura-editor/sakura run download \
$(gh -R sakura-editor/sakura run list \
-L 1 -b master -w "build sakura" --json databaseId --jq '.[].databaseId') \
-p "*Installer*"
Discussion