GoCD 파이프라인을 github로 관리하기 Pipelines as Code (PaC)
안녕하세요. 달소입니다.
이번글에서는 GoCD Pipeline을 코드로 구성하는 Pipelines as Code에 대해서 알아보고 적용하고자 합니다.
기본적으로 GoCD의 경우 파이프라인을 만드는 UI도 제공하지만 UI에서는 초기 설정만 편하고 변경 추적이나 파이프라인을 한눈에 볼 수 있는 가시성이 부족해서 가능하면 PaC로 운영하는것을 추천드립니다.
GoCD에서 파이프라인을 설정하는 두 가지 방식, 즉 UI를 사용하는 것과 코드를 사용하는 것(Pipelines as Code)의 장단점을 명확하게 비교하여 설명해 드리겠습니다.
UI 기반 설정 vs. 코드 기반 설정(PaC): 장단점 비교
|
특징 |
UI 기반 설정 |
코드 기반 설정 (Pipelines as Code) |
|
관리 방식 |
웹 화면을 마우스로 직접 클릭하여 파이프라인을 생성하고 수정합니다. |
|
|
장점 |
✅ 직관적이고 배우기 쉬움: 처음 사용하는 사람도 화면을 보면서 쉽게 따라 할 수 있습니다. |
✅ 버전 관리: 모든 변경 이력( |
|
단점 |
❌ "ClickOps"의 함정: 모든 것이 수동 작업이라 실수가 발생하기 쉽고, 작업이 복잡해질수록 비효율적입니다. |
❌ 학습 곡선: GoCD의 YAML 또는 JSON 설정 파일 문법을 익혀야 합니다. |
|
추천 사용 사례 |
• GoCD를 처음 배우는 단계 |
• 팀 단위로 협업하는 모든 프로덕션 환경 |
이 가이드는 UI에서 벗어나, 코드를 통해 파이프라인을 정의하고 버전 관리하는 방법을 안내합니다. GoCD에서는 이 기능을 **'설정 리포지토리(Config Repository)'**라고 부릅니다.
기본 원리는 간단합니다.
- 파이프라인의 정의가 담긴
gocd.yaml파일을 Git 저장소에 저장합니다. - GoCD 서버에게 "내 파이프라인 설정은 이 Git 저장소에 있으니, 앞으로 저 파일을 기준으로 파이프라인을 관리해줘" 라고 알려줍니다.
- 그러면 GoCD는 주기적으로 해당 Git 저장소를 확인하여,
gocd.yaml파일이 변경될 때마다 대시보드의 파이프라인을 자동으로 생성, 수정, 삭제합니다.
1단계: 파이프라인 정의 리포지토리 만들기
먼저, 파이프라인 설정 파일들을 저장할 새로운 Git 저장소를 하나 만듭니다.
- GitHub에
gocd-config와 같은 이름으로 새로운 Public 저장소를 하나 생성해 주세요. (Private 저장소도 가능하지만, 초기 설정의 편의를 위해 Public으로 시작하겠습니다.)
만약 Private 이라면 토큰값도 받아주시면 됩니다.
오래된 글이지만 이런방식으로 값을 받아서 기록해주시면 됩니다
2단계: 파이프라인 정의 파일 작성하기 (gocd.yaml)
이제 로컬 PC에 gocd-config 저장소를 클론(clone)받고, 그 안에 gocd.yaml 이라는 이름의 파일을 만든 뒤 아래 내용을 붙여넣으세요. 이 코드는 이전에 UI로 만들었던 파이프라인과 동일한 역할을 합니다.
혹은 github웹에서 간단하게 파일을 작성해주셔도 됩니다.

그리고 [파이프라인명].gocd.yaml 형태로 파일명을 만들어주세요.
임의로 만드셔도 되나 통일하는게 좋습니다.
그리고 각 항목들을 아래와 같이 구성해주세요.

3단계: GoCD에 설정 리포지토리(Config Repo) 등록하기
이제 GoCD 서버에게 방금 만든 gocd-config 저장소를 알려줄 차례입니다.
- GoCD 대시보드(http://ip:8153)에 접속합니다.
- 상단 메뉴에서 Admin > Config Repositories 로 이동합니다.
- 오른쪽 상단의 Add 버튼을 클릭합니다.
- 아래와 같이 정보를 입력합니다.
- Repository Name:
my-pipelines(원하는 이름으로 지정) - Plugin:
YAML/JSON Configuration Plugin을 선택합니다. - Repository URL:
gocd-config저장소의 URL을 입력합니다. (예:https://github.com/YOUR_USERNAME/gocd-config.git) - GoCD YAML files pattern: *.
gocd.yaml이라고 입력합니다. (⭐ 매우 중요)- 이 설정은 GoCD에게 저장소 안에서 어떤 파일을 파이프라인 설정으로 읽어야 할지 알려주는 역할을 합니다. 이 필드를 비워두면 에러가 발생합니다.
- Repository Name:
- Save 버튼을 클릭하여 저장합니다.


Test Connection을 했을때 문제없이 연결이 되야하고
yaml files pattern은 해당 정규식으로 지정한 파일들만 GoCD의 YAML 파일로 인식한다는 뜻입니다.
그리고 중요한게 Rules 인데 defaultGroup에 대해서 파이프라인을 허용한다는 룰입니다.

이렇게 저장을하고 나면 아래처럼 정상적으로 구동이 되어야합니다.
test22.gocd.yaml 파일에있는 Pipeline이 되어있는걸 보실 수 있습니다.

머티리얼에서도 트리거 github 확인이가능하고

대시보드에서도 test22 의 파이프라인이 생성된걸 확인하실 수 있습니다.

태스크 또한 잘 실행된걸 보실 수 있습니다.

처음에는 개념이 어려울수도 있지만 몇번 해보시면 확실히 코드로 관리하는게 낫다고 느끼실 겁니다 ㅎㅎ
다음글에서는 GoCD에서 사용하는 암호변수를 사용할 수 있는 Secret Management 기능을 사용해보도록 하겠습니다.