🖥️
過去に実行したGitHubActionsワークフローのアーティファクトを取得したい
アーティファクトをさくっと取得したい
デプロイフローにいくつか手順があって、前段で実行したワークフローで保存したアーティファクトを取得したいなんてことがあると思います。
そんなときはワークフローのrun_idを取得して辿ることが可能です。
コード例
過去に実行したワークフローの情報を取得する際にGitHubのREST APIを使っています。
ワークフローのIDを指定することも可能ですが、以下の例ではファイル名を使ってrun_idを取得しています。
またQuery parametersで正常終了の場合や実行者などで条件をつけることもできます。
name: Download Artifact from Another Workflow
on:
workflow_dispatch:
inputs:
DEPLOY_WORKFLOW_FILE_NAME:
required: true
type: string
ENVIRONMENT:
required: true
type: string
ARTIFACT_NAME:
required: true
type: string
permissions:
contents: read
actions: read
jobs:
download-artifact:
runs-on: ubuntu-latest
steps:
- name: Get latest workflow run_id
id: get-run-id
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api \
"repos/${{ github.repository }}/actions/workflows/${{ inputs.DEPLOY_WORKFLOW_FILE_NAME }}/runs?status=success&environment=${{ inputs.ENVIRONMENT }}" > response.json
run_id=$(cat response.json | jq -r '.workflow_runs[0].id')
echo "run_id=${run_id}" >> $GITHUB_OUTPUT
- name: Download artifact
if: steps.get-run-id.outputs.run_id != ''
uses: actions/download-artifact@v4
with:
name: ${{ inputs.ARTIFACT_NAME }}
run-id: ${{ steps.get-run-id.outputs.run_id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
参考
Discussion