본문 바로가기
C.W.K.
Stream
Lesson 07 of 13 · published

Act — 로컬 워크플로 테스트

~9 min · act, local, debugging

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Push-and-pray는 그만두자

Act(nektos/act)는 GitHub Actions 워크플로를 도커에서 로컬로 실행해 준다. CI 시간을 낭비하지 않고, Actions 탭을 'fix typo' 커밋으로 지저분하게 만들지 않으면서 워크플로 YAML을 반복 수정하고, 매트릭스를 확장해 디버깅하고, 표현식을 검증할 수 있어서 아주 유용해.

설치와 실행

brew install act       # 또는: gh extension install nektos/gh-act
act -W .github/workflows/ci.yml
act -W .github/workflows/ci.yml -j test # 특정 작업
act pull_request # 특정 event

한계점

  • Act는 도커 위에서 돌아가니까, Linux Act 환경에서는 macOS 작업을 실행할 수 없어.
  • Apple 전용 액션, 비밀값 저장소, OIDC 같은 일부 GitHub-호스팅형 기능은 로컬에서 작동하지 않아.
  • 이미지가 GitHub에서 제공하는 것과 달라서 가끔 예상치 못한 작은 차이가 생길 수 있어.

함께 쓰면 좋은 도구

  • actionlint — 워크플로 YAML을 정적으로 검사해 줘. 실행 조건 이름이나 표현식의 오타 같은 걸 실행 없이도 잡아낼 수 있어.
  • gh act — Act를 감싸주는 GitHub CLI 확장이야.

Code

워크플로 + actionlint + Act 루프·bash
# Add a Makefile target that runs both checks
cat <<'EOF' > Makefile
ci-lint:
	actionlint .github/workflows/*.yml

ci-run:
	act -W .github/workflows/ci.yml -j test

ci-all: ci-lint ci-run
EOF

# Iterate without pushing
make ci-all

External links

Exercise

Act랑 actionlint를 설치해 봐. 저장소의 워크플로에서 실행해 보고, 이번 주 안에 actionlint 경고를 전부 수정해. 다음에 'fix 워크플로' 커밋을 푸시할 뻔했다면 Act를 대신 사용해 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.