개발자라면 누구나 바라는 환경이 있습니다. 바로 안정적이고 일관된 빌드 환경이죠. 매번 빌드를 할 때마다 빌드 설정을 확인하고, 소프트웨어 버전 이슈를 해결하느라 고생할 필요가 없다면 얼마나 좋을까요? 이러한 고생을 최소화하고자 쿡앱스 기술지원팀에서 Github Actions를 활용해 단일 통합 빌드 클러스터를 구축한 배경과 과정을 소개해 드리겠습니다.
① Jenkins → Github Actions
쿡앱스는 기존에 Jenkins를 사용하여 프로젝트를 빌드하고 있었습니다. Jenkins는 역사가 오래 된 유서 깊은 도구이지만 뛰어난 CI/CD 플랫폼이 많이 출시된 지금은 작성의 어려움과 노드 및 플러그인 관리의 까다로움 등의 문제를 가지고 있었죠. 그래서 저희 팀은 사내에서 Git과 Github을 활발히 사용하고 있는 점을 고려해 Jenkins 대신 Github Actions를 이용해 빌드 클러스터를 만들기로 했습니다.
Github Actions
② 빌드 머신 환경의 일원화
일관된 빌드 환경을 유지하려면 우선 머신 환경을 동일하게 재현할 수 있어야 합니다. 손으로 하나씩 머신을 세팅하는 것은 결코 있을 수 없는 일이죠. 그렇기 때문에 빌드 머신을 일원화할 필요가 있었습니다. 그래서 저희 팀은 Ansible을 활용하여 머신 설정을 자동화하는 방법을 선택했습니다.
구축한 빌드 클러스터를 처음 사용하는 클라이언트 프로그래머 입장에서는 진입 장벽이 있을 수 있습니다. 그렇기 때문에 가이드를 제공할 필요가 있었습니다. 그래서 저희 팀은 약간의 환경 변수만 수정하면 사용할 수 있는 CI/CD 워크플로우를 템플릿화하여 각 프로젝트의 프로그래머에게 제공하고 있습니다.
워크플로우의 템플릿화
빌드 클러스터는 꾸준히 개선 중
Self-hosted runner를 구성하여 운영하는 만큼 머신 환경을 꾸준히 관리해야 하는 어려움이 존재합니다. 그리고 프로그래머가 이러한 빌드 클러스터를 사용하면서 제시하는 개선점이나 기능들을 잘 정리하고 적절히 반영할 필요도 있죠. 그래서 저희 팀은 프로그래머가 더 안정적으로 게임 제작에 몰두할 수 있도록 빌드 클러스터를 계속해서 개선하고 있습니다. 추후에도 개발 환경에 대한 R&D를 비롯한 업데이트 내용을 자주 공유드릴 예정이니, 많은 관심 부탁드립니다!