Github Actions - Artifact, 서로 다른 job에서 파일 공유하기
github actions에서 artifact는 서로 다른 job의 파일을 공유할 때 사용한다!
Upload Artifact
artifact 파일은 업로드 되어있는 동안은 아무나 다운 받을 수 있기 때문에, 민감성 정보가 담긴 파일을 업로드 하지 않도록 유의해야 한다.
- artifact 파일의 외부 노출 관리를 제한하는 방법으로는
artifact 보관 기간을 짧게 설정하거나 사용 후 바로 삭제, 비공개 repository에서 artifact 생성하는 방법이 있다.
옵션 정보
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- uses: actions/upload-artifact@v4 # 24.09.01 기준 최신 버전
with:
# 옵션 값
# 생성할 artifact 이름
# 지정하지 않을 경우 'artifact'로 생성된다.
name:
# 필수 값
# 업로드 할 파일이나 폴더 경로를 설정
path:
# 옵션 값
# 파일을 찾지 못한 경우 사용할 옵션
# warn: 경고 문구를 출력하고 action을 계속 수행
# error: 에러 문구를 출력하고 action을 중지함
# ignore: 관련 문구를 출력하지 않고 action을 계속 수행
# 옵션 값을 추가하지 않을 경우 기본 값은 'warn'이다.
if-no-files-found:
# 옵션 값
# 보존 기간 설정
# 1일 ~ 90일 사이로 설정할 수 있다.
# 옵션 값을 설정하지 않을 경우 repository에 기본 설정된 기간이 적용된다.
retention-days:
# 옵션 값
# artifact 압축 레벨 설정
# 0 ~ 9 사이로 설정 가능
# 0 레벨은 압축을 하지 않으므로 업로드 속도가 빨라진다.
# 기본 값은 '6'
compression-level:
# 옵션 값
# true로 설정 시 같은 이름의 artifact가 있으면 삭제하고 이번 업로드를 진행한다.
# false로 설정 시, 같은 이름의 artifact가 있으면 action을 중지한다.
# artifact가 없으면 해당되지 않는 옵션이다.
# 기본 값은 'false'
overwrite:
# 옵션 값
# 지정한 경로 중 숨김 파일의 업로드 여부를 설정
# 기본 값은 'false'
include-hidden-files:
Download Artifact
Upload Artifact로 생성한 artifact를 다운받는다.
다른 repository에 위치한 artifact를 가져올 수도 있다.
옵션 정보
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
uses: actions/download-artifact@v4 # 24.09.01 기준 최신 버전
with:
# 옵션 값.
# artifact 이름.
# 생략시 모든 artifact를 다운 받는다.
name:
# 옵션 값
# 목적 경로
path:
# 옵션 값
# 다운받을 artifact 이름 패턴
pattern:
# 옵션 값(기본 false)
# 여러개의 artifact가 대상일 때
# - true를 적용하면 하나의 디렉토리에 다운받음
# - false를 적용하면 각 이름의 디렉터리로 다운받음
merge-multiple:
# 옵션 값
# 다른 repository의 artifact를 다운받으려 할 때 필요
github-token:
# 옵션 값
# 다른 repository의 artifact를 다운받으려 할 때 필요
repository:
# 옵션 값
# 다운받을 artifact가 포함된 workflow id
run-id:
사용 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
name: artifact study
on:
push:
branches:
- main
jobs:
upload:
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: upload-artifact
path: |
**/build/libs/**.jar
**/compose**.yml
**/**ockerfile
if-no-files-found: error
download:
runs-on: ubuntu-latest
needs: upload
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: upload-artifacts
- upload 실행 결과
- download 실행 결과
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
ls -al . ├── compose-build.yml ├── compose-local.yml ├── compose.yml ├── discovery │ ├── compose.yml │ ├── server-eureka │ │ ├── Dockerfile │ │ └── build │ │ └── libs │ │ └── server-eureka-0.0.1.jar │ └── server-gateway │ ├── Dockerfile │ └── build │ └── libs │ └── server-gateway-0.0.1.jar └── simpleBoard02 ├── a-common-jwt │ └── build │ └── libs │ └── a-common-jwt-0.0.1-plain.jar ├── b-server-user │ ├── Dockerfile │ └── build │ └── libs │ └── b-server-user-0.0.1.jar ├── c-server-article │ ├── Dockerfile │ └── build │ └── libs │ └── c-server-article-0.0.1.jar └── compose.yml 18 directories, 14 files
참고한 사이트
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.