@actions/download-artifact
警告
action/download-artifact@v3 は、2024 年 11 月 30 日に非推奨になる予定です。もっと詳しく知る。同様に、v1/v2 は2024 年 6 月 30 日に廃止される予定です。アーティファクト アクションの v4 を使用するようにワークフローを更新してください。この非推奨は、顧客が使用している GitHub Enterprise Server の既存のバージョンには影響しません。
ワークフロー実行からアクション アーティファクトをダウンロードします。 @actions/artifact パッケージによって内部的に動作します。
「アップロード アーティファクト」も参照してください。
@actions/download-artifact
重要
download-artifact@v4+ は現在、GHES ではまだサポートされていません。 GHES を使用している場合は、v3 を使用する必要があります。
Upload-artifact@v4 と download-artifact@v4 のリリースは、Artifacts のバックエンド アーキテクチャに対する大きな変更です。パフォーマンスと動作が数多く改善されました。
詳細については、 @actions/artifact
ドキュメントを参照してください。
action/upload-artifact@v3
以下から作成されたアーティファクトのダウンロードはサポートされていません。重大な変更については、MIGRATION.md を参照してください。
- uses : actions/download-artifact@v4
with :
# Name of the artifact to download.
# If unspecified, all artifacts for the run are downloaded.
# Optional.
name :
# Destination path. Supports basic tilde expansion.
# Optional. Default is $GITHUB_WORKSPACE
path :
# A glob pattern to the artifacts that should be downloaded.
# Ignored if name is specified.
# Optional.
pattern :
# When multiple artifacts are matched, this changes the behavior of the destination directories.
# If true, the downloaded artifacts will be in the same directory specified by path.
# If false, the downloaded artifacts will be extracted into individual named directories within the specified path.
# Optional. Default is 'false'
merge-multiple :
# The GitHub token used to authenticate with the GitHub API.
# This is required when downloading artifacts from a different repository or from a different workflow run.
# Optional. If unspecified, the action will download artifacts from the current repo and the current workflow run.
github-token :
# The repository owner and the repository name joined together by "/".
# If github-token is specified, this is the repository that artifacts will be downloaded from.
# Optional. Default is ${{ github.repository }}
repository :
# The id of the workflow run where the desired download artifact was uploaded from.
# If github-token is specified, this is the run that artifacts will be downloaded from.
# Optional. Default is ${{ github.run_id }}
run-id :
名前 | 説明 | 例 |
---|---|---|
download-path | アーティファクトがダウンロードされた絶対パス | /tmp/my/download/path |
現在の作業ディレクトリ ( $GITHUB_WORKSPACE
) にダウンロードします。
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
- name : Display structure of downloaded files
run : ls -R
特定のディレクトリにダウンロードします ( ~
展開もサポートします)。
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
path : your/destination/dir
- name : Display structure of downloaded files
run : ls -R your/destination/dir
name
入力パラメータが指定されていない場合は、すべてのアーティファクトがダウンロードされます。ダウンロードされたアーティファクトを区別するために、デフォルトでは、アーティファクト名で示されるディレクトリが個々のアーティファクトごとに作成されます。この動作は、 merge-multiple
入力パラメーターを使用して変更できます。
たとえば、 Artifact-A
とArtifact-B
という 2 つのアーティファクトがあり、ディレクトリがetc/usr/artifacts/
である場合、ディレクトリ構造は次のようになります。
etc/usr/artifacts/
Artifact-A/
... contents of Artifact-A
Artifact-B/
... contents of Artifact-B
すべてのアーティファクトを現在の作業ディレクトリにダウンロードします。
steps :
- uses : actions/download-artifact@v4
- name : Display structure of downloaded files
run : ls -R
すべてのアーティファクトを特定のディレクトリにダウンロードします。
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
同じディレクトリにダウンロードするには:
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
merge-multiple : true
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
その結果、次のような結果が得られます。
path/to/artifacts/
... contents of Artifact-A
... contents of Artifact-B
複数のアーキテクチャ/OS シナリオでは、異なるジョブでアーティファクトが構築される場合があります。すべてのアーティファクトを同じディレクトリにダウンロードするには (またはグロブ パターンに一致するには)、 pattern
使用してmerge-multiple
できます。
jobs :
upload :
strategy :
matrix :
runs-on : [ubuntu-latest, macos-latest, windows-latest]
runs-on : ${{ matrix.runs-on }}
steps :
- name : Create a File
run : echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt
- name : Upload Artifact
uses : actions/upload-artifact@v4
with :
name : my-artifact-${{ matrix.runs-on }}
path : file-${{ matrix.runs-on }}.txt
download :
needs : upload
runs-on : ubuntu-latest
steps :
- name : Download All Artifacts
uses : actions/download-artifact@v4
with :
path : my-artifact
pattern : my-artifact-*
merge-multiple : true
- run : ls -R my-artifact
これにより、次のようなディレクトリが作成されます。
my-artifact/
file-macos-latest.txt
file-ubuntu-latest.txt
file-windows-latest.txt
他のワークフロー実行や他のリポジトリからアーティファクトをダウンロードすると便利な場合があります。デフォルトでは、権限にはスコープが設定されているため、現在のワークフロー実行内でのみアーティファクトをダウンロードできます。このシナリオの権限を昇格するには、他のリポジトリおよび実行識別子とともにgithub-token
指定できます。
steps :
- uses : actions/download-artifact@v4
with :
name : my-other-artifact
github-token : ${{ secrets.GH_PAT }} # token with actions:read permissions on target repo
repository : actions/toolkit
run-id : 1234
ファイルのアクセス許可は、アーティファクトのアップロード中に維持されません。すべてのディレクトリには755
が含まれ、すべてのファイルには644
含まれます。たとえば、 chmod
使用してファイルを実行可能ファイルにしてアップロードした場合、ダウンロード後にそのファイルが実行可能ファイルとして設定される保証はなくなります。
権限を保持する必要がある場合は、アーティファクトをアップロードする前に、すべてのファイルをまとめてtar
ことができます。ダウンロード後、 tar
ファイルはファイルのアクセス許可と大文字と小文字の区別を維持します。
- name : ' Tar files '
run : tar -cvf my_files.tar /path/to/my/directory
- name : ' Upload Artifact '
uses : actions/upload-artifact@v4
with :
name : my-artifact
path : my_files.tar