@actions/download-artifact
Peringatan
action/download-artifact@v3 dijadwalkan tidak digunakan lagi pada tanggal 30 November 2024 . Pelajari lebih lanjut. Demikian pula, v1/v2 dijadwalkan untuk dihentikan pada tanggal 30 Juni 2024 . Harap perbarui alur kerja Anda untuk menggunakan tindakan artefak v4. Penghentian ini tidak akan memengaruhi versi GitHub Enterprise Server apa pun yang digunakan oleh pelanggan.
Unduh Artefak Tindakan dari Alur Kerja Anda. Didukung secara internal oleh paket @actions/artifact.
Lihat juga unggahan artefak.
@actions/download-artifact
Penting
download-artifact@v4+ saat ini belum didukung di GHES. Jika Anda menggunakan GHES, Anda harus menggunakan v3.
Rilis upload-artifact@v4 dan download-artifact@v4 merupakan perubahan besar pada arsitektur backend Artifacts. Mereka mengalami banyak peningkatan kinerja dan perilaku.
Untuk informasi selengkapnya, lihat dokumentasi @actions/artifact
.
action/upload-artifact@v3
dan di bawahnya tidak didukung.Untuk bantuan dalam mengatasi perubahan, lihat 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 :
Nama | Keterangan | Contoh |
---|---|---|
download-path | Jalur absolut tempat artefak diunduh | /tmp/my/download/path |
Unduh ke direktori kerja saat ini ( $GITHUB_WORKSPACE
):
steps :
- uses : actions/download-artifact@v4
with :
name : my-artifact
- name : Display structure of downloaded files
run : ls -R
Unduh ke direktori tertentu (juga mendukung ~
ekspansi):
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
Jika parameter masukan name
tidak diberikan, semua artefak akan diunduh. Untuk membedakan artefak yang diunduh, secara default, direktori yang ditandai dengan nama artefak akan dibuat untuk setiap artefak. Perilaku ini dapat diubah dengan parameter input merge-multiple
.
Contoh, jika ada dua artefak Artifact-A
dan Artifact-B
, dan direktorinya adalah etc/usr/artifacts/
, struktur direktori akan terlihat seperti ini:
etc/usr/artifacts/
Artifact-A/
... contents of Artifact-A
Artifact-B/
... contents of Artifact-B
Unduh semua artefak ke direktori kerja saat ini:
steps :
- uses : actions/download-artifact@v4
- name : Display structure of downloaded files
run : ls -R
Unduh semua artefak ke direktori tertentu:
steps :
- uses : actions/download-artifact@v4
with :
path : path/to/artifacts
- name : Display structure of downloaded files
run : ls -R path/to/artifacts
Untuk mengunduhnya ke direktori yang sama :
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
Yang akan menghasilkan:
path/to/artifacts/
... contents of Artifact-A
... contents of Artifact-B
Dalam beberapa skenario arch/os, Anda mungkin memiliki Artefak yang dibuat dalam pekerjaan yang berbeda. Untuk mengunduh semua Artefak ke direktori yang sama (atau mencocokkan pola glob), Anda dapat menggunakan pattern
dan merge-multiple
input.
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
Ini menghasilkan direktori seperti ini:
my-artifact/
file-macos-latest.txt
file-ubuntu-latest.txt
file-windows-latest.txt
Mungkin berguna untuk mengunduh Artefak dari alur kerja lain, atau bahkan repositori lain. Secara default, izin dibatasi sehingga hanya dapat mengunduh Artefak dalam alur kerja yang dijalankan saat ini. Untuk meningkatkan izin untuk skenario ini, Anda dapat menentukan github-token
bersama dengan repositori lain dan menjalankan pengidentifikasi:
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
Izin file tidak dipertahankan selama pengunggahan artefak. Semua direktori akan memiliki 755
dan semua file akan memiliki 644
. Misalnya, jika Anda membuat file dapat dieksekusi menggunakan chmod
dan kemudian mengunggah file tersebut, setelah pengunduhan, file tersebut tidak lagi dijamin akan ditetapkan sebagai file yang dapat dieksekusi.
Jika Anda harus mempertahankan izin, Anda dapat tar
semua file Anda sebelum artefak diunggah. Pasca pengunduhan, file tar
akan mempertahankan izin file dan sensitivitas huruf besar-kecil.
- 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