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”파일에 설정합니다.
- 예제코드 링크: https://github.com/choisungwook/github_action_cron/blob/main/.github/workflows/environment.yml
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
참고자료
'전공영역 공부 기록' 카테고리의 다른 글
EKS 클러스터 생성 시 부여되는 관리자 권한의 변화와 관리 방법 (0) | 2024.05.19 |
---|---|
istio circuit break (0) | 2024.05.05 |
github action workflow로 cron을 실행할 때 주의사항 (0) | 2024.04.24 |
EKS IRSA 동작원리 톺아보기 (2) | 2024.04.13 |
IRSA가 등장하기 전, 설정했던 방법들 (0) | 2024.04.11 |