@actions/download-artifact
경고
actions/download-artifact@v3은 2024년 11월 30일 에 지원 중단될 예정입니다. 자세히 알아보세요. 마찬가지로 v1/v2도 2024년 6월 30일 에 지원 중단될 예정입니다. v4 아티팩트 작업을 사용하려면 워크플로를 업데이트하세요. 이번 지원 중단은 고객이 사용 중인 기존 GitHub Enterprise Server 버전에 영향을 미치지 않습니다.
워크플로 실행에서 작업 아티팩트를 다운로드합니다. @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 시나리오에서는 다양한 작업에 아티팩트가 내장되어 있을 수 있습니다. 모든 아티팩트를 동일한 디렉터리에 다운로드하거나 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