CI/CD의 개념
- 지속적 소프트웨어 개발 방법을 사용하면 반복적인 코드 변경사항을 지속적으로 빌드, 테스트 및 배포할 수 있습니다. 이 반복적인 프로세스는 버그가 있거나 실패한 이전 버전을 기반으로 새 코드를 개발할 가능성을 줄이는 데 도움이 된다. 이 방법을 사용하면 새 코드 개발부터 배포까지 사람의 개입을 줄이거나 전혀 개입하지 않으려고 한다
지속적 통합(Continuous Intergration, CI)
- GitLab의 Git 저장에 코드가 저장된 애플리케이션을 생각해봐라 개발자는 매일, 하루에 여러 번 코드 변경사항을 푸시한다. 리포지토리에 푸시할 때마다 스크립트 셋을 생성하여 애플리케이션을 자동으로 빌드하고 테스트할 수 있다. 이러한 스크립트는 애플리케이션에 오류가 발생할 가능성을 줄일 수 있다. 이 방법을 지속적 통합이라고 한다. 애플리케이션에 제출된 각 변경사항은 개발 브랜치에도 자동으로 지속적으로 빌드되고 테스트된다. 이러한 테스트 변경사항이 애플리케이션에 대해 설정한 모든 테스트, 지침 및 코드 준수 표준을 통과하도록 보장한다.
지속적 전달(Continuous Delivery, DC)
- 지속적 전달은 지속적 통합을 넘어서는 단계이다. 코드 변경이 코드베이스에 푸시될 떄마다 애플리케이션이 빌드되고 테스트될뿐만 아니라 애플리케이션도 지속적으로 배포된다. 그러나 지속적 전달을 사용하면 배포를 수동으로 트리거한다.
- 지속적 전달은 코드를 자동으로 확인하지만, 변경사항의 배포를 수동으로 전략적으로 트리거하려면 사람의 개입이 필요함
지속적 배포(Continuous Deployment, CD)
- 지속적 배포는 지속적 전달과 유사한 지속적 통합을 넘어서는 또 다른 단계이다. 차이점은 애플리케이션을 수동으로 배포하는 대신 자동으로 배포되도록 설정한다는 것이다. 사람의 개입이 필요없다.
GitLab CI/CD 워크플로우
- GitLab CI/CD는 일반적으로 개발 워크플로루에 적합하다.

Issues에서 코드 구현에 대해 논의하고 제안된 변경사항에 대해 로컬에서 작헙하는 것으로 시작할 수 있다. 그런 다음 GitLab에서 호스팅 되는 원격 저장소의 Feature 브랜치에 커밋을 푸쉬할 수 있다. 푸시는 프로젝트의 CI/CD 파이프라인을 트리거한다.
그러면 GitLab CI/CD가 자동화된 스크립트(순차 또는 병렬)를 실행하여 다음을 수행한다.
- 애플리케이션을 빌드하고 테스트한다.
- 로컬 호스트에서 보는 것과 동일하게 리뷰 앱에서 변경사항을 미리 본다.
구현이 예상대로 작동하면 다음을 수행한다.
- Feature 브랜치를 기본 브랜치에 병합한다.
- GitLab CI/CD는 변경사항을 프로덕션 환경에 자동으로 배포한다.
문제가 발생하면 변경사항을 롤백할 수 있다.