@actions/download-artifact
警告
action/download-artifact@v3 は、2024 年 11 月 30 日に非推奨になる予定です。もっと詳しく知る。同様に、v1/v2 は2024 年 6 月 30 日に廃止される予定です。アーティファクト アクションの v4 を使用するようにワークフローを更新してください。この非推奨は、顧客が使用している GitHub Enterprise Server の既存のバージョンには影響しません。
ワークフロー実行からアクション アーティファクトをダウンロードします。 @actions/artifact パッケージによって内部的に動作します。
「アップロード アーティファクト」も参照してください。
@actions/download-artifact
権限の喪失
単一のアーティファクトをダウンロード
すべてのアーティファクトをダウンロード
複数の(フィルタリングされた)アーティファクトを同じディレクトリにダウンロードする
他のワークフロー実行またはリポジトリからアーティファクトをダウンロードする
入力
出力
改善点
重大な変更
v4 - 新機能
使用法
例
制限事項
重要
download-artifact@v4+ は現在、GHES ではまだサポートされていません。 GHES を使用している場合は、v3 を使用する必要があります。
Upload-artifact@v4 と download-artifact@v4 のリリースは、Artifacts のバックエンド アーキテクチャに対する大きな変更です。パフォーマンスと動作が数多く改善されました。
詳細については、 @actions/artifact
ドキュメントを参照してください。
ダウンロードが大幅に高速化され、最悪のシナリオでも 90% 以上改善されます。
PAT とともに提供される場合、アーティファクトは他のワークフロー実行およびリポジトリからダウンロードできます。
自己ホスト型ランナーでは、追加のファイアウォール ルールが必要になる場合があります。
action/upload-artifact@v3
以下から作成されたアーティファクトのダウンロードはサポートされていません。
重大な変更については、MIGRATION.md を参照してください。
- 使用:actions/download-artifact@v4 with:# ダウンロードするアーティファクトの名前。# 指定しない場合、実行のすべてのアーティファクトがダウンロードされます。# Optional.name:# 宛先パス。基本的なチルダ展開をサポートします。# オプション。デフォルトは $GITHUB_WORKSPACEpath:# ダウンロードされるアーティファクトへの glob パターンです。# 名前が指定されている場合は無視されます。# Optional.pattern:# 複数のアーティファクトが一致する場合、宛先ディレクトリの動作が変更されます。# true の場合、ダウンロードされたアーティファクトは、パスで指定された同じディレクトリに配置されます。# false の場合、ダウンロードされたアーティファクトは、指定されたパス内の個別の名前付きディレクトリに抽出されます。# オプション。デフォルトは 'false'merge-multiple:# GitHub API での認証に使用される GitHub トークン。# これは、別のリポジトリまたは別のワークフロー実行からアーティファクトをダウンロードする場合に必要です。# オプション。指定しない場合、アクションは現在のリポジトリと現在のワークフローからアーティファクトをダウンロードします。 run.github-token:# リポジトリ所有者とリポジトリ名を「/」で結合したものです。# github-token が指定されている場合、これはリポジトリです。アーティファクトは次からダウンロードされます。# オプション。デフォルトは ${{ github.repository }}repository:# 目的のダウンロード アーティファクトのアップロード元のワークフロー実行の ID。# github-token が指定されている場合、これはアーティファクトのダウンロード元の実行です。# オプション。デフォルトは ${{ github.run_id }}run-id です。
名前 | 説明 | 例 |
---|---|---|
download-path | アーティファクトがダウンロードされた絶対パス | /tmp/my/download/path |
現在の作業ディレクトリ ( $GITHUB_WORKSPACE
) にダウンロードします。
手順: - 使用:actions/download-artifact@v4 with:name: my-artifact- name: ダウンロードされたファイルの構造の表示 実行: ls -R
特定のディレクトリにダウンロードします ( ~
展開もサポートします)。
手順: - 使用:actions/download-artifact@v4 with:name: my-artifactpath: your/destination/dir- name: ダウンロードされたファイルの構造の表示 実行: 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
すべてのアーティファクトを現在の作業ディレクトリにダウンロードします。
手順: - 使用:actions/download-artifact@v4- name:ダウンロードされたファイルの構造の表示 実行: ls -R
すべてのアーティファクトを特定のディレクトリにダウンロードします。
手順: - 使用:actions/download-artifact@v4 with:path: path/to/artifacts- name: ダウンロードされたファイルの構造の表示 実行: ls -R path/to/artifacts
同じディレクトリにダウンロードするには:
手順: - 使用:actions/download-artifact@v4 with:path: path/to/artifactsmerge-multiple: true-name: ダウンロードされたファイルの構造の表示 実行: ls -R path/to/artifacts
その結果、次のような結果が得られます。
path/to/artifacts/ ... contents of Artifact-A ... contents of Artifact-B
複数のアーキテクチャ/OS シナリオでは、異なるジョブでアーティファクトが構築される場合があります。すべてのアーティファクトを同じディレクトリにダウンロードするには (またはグロブ パターンに一致するには)、 pattern
使用してmerge-multiple
できます。
ジョブ: アップロード: 戦略: マトリックス: 実行オン: [ubuntu-最新、macos-最新、Windows-最新] 実行: ${{ マトリックス.runs-on }}ステップ: - 名前: ファイルを作成します。 run: echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt - 名前: アーティファクトのアップロード 使用: action/upload-artifact @v4 with:name: my-artifact-${{ matrix.runs-on }}path: file-${{ matrix.runs-on }}.txt ダウンロード: ニーズ: アップロード実行: ubuntu-最新ステップ: - 名前: すべてのアーティファクトのダウンロード 使用: action/download-artifact@v4 with:path: my-artifactpattern: 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
指定できます。
手順: - 使用:actions/download-artifact@v4 with:name: my-other-artifactgithub-token: ${{ Secrets.GH_PAT }} # ターゲット リポジトリに対するアクション:読み取り権限を持つトークン: action/toolkitrun-id: 1234
ファイルのアクセス許可は、アーティファクトのアップロード中に維持されません。すべてのディレクトリには755
が含まれ、すべてのファイルには644
含まれます。たとえば、 chmod
使用してファイルを実行可能ファイルにしてアップロードした場合、ダウンロード後にそのファイルが実行可能ファイルとして設定される保証はなくなります。
権限を保持する必要がある場合は、アーティファクトをアップロードする前に、すべてのファイルをまとめてtar
圧縮できます。ダウンロード後、 tar
ファイルはファイルのアクセス許可と大文字と小文字の区別を維持します。
- 名前: 'tar ファイル' 実行: tar -cvf my_files.tar /path/to/my/directory- name: 'アーティファクトのアップロード' 使用:actions/upload-artifact@v4 with:name: my-artifactpath: my_files.tar