들어가기 전
이전 시간에 우리는 workflow 구조에 다양한 키워드를 살펴봤다.
거기서 uses 키워드를 이용해 이미 만들어진 것을 이용할 때 유용한 Marketplace action들을
모아 놓으면 추후 workflow를 만들 때 많은 도움이 될 것 같다.
1. checkout
첫번 째 action은 바로 workflow 제작 시 반드시 필요한 내용인 checkout action이다.
공식문서
사용 목적
코드 저장소에 올려둔 코드를 CI서버로 내려받은 후, 특정 브랜치로 전환하는 행위
실제로 우리 CI서버는 체크아웃 전까지 우리가 올려놓은 코드를 전혀 알 수 없다.
그렇기 때문에 checkout action은 workflow를 사용할 때 가장 먼저 실행되는 action이라고 말할 수 있다.
테스트를 하든 통합을 하든 준비물인 코드 데이터가 있어야하는데 우리 CI서버는 그 코드 데이터를 checkout action을
통해 받아 온다.
사용법
보통 다음과 같이 별도의 매개변수 없이 사용하지만 조금 더 자세히 사용하기 위해서는 여러가지 매개변수를
명시해줘야한다.
내용이 많기 때문에 위 공식문서를 직접 들어가서 찾아보자.
- uses: action/checout@v4
2. cache
두번 째 action은 바로 cache다. 말 그대로 cache 동작을 위해 자주사용하는 action 같아 보인다.
공식문서
사용 목적
1. 캐시 결과 알려주기
- cache-hit인지 miss인지 알려준다.
- cahce-hit일 경우 true, 아닐 경우 공백으로 던져준다.
2. 캐싱값 불러오기(restore) 또는 저장하기(save)
- cache-hit일 경우 CI 서버에 해당 파일들을 내려 받는다. (restore)
- cache-miss일 경우 해당 작업 종료 시점에 CI 서버 상의 path에 파일들을 캐싱한다. (save)
사용법
# 의존성 캐싱 key 계산
- name: Compute package dependency cache key
id: compute_package_hash
run: echo "package_hash=${{ hashFiles('Package.swift') }}" >> $GITHUB_OUTPUT
# hashFiles(path): 일치하는 hashSet 반환 ,그 값을 outpus에 담음
# steps.cache_package_dependencies.outputs.package_hash = hash 값
- name: Check package dependency cache
uses: actions/cache@v3
id: cache_package_dependencies
with: # cache@v3에 사용할 파라미터 명시
path: ${{ env.CACHED_PACKAGE_DEPENDENCY_PATHS }}
key: ${{ steps.compute_package_hash.outputs.package_hash }}
# steps.[action_id].output.cache-hit에 결과가 저장, hit이면 'true' miss면 공백
# steps.cache_package_dependencies.outputs.cache-hit = cache-hit 여부 저장
cache 액션은 key와 path가 필요하기때문에 key를 만들어줘야한다.
그리고 보통 hashFiles를 이용해서 key를 만든다.
hashFiles(path)은 GitHub Action에서 제공되는 내장 함수로 해당 path에 있는 파일을 이용해서
SHA 해시값을 만든다. 파일의 내용이 바뀌면 역시 해시값이 바뀌므로 상태에 따른 별도의 key를 만들어 낼 수 있다.
cache-hit
key에 해당하는 path의 파일(이전 결과)가 있다면 다음 두가지 동작이 실행된다.
- steps.[action_id].output.cache-hit = 'true'
- key에 대한 path파일을 현재 CI서버에 내려받는다.(restore)
cache-miss
key에 해당하는 path의 파일(이전 결과)가 없다면 다음 두가지 동작이 실행된다.
- steps.[action_id].output.cache-hit = '' (공백)
- key에 path의 파일을 저장 (save)
3. mise
mise를 설치한다.
공식문서
사용법
- uses: jdx/mise-action@v2
'깃 > action' 카테고리의 다른 글
[ 부스트 캠프 ] CI를 통한 범인 찾기 (1) | 2024.11.28 |
---|---|
workflow 만들기 (0) | 2024.11.17 |
gitAction과 구조 (0) | 2024.11.17 |