@actions/download-artifact
คำเตือน
actions/download-artifact@v3 มีกำหนดเลิกใช้งานในวันที่ 30 พฤศจิกายน 2024 เรียนรู้เพิ่มเติม ในทำนองเดียวกัน v1/v2 มีกำหนดเลิกใช้งานในวันที่ 30 มิถุนายน 2024 โปรดอัปเดตเวิร์กโฟลว์ของคุณเพื่อใช้เวอร์ชัน 4 ของการดำเนินการกับอาร์ติแฟกต์ การเลิกใช้งานนี้จะไม่ส่งผลกระทบต่อ GitHub Enterprise Server เวอร์ชันที่มีอยู่ใดๆ ที่ลูกค้าใช้งาน
ดาวน์โหลด Actions Artifacts จากการรันเวิร์กโฟลว์ของคุณ ขับเคลื่อนภายในโดยแพ็คเกจ @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
และไดเร็กทอรีคือ 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
ในสถานการณ์ Arch/OS หลายสถานการณ์ คุณอาจมี Artifact ที่สร้างขึ้นในงานที่แตกต่างกัน หากต้องการดาวน์โหลด Artifacts ทั้งหมดลงในไดเร็กทอรีเดียวกัน (หรือจับคู่รูปแบบ glob) คุณสามารถใช้ 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