GitHub Actions, 개발자들의 고통과 해결책은?

by DD
4개월 전
조회수 46

GitHub Actions의 느린 피드백 루프(Feedback Loop)디버깅의 어려움에 대한 불만이 제기됨

로컬 환경에서 실행 가능한 스크립트 활용, 스크립트 기반 CI/CD 파이프라인 구축을 권장함

컨테이너 기반 CI/CD 접근 방식과 Nix를 활용한 환경 구축을 대안으로 제시함

GitHub Actions의 단순성 유지(Keep It Simple, Stupid)재사용성 확보를 위한 전략 제시

GitHub Actions의 주요 문제점: 느린 피드백 루프

커뮤니티에서는 GitHub Actions의 가장 큰 문제점으로 느린 피드백 루프(Feedback Loop)를 지적한다. 즉, 코드 변경 후 결과를 확인하기 위해 푸시(Push) 및 완료 대기 시간이 길다는 것이다. 이러한 문제를 해결하기 위해 로컬에서 실행 가능한 스크립트를 활용하고, GitHub Actions 기능을 점진적으로 개선(Progressive Enhancement)하는 방안을 제시한다. 특히, `workflow_dispatch`와 `gh workflow run`을 사용하여 개발 흐름을 유지하는 방법을 제안한다.

CI/CD 파이프라인 설계 및 스크립트 기반 접근 방식

개발자들은 GitHub Actions 워크플로우(Workflow)에서 로직을 최소화하고, 스크립트 기반 CI/CD 파이프라인(Script-based CI/CD Pipeline)을 구축할 것을 권장한다. 특히, CI 친화적인 스크립트 언어(예: PowerShell)를 사용하고, 워크플로우는 단순하게 유지하며, 스크립트를 호출하는 방식으로 설계할 것을 제안한다. 이를 통해 로컬에서 스크립트 개발 및 테스트가 가능하며, 디버깅(Debugging)을 용이하게 할 수 있다.

컨테이너 기반 CI/CD 및 Nix를 활용한 환경 구축

일부 개발자들은 컨테이너(Container)를 사용하여 CI 프로세스를 구축하고, 로컬 환경에서 실행하는 방식을 제안한다. 이는 CI 플랫폼 종속성을 줄이고, 로컬 환경과의 일관성을 유지하는 데 도움이 된다. 또한, Nix를 사용하여 개발 환경을 구축하고, GitHub Actions에서 `nix-shell --run` 또는 `nix develop --command`를 활용하여 재현 가능한 환경(Reproducible Environment)을 구축하는 방법을 제시한다. 이는 동료 개발자 및 기여자와의 협업을 용이하게 한다.

GitHub Actions 사용 시 고려 사항

GitHub Actions를 사용할 때, 단순성 유지(KISS) 원칙을 준수하고, 디버깅 용이성(Debugging Ease)을 고려하여 CI 파이프라인을 설계해야 한다. 또한, 서드 파티 러너(Third-party Runners)를 활용하여 디버깅 기능을 개선할 수 있다. 스크립트 내에 상태를 출력하고, 버전 정보를 표시하는 등 미래를 위한 설계(Future-Proofing)가 필요하다는 점을 강조한다.

I Hate GitHub Actions with Passion