Gitlab Runner CI/CD 세팅 경험기
Gitlab Runner CI/CD 를 세팅하면서 겪은 경험을 기록해둔다.
2026.01.29
- ci/cd
- gitlab
- gitlab-runner
- 경험기
목차
배경
최근 회사에서 특정 프로젝트를 진행해야 되는 상황이 있었고 프로젝트를 본격적으로 들어가기에 앞서 세팅할 수 있는 시간이 있었다. 이 시간에 나는 CI/CD를 세팅하여 merge request 시 빌드와 린트 테스트, merge되었을 시 빌드 및 배포까지 자동화를 하여 개발 생산성을 높이고 싶었다.
참고로 우리 프로젝트는 Next.js의 SSR을 사용하고 있으므로 런타임 서버가 필요한 상황이었다. 따라서 런타임 서버를 직접 관리하고 온프레미스 서버에 배포해야 되는 상황이었다.
경험기
그래서 회사에서 CI/CD 세팅을 주도적으로 진행하게 되었다. 처음이 다 보니 많이 헤메었고 테스트까지 어찌저찌 완성을 했다. 오늘 일을 끝마쳤는데 경험을 기록해두면 나중 먼 훗날에 내가 이 글을 보고 경험을 떠올릴 수 있게 글로 적고자 한다.
일단 내가 처음으로 한 일은 GitLab Runner 머신으로 사용할 서버에서 gitlab-runner를 설치하고 그 러너의 토큰 값을 이용하여 실제 프로젝트 레포지토리에서 사용할 러너로 매핑하였다.
그 이후에 YAML 파일을 작성하였는데, main/dev branch로 MR을 날릴 시 pnpm build를 통해 해당 소스가 제대로 빌드가 되는지, 그리고 run lint를 통해 lint rule에 맞게 코드가 잘 작성되었는지 확인하는 명령어를 작성했고
그리고 main/dev branch로 날린 MR이 merge되면 머지된 소스를 기반으로 build 후 회사 온프레미스 서버에 배포까지 진행하도록 하였다.
build 테스트는 러너 서버의 gitlab-runner/ 하위에서 진행되기에 runner로 진행되는 환경을 실제 운영 환경과 동일하게 설정해줘야 하기에 build test 진행 시 실제 우리 프로젝트에서 설정한 특정 Node 버전, 그리고 pnpm 버전을 이용하여 build를 실행할 수 있도록 하였다.
YAML 파일 작성 후에는 배포 스크립트를 작성했는데, 배포 스크립트는 테스트를 하면서 계속 수정을 하였다. 수정한 사항은 정말 여러 가지였다.
일단 gitlab-runner가 executor로서 스크립트에 접근하기 위해서 배포 스크립트의 파일 권한을 600으로 바꾸었고 그리고 온프레미스 서버에 배포할 때 서버에서 특정 유저로 전환하고 프로젝트 경로로 이동한 뒤 특정 브랜치 소스를 받도록 스크립트를 작성하였다.
특정 브랜치 소스를 받을 때 항상 GitLab access token을 입력하도록 지금 서버는 설정되어 있는데, 이를 피하기 위해 git 설정(git config)에 해당 토큰을 인증 정보로 미리 등록하고 이를 이용하여 원격 레포지토리에 접근할 수 있도록 하였는데 이때 토큰은 프로젝트의 레포지토리에서 생성하였다.
위 사항 외에도 배포할 시 서버에서 특정 user로 변경해서 배포하는데 그때 Node와 pnpm 경로를 제대로 찾지 못하는 문제도 있었는데 이는 경로를 잡아주는 명령어를 추가하여 해결할 수 있었다.
어쨌든 우여곡절 끝에 빠르게 CI/CD를 완성할 수 있었다.