전공영역 공부 기록

github action을 로컬에서 실행해보자

악분 2024. 4. 28. 15:43
반응형

https://youtu.be/qQdUFjayxYA

1. 로컬실행이란?

github action 로컬실행은 git push를 하지 않고 workflow를 로컬에서 실행하는 방법입니다. 

 

2. 로컬실행의 장점

이전에 workflow 변동사항을 확인하기 위해 시간이 매우 많이 걸렸습니다. git push를 하고 workflow가 실행될 때까지 기다려야 했습니다. 로컬 실행은 이 과정을 모두 생략하고 로컬에서 worfklow를 바로 실행하여 시간을 절약합니다.

 

3. 제약사항

github action이 주입하는 설정이 일부 없습니다. 예로 github.event객체의 일부 이벤트필드가 없습니다. 그리고 github 관리자페이지에서 설정한 github action environment, secrets을 가져올 수 없어 별도 설정이 필요합니다.

 

4. 실행원리

도커 컨테이터로 worfklow를 실행합니다.

 

5. 실행방법

먼저 act가 인식하는 workflow목록을 확인합니다. act는 디폴트로 “.github/workflows”경로에 있는 workflow를 인식합니다.

act --list

 

workflow목록을 확인한 후, git 루트 디렉터리에서 act명령어를 실행해보세요. “.github/workflows”디렉터리에 있는 모든 workflow가 실행됩니다.

act

 

특정 workflow만 실행하려면 -W인자를 사용합니다.

act -W {workflow 경로}

 

6. 예제

6.1 환경변수 설정예제

workflow에서 사용하는 환경변수는 “.env”파일에 설정합니다.

 

6.2 시크릿 사용예제

workflow에서 사용하는 시크릿은 “.secrets”파일에 설정합니다.

 

 

6.3 docker CLI 사용예제

workflow에서 docker CLI를 사용하려면 docker 소켓을 마운트해야 합니다. act CLI에서는 --container-daemon-socket인자로 docker소켓을 마운트합니다. docker 소켓의 디폴트 경로는 “/var/run/docker.sock”입니다.

act  --container-daemon-socket /var/run/docker.sock

 

맥을 사용하시는 분은 docker 소켓 디폴트 경로가 /var/run/docker.sock이 아니고 홈디렉터리입니다. 따라서 심볼릭 링크로 /var/run/docker.sock파일을 생성하는 것을 추천드립니다.

sudo ln -s ~/.docker/run/docker.sock /var/run/docker.sock

 

참고자료

반응형