개요

이전에 Jenkins, Git Action을 사용해보면서 항상 어려웠던 점이 파이프라인을 구성하고 이를 테스트 해보는 작업 환경에 대한 필요성을 많이 느꼈다.

파이프라인도 결국 개발자가 원하는 행위를 동작하기 위해 작성한 코드이고, 이를 쉽고 빠르게 돌려볼수있는 환경이 있다면 빠르게 오류에 대한 피드백을 받고 수정할 수 있기 때문이다.

Jenkins는 직접 파이프라인을 바로바로 수정하면서 실행할 수 있기 때문에 파이프라인을 쉽게 개발, 스테이징, 운영 환경에 대해 스위칭하면서 테스트가 가능했었다.

Git Action은 Gitlab CI/CD와 같이 Git Action workflows YAML파일을 통해서 파이프라인을 실행한다. 해당 파일이 버전 관리가 되기때문에 한번 수정해서 테스트하려면 커밋을 찍고 푸시를 해야한다. 이 과정에서 불필요한 커밋도 생겨나고 테스트하기가 쉽지 않다. 나는 https://github.com/nektos/act (46k stars) 라는 오픈소스 도구로 로컬 환경에서 workflows YAML 파일에 대한 파이프라인을 실행 해볼 수 있는 환경을 구성해서 테스트를 진행했었다.

위와 같은 이유로 Gitlab Pipeline을 로컬 환경에서 테스트 해볼 수 있는 방법을 검색해봤다.

gitlab-ruuner exec 사용하기

Github Action을 위한‣ 처럼 파이프라인 전체를 테스트 할 수는 없지만 간단하게 개별 job에 대한 실행을 해볼 수 있는 방법이 있었다. Gitlab CI의 경우 기본적으로 SaaS 형태로 파이프라인을 실행하는 runner를 제공해주지만 이를 내가 원하는 서버(머신)에서 동작하도록 할 수 있고, 이를 위한 에이전트성 도구(gitlab-runner)를 제공하는데 해당 툴을 이용해서 단일 job에 대한 실행을 로컬환경에서 동작해볼 수 있다.

참고로 gitlab-runner exec 명령어는 공식문서에서 deprecated된 명령어고 17.0부터는 삭제될 명령어라고 한다.

  1. binary 다운로드
sudo curl --output /usr/local/bin/gitlab-runner "<https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-arm64>"
  1. 실행 권한 설정
sudo chmod +x /usr/local/bin/gitlab-runner