본문 바로가기

CI,CD/Github Actions

아티팩트(Artifact)와 결과값(Output) 사용해보기

아티팩트의 사전적 정의는

인공 피조물이란 뜻인데...

 

저 사진의 아티팩트는 던전앤파이터라는 게임에서 나온 장면이다.

 

본인의 크리처라는 애들을 함께 데리고 다니는데

그냥 쉽게 말해서 애완견 같은 애들이다. 

일종의 버프를 주면서 캐릭터를 강화시키는 애들인데...

그런 크리처(Creature 크리처는 자연의 산물이다) 에 아티팩트(인공 피조물)을 주어 

인공적으로 강화한다(?) 뭐 이런 뜻인것 같다.

 

이걸 깃헙 액션에서는 깃헙 액션의 작업을 하면서 만들어진

인공의 결과물 정도로 생각하면 된다.

 

이걸 업로드 할수도 있고, 다운로드 할 수도 있다.

간단하게 알아보자

 

문법도 쉽다

upload-artifact를 사용해서 

dist에 있는 파일들을 dist-files라는 이름으로 업로드 하는것이다.

 

그리고 깃헙액션을 실행하면

저렇게 Artifacts 항목에서 클릭하면 다운로드 가능하게 나온다.

물론 download-artifact 기능으로 다운로드 받을수도 있다.

 

그럼 이걸 어디에 쓰냐면

테스트 커버리지 리포트나, 액션 실행과정에서 나온 로그들을 수집해서
S3같은곳으로 보내 저장한다고 한다.

 

물론 파이프 심벌을 이용하여 여러개의 개별 파일을 지정할수도 있다.

 

Output 사용하고 접근하기

 

어떤 정보나 출력결과, 혹은 변수 등을 워크플로우 안에서 접근할 일이 생긴다

그럴때 사용하는게 Output이다

(깃헙액션에서 환경변수 접근은 따로 공부할 일이 있을것이다)

 

${{ 으로 시작되는건 깃헙액션 자체 Context에 접근하는 문법이다

공식문서에 매우 자세하게 나와있다

 

https://docs.github.com/ko/actions/learn-github-actions/contexts

 

컨텍스트 - GitHub Docs

컨텍스트는 워크플로 실행, 변수, 실행기 환경, 작업 및 단계에 대한 정보에 액세스하는 방법입니다. 각 컨텍스트는 문자열 또는 다른 개체일 수 있는 속성을 포함하는 개체입니다. 컨텍스트, 개

docs.github.com

문법도 쉽다

그냥 steps에서 publish란 것이 있는데(아래 코드 참조)

output으로 빼놓은게 있어요. 그 이름이 script-file입니다
라고 이해하면 된다.

아래 run에 있는 코드는

js로 끝나는 코드 해당 경로에서 찾아가지고 $GITHUB_OUTPUT 으로 뺀다는 소리다

원래 다른 문법으로 이 작업을 처리했는데 

5월 31일자로 이 문법으로 바뀌었다고 한다.

 

다음 블로그를 참조하자

 

https://blog.outsider.ne.kr/1651

아래 문법 역시 needs 컨텍스트 공식문서에 나와있는데,

'현재 작업이 의존하는 작업에 대한 특정 출력의 값' 이라고 나와있다.

 

그럼 우리가 아까 output으로 넣어놨던

js파일에대한 이름이 출력될 것이다. 결과를 살펴보자 

 

결과가 잘 출력되었다.