@actions/download-artifact
คำเตือน
actions/download-artifact@v3 มีกำหนดเลิกใช้งานในวันที่ 30 พฤศจิกายน 2024 เรียนรู้เพิ่มเติม ในทำนองเดียวกัน v1/v2 มีกำหนดเลิกใช้งานในวันที่ 30 มิถุนายน 2024 โปรดอัปเดตเวิร์กโฟลว์ของคุณเพื่อใช้เวอร์ชัน 4 ของการดำเนินการกับอาร์ติแฟกต์ การเลิกใช้งานนี้จะไม่ส่งผลกระทบต่อ GitHub Enterprise Server เวอร์ชันที่มีอยู่ใดๆ ที่ลูกค้าใช้งาน
ดาวน์โหลด Actions Artifacts จากการรันเวิร์กโฟลว์ของคุณ ขับเคลื่อนภายในโดยแพ็คเกจ @actions/artifact
ดูเพิ่มเติมที่การอัปโหลดสิ่งประดิษฐ์
@actions/download-artifact
การสูญเสียสิทธิ์
ดาวน์โหลด Single Artifact.mq4
ดาวน์โหลดสิ่งประดิษฐ์ทั้งหมด
ดาวน์โหลดอาร์ติแฟกต์ (กรอง) หลายรายการไปยังไดเร็กทอรีเดียวกัน
ดาวน์โหลดอาร์ติแฟกต์จากการรันเวิร์กโฟลว์หรือที่เก็บข้อมูลอื่น
อินพุต
เอาท์พุต
การปรับปรุง
ทำลายการเปลี่ยนแปลง
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 พร้อมด้วย: # ชื่อของสิ่งประดิษฐ์ที่จะดาวน์โหลด # หากไม่ได้ระบุ อาร์ติแฟกต์ทั้งหมดสำหรับการรันจะถูกดาวน์โหลด # ไม่จำเป็น. ชื่อ: # เส้นทางปลายทาง. รองรับการขยายตัวหนอนพื้นฐาน # ไม่จำเป็น. ค่าเริ่มต้นคือเส้นทาง $GITHUB_WORKSPACE: # รูปแบบ glob ของสิ่งประดิษฐ์ที่ควรดาวน์โหลด # ละเว้นหากมีการระบุชื่อ # ไม่จำเป็น. รูปแบบ: # เมื่อจับคู่สิ่งประดิษฐ์หลายรายการ ลักษณะการทำงานของไดเรกทอรีปลายทางจะเปลี่ยน # หากเป็นจริง สิ่งประดิษฐ์ที่ดาวน์โหลดจะอยู่ในไดเร็กทอรีเดียวกันที่ระบุโดยพาธ # หากเป็นเท็จ สิ่งประดิษฐ์ที่ดาวน์โหลดจะถูกแยกออกเป็นไดเรกทอรีที่มีชื่อแต่ละรายการภายในเส้นทางที่ระบุ # ไม่จำเป็น. ค่าเริ่มต้นคือการรวมหลายรายการ 'เท็จ': # โทเค็น GitHub ที่ใช้ในการตรวจสอบสิทธิ์กับ GitHub API # สิ่งนี้จำเป็นเมื่อดาวน์โหลดสิ่งประดิษฐ์จากพื้นที่เก็บข้อมูลอื่นหรือจากเวิร์กโฟลว์อื่น # ไม่จำเป็น. หากไม่ได้ระบุ การดำเนินการจะดาวน์โหลดอาร์ติแฟกต์จาก repo ปัจจุบันและเวิร์กโฟลว์ปัจจุบันที่เรียกใช้ github-token: # เจ้าของพื้นที่เก็บข้อมูลและชื่อพื้นที่เก็บข้อมูลรวมกันโดย "/" # หากระบุ github-token นี่คือพื้นที่เก็บข้อมูลที่จะดาวน์โหลดอาร์ติแฟกต์ # ไม่จำเป็น. ค่าเริ่มต้นคือพื้นที่เก็บข้อมูล ${{ github.repository }}: # รหัสของเวิร์กโฟลว์ทำงานที่ซึ่งส่วนการดาวน์โหลดที่ต้องการถูกอัปโหลดมา # หากระบุ github-token นี่คือการเรียกใช้ที่สิ่งประดิษฐ์จะถูกดาวน์โหลด # ไม่จำเป็น. ค่าเริ่มต้นคือ ${{ github.run_id }} run-id:
ชื่อ | คำอธิบาย | ตัวอย่าง |
---|---|---|
download-path | เส้นทางสัมบูรณ์ที่มีการดาวน์โหลดอาร์ติแฟกต์ | /tmp/my/download/path |
ดาวน์โหลดไปยังไดเร็กทอรีการทำงานปัจจุบัน ( $GITHUB_WORKSPACE
):
ขั้นตอน: - ใช้: actions/download-artifact@v4 ด้วย: ชื่อ: my-artifact- ชื่อ: โครงสร้างการแสดงผลของไฟล์ที่ดาวน์โหลด รัน: ls -R
ดาวน์โหลดไปยังไดเร็กทอรีเฉพาะ (รองรับ ~
ส่วนขยายด้วย):
ขั้นตอน: - การใช้งาน: actions/download-artifact@v4 ด้วย: ชื่อ: my-artifact path: your/destination/dir- name: โครงสร้างการแสดงผลของไฟล์ที่ดาวน์โหลด ทำงาน: 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
ดาวน์โหลดสิ่งประดิษฐ์ทั้งหมดไปยังไดเร็กทอรีการทำงานปัจจุบัน:
ขั้นตอน: - ใช้: actions/download-artifact@v4- ชื่อ: โครงสร้างการแสดงผลของไฟล์ที่ดาวน์โหลด รัน: ls -R
ดาวน์โหลดสิ่งประดิษฐ์ทั้งหมดไปยังไดเร็กทอรีเฉพาะ:
ขั้นตอน: - การใช้งาน: actions/download-artifact@v4 ด้วย: path: path/to/artifacts- name: โครงสร้างการแสดงผลของไฟล์ที่ดาวน์โหลด ทำงาน: ls -R path/to/artifacts
หากต้องการดาวน์โหลดลงในไดเร็กทอรี เดียวกัน :
ขั้นตอน: - การใช้งาน: actions/download-artifact@v4 ด้วย: path: path/to/artifacts merge-multiple: true- name: โครงสร้างการแสดงผลของไฟล์ที่ดาวน์โหลด ทำงาน: ls -R path/to/artifacts
ซึ่งจะส่งผลให้:
path/to/artifacts/ ... contents of Artifact-A ... contents of Artifact-B
ในสถานการณ์ Arch/OS หลายสถานการณ์ คุณอาจมี Artifact ที่สร้างขึ้นในงานที่แตกต่างกัน หากต้องการดาวน์โหลด Artifacts ทั้งหมดลงในไดเร็กทอรีเดียวกัน (หรือจับคู่รูปแบบ glob) คุณสามารถใช้ pattern
และอินพุต merge-multiple
ได้
งาน: อัปโหลด: กลยุทธ์: เมทริกซ์: run-on: [ubuntu-latest, macos-latest, windows-latest] run-on: ${{ matrix.runs-on }} ขั้นตอน: - ชื่อ: สร้างไฟล์เรียกใช้: 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: - ชื่อ: ดาวน์โหลดสิ่งประดิษฐ์ทั้งหมด ใช้: actions/download-artifact@v4 ด้วย: พาธ: รูปแบบ my-artifact: my-artifact-* ผสานหลายรายการ: จริง - วิ่ง: ls -R my-artifact
ผลลัพธ์ที่ได้คือไดเร็กทอรีดังนี้:
my-artifact/ file-macos-latest.txt file-ubuntu-latest.txt file-windows-latest.txt
การดาวน์โหลดอาร์ติแฟกต์จากการรันเวิร์กโฟลว์อื่น หรือแม้แต่ที่เก็บข้อมูลอื่นอาจมีประโยชน์ ตามค่าเริ่มต้น สิทธิ์จะถูกกำหนดขอบเขตเพื่อให้สามารถดาวน์โหลดเฉพาะสิ่งประดิษฐ์ภายในเวิร์กโฟลว์ปัจจุบันเท่านั้น หากต้องการยกระดับสิทธิ์สำหรับสถานการณ์นี้ คุณสามารถระบุ github-token
พร้อมกับพื้นที่เก็บข้อมูลอื่นและเรียกใช้ตัวระบุได้:
ขั้นตอน: - ใช้: actions/download-artifact@v4 ด้วย: ชื่อ: my-other-artifact github-token: ${{ Secrets.GH_PAT }} # โทเค็นพร้อม actions:read สิทธิ์ในที่เก็บ repo เป้าหมาย: actions/toolkit run-id: 1234
สิทธิ์ของไฟล์จะไม่ได้รับการดูแลในระหว่างการอัปโหลดสิ่งประดิษฐ์ ไดเร็กทอรีทั้งหมดจะมี 755
และไฟล์ทั้งหมดจะมี 644
ตัวอย่างเช่น หากคุณสร้างไฟล์ที่เรียกใช้งานได้โดยใช้ chmod
แล้วอัปโหลดไฟล์นั้น จะไม่รับประกันว่าไฟล์ดังกล่าวจะถูกตั้งค่าเป็นไฟล์เรียกทำงานภายหลังการดาวน์โหลดไฟล์อีกต่อไป
หากคุณต้องรักษาสิทธิ์ไว้ คุณสามารถ tar
ไฟล์ทั้งหมดของคุณเข้าด้วยกันก่อนที่จะอัปโหลดอาร์ติแฟกต์ หลังดาวน์โหลด ไฟล์ tar
จะรักษาสิทธิ์ของไฟล์และคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- ชื่อ: เรียกใช้ 'ไฟล์ Tar': tar -cvf my_files.tar /path/to/my/directory- ชื่อ: 'Upload Artifact' ใช้: actions/upload-artifact@v4 ด้วย: name: my-artifact path: my_files. ทาร์