@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: # ダウンロードするアーティファクトの名前。 # 指定しない場合、実行のすべてのアーティファクトがダウンロードされます。 # オプション。 名前: # 宛先パス。基本的なチルダ展開をサポートします。 # オプション。デフォルトは $GITHUB_WORKSPACE パスです: # ダウンロードする必要があるアーティファクトへの glob パターン。 # 名前が指定されている場合は無視されます。 # オプション。 pattern: # 複数のアーティファクトが一致すると、宛先ディレクトリの動作が変わります。 # true の場合、ダウンロードされたアーティファクトは、パスで指定された同じディレクトリにあります。 # false の場合、ダウンロードされたアーティファクトは、指定されたパス内の個々の名前付きディレクトリに抽出されます。 # オプション。デフォルトは「false」です。 merge-multiple: # GitHub API での認証に使用される GitHub トークン。 # これは、別のリポジトリまたは別のワークフロー実行からアーティファクトをダウンロードする場合に必要です。 # オプション。指定しない場合、アクションは現在のリポジトリと現在のワークフロー実行からアーティファクトをダウンロードします。 github-token: # リポジトリ所有者とリポジトリ名を「/」で結合したもの。 # github-token が指定されている場合、これはアーティファクトのダウンロード元のリポジトリです。 # オプション。デフォルトは ${{ github.repository }} リポジトリ: # 目的のダウンロード アーティファクトのアップロード元のワークフロー実行の ID。 # github-token が指定されている場合、これがアーティファクトのダウンロード元の実行になります。 # オプション。デフォルトは ${{ github.run_id }} 実行 ID:
名前 | 説明 | 例 |
---|---|---|
download-path | アーティファクトがダウンロードされた絶対パス | /tmp/my/download/path |
現在の作業ディレクトリ ( $GITHUB_WORKSPACE
) にダウンロードします。
手順: - 使用:actions/download-artifact@v4 条件: name:my-artifact- name:ダウンロードされたファイルの構造の表示 実行:ls -R
特定のディレクトリにダウンロードします ( ~
展開もサポートします)。
手順: - 使用:actions/download-artifact@v4 条件: name: my-artifact path: your/destination/dir- name: ダウンロードされたファイルの構造の表示 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
すべてのアーティファクトを現在の作業ディレクトリにダウンロードします。
手順: - 使用: events/download-artifact@v4 - 名前: ダウンロードされたファイルの構造の表示 実行: ls -R
すべてのアーティファクトを特定のディレクトリにダウンロードします。
手順: - 使用:actions/download-artifact@v4 条件: path: path/to/artifacts- name: ダウンロードされたファイルの構造の表示 run: ls -R path/to/artifacts
同じディレクトリにダウンロードするには:
手順: - 使用:actions/download-artifact@v4 条件: path: path/to/artifacts merge-multiple: true- name: ダウンロードされたファイルの構造の表示 run: ls -R path/to/artifacts
その結果、次のようになります。
path/to/artifacts/ ... contents of Artifact-A ... contents of Artifact-B
複数のアーキテクチャ/OS シナリオでは、異なるジョブでアーティファクトが構築される場合があります。すべてのアーティファクトを同じディレクトリにダウンロードするには (またはグロブ パターンに一致するには)、 pattern
使用してmerge-multiple
できます。
ジョブ: アップロード: 戦略: マトリックス: 実行: [ubuntu-latest, macos-latest, Windows-latest] 実行: ${{ math.runs-on }} ステップ: - 名前: ファイルの作成 run: echo "hello from ${{ matrix.runs-on }}" > file-${{ matrix.runs-on }}.txt - 名前: アーティファクトのアップロードでは、actions/upload-artifact@v4 を使用します: 名前: my-artifact-${{ matrix.runs-on }} パス: file-${{ matrix.runs-on }}.txt ダウンロード:ニーズ: アップロード run-on: ubuntu-最新のステップ: - 名前: すべてのアーティファクトのダウンロード使用: action/download-artifact@v4 使用: パス: my-artifact パターン: my-artifact-* merge-multiple: true - 実行: 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-artifact github-token: ${{ Secrets.GH_PAT }} # ターゲット リポジトリの action:read 権限を持つトークン:actions/toolkit run-id: 1234
ファイルのアクセス許可は、アーティファクトのアップロード中に維持されません。すべてのディレクトリには755
が含まれ、すべてのファイルには644
含まれます。たとえば、 chmod
使用してファイルを実行可能ファイルにしてアップロードした場合、ダウンロード後にそのファイルが実行可能ファイルとして設定される保証はなくなります。
権限を保持する必要がある場合は、アーティファクトをアップロードする前に、すべてのファイルをまとめてtar
ことができます。ダウンロード後、 tar
ファイルはファイルのアクセス許可と大文字と小文字の区別を維持します。
- 名前: 'Tar ファイル' 実行: tar -cvf my_files.tar /path/to/my/directory- 名前: 'アーティファクトのアップロード' 使用: アクション/upload-artifact@v4 条件: 名前: my-artifact パス: my_files。タール