본문 바로가기
IT 톺아보기/CICD

제조업 환경에서의 CI/CD 도입기 – GitLab을 활용한 자동화 여정

by 파초우 2025. 1. 20.
반응형

현재 내가 근무하고 있는 기업은 제조업 분야로, 주로 임베디드 시스템 개발을 진행하며 전통적인 C 언어를 사용하고 있다. 하지만, 개발 환경이 변화함에 따라 자동화와 CI/CD(지속적 통합/지속적 배포)의 필요성이 대두되었다.

 

이전에는 Jenkins를 활용한 빌드 및 배포 환경을 구축하려 했지만, 생각보다 높은 진입 장벽이 존재했다.

 

팀 내 CI/CD 적용기

현재 내가 다니고 있는 기업은 제조업이다.임베디드 위주의 개발을 진행하다보니 꽤나 고전적인 언어인 C언어를 사용하고 있다. 그러나, 시대가 변하면서 자동화, CI/CD 같은 완전히 발전된 기능

ph-biginner.tistory.com

 

 

“내가 왜 한다고 했을까…” 🤦‍♂️

 

Jenkins를 Microsoft Teams와 연동하려 했으나 복잡한 설정과 제약으로 인해 어려움을 겪었고, 대안으로 Power Automate를 시도했지만 만족스러운 결과를 얻기 어려웠다.

 

특히, M365 전환 이후 다양한 Teams 앱이 생겼지만, 실질적으로 사용할 수 있는 기능은 제한적이었다. Azure Graph API를 사용해 보려 했지만, 정책상 불가능했다.

 

해결책을 찾다: GitLab CI/CD 도입

 

현재 조직이 보유한 도구들을 재검토한 끝에, GitLab에서도 CI/CD 기능을 제공한다는 점을 확인했다. 이에 따라 .gitlab-ci.yml 파일을 활용하여 CI/CD 파이프라인을 구축해 보기로 결정했다.

 

GitLab이란?

 

GitLab은 GitLab Inc.가 개발한 웹 기반 DevOps 플랫폼으로, 깃 저장소(Git Repository), CI/CD, 이슈 추적, 보안 테스트 등의 기능을 제공한다.

 

2019년 기준으로 CI/CD 및 프로젝트 관리를 단일 애플리케이션에서 제공하는 유일한 솔루션이며, GitHub와 차별화된 기능을 갖추고 있다.

 

GitLab의 주요 기능

 

GitLab은 여러 기능을 제공하지만, 현재 가장 많이 활용하는 기능은 다음과 같다.

1. 버전 관리 및 협업

 Git 기반의 버전 관리 시스템을 통해 개발자들이 협업할 수 있다.

 병합 요청(Merge Request) 기능을 통해 코드 리뷰를 효율적으로 진행할 수 있다.

2. CI/CD 파이프라인 (Continuous Integration/Continuous Deployment)

 코드 변경 시 자동으로 빌드, 테스트, 배포가 가능하여 개발 속도와 품질 향상에 기여한다.

 이번 프로젝트에서 핵심적으로 다룰 기능이다.

3. 프로젝트 관리 기능

 이슈 트래킹, 칸반 보드, 마일스톤 등의 도구를 통해 프로젝트를 체계적으로 관리할 수 있다.

4. 보안 및 컴플라이언스

 SAST, DAST, 컨테이너 스캐닝 등의 기능을 제공하여 보안을 강화한다.

 

GitHub와 GitLab의 차이점

 

GitLab을 도입하기 전, GitHub와의 차이점을 비교해 보았다.

 

기능 GitHub GitLab
CI/CD  제한적(액션 기반) 강력한 통합 기능 제공
배포 옵션 클라우드 중심 자체 호스팅 가능
커뮤니티 방대한 오픈소스 생태계 상대적으로 적음

 

GitHub도 훌륭한 플랫폼이지만, GitLab은 자체 호스팅 기능을 통해 보안성과 유연성을 높일 수 있다는 점에서 장점이 있다. 이에 따라, GitLab의 CI/CD 기능을 적극적으로 활용해 보기로 했다.

 

GitLab CI/CD 적용 과정

1. .gitlab-ci.yml 파일 작성 <- 요건 다음에

 GitLab의 CI/CD 기능을 활성화하려면 .gitlab-ci.yml 파일을 프로젝트 루트가 default (수정 가능)

2. Runner 설정

 GitLab CI/CD의 실행을 담당하는 GitLab Runner를 서버에 설치 및 구성하였다.

 실행 환경을 고려하여 Docker 기반 Runner를 선택하고 싶었지만 Shell 기반 Runner를 선택했다.

3. 자동화 테스트 추가

 단위 테스트 및 코드 정적 분석을 추가하여 코드 품질을 자동으로 검증하도록 설정했다.

4. 배포 파이프라인 구축

 성공적인 빌드 이후, 배포 스크립트를 자동화하여 개발 환경에 반영되도록 설정했다.

 

반응형