CI/CD 개념과 gitlab pipeline 구성

CI (Continuous Integration)

CI는 지속적인 빌드, 테스트, 머지를 의미합니다.
즉, 배포가 되기전까지의 과정이 CI 에 속합니다.


CD (Continuous Delivery, Continuous Deployment)

CD 는 지속적인 제공, 배포이라는 의미입니다.
앞서 CI 부분에서 배포가 되기전까지라면 CD 부분에서는 수정한 소스들이 repository에 자동으로 업로드되는 것을 의미하며, 자동 또는 수동으로 배포을 목표로 합니다.


CD 는 회사의 규칙에 따라 자동으로 배포가 될수도 있고, 수동으로 배포가 될수도 있습니다.
예를 들어 특정 환경에서 자동으로 배포를 하는 회사가 있을 수도 있습니다.
브랜치룰을 적용해 feature 가 붙은 브랜치는 dev 에 자동으로 배포가 되고, release 가 붙은 브랜치는 qa 에 배포가 자동으로 되도록 할 수 있습니다.


gitlab pipeline

CI/CD 를 통해 자동화됨으로써 개발자가 배포보다는 개발에 신경 쓸 수 있도록 되었습니다.
그렇다면 무엇인지 알았으니 어떻게 세팅을 해야하는지에 대해 알아보겠습니다.


먼저 gitlab 에서 CI/CD 세팅은 gitlab-ci.yml 을 통해서 이루어집니다.

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "hello CI/CD"

build:
  stage: build
  script: 
    - echo "build!!"

deploy_dev:
  stage: deploy
  script: 
    - echo "deploy_dev"
  only:
    - /^feature-.*$/

위를 보면
stage 영역은 어떤 stage 가 존재하는지 미리 언급하는 곳입니다.
yml 에서는 test, build, deploy 이렇게 총 3개가 있습니다.
원하는 것에 따라 추가 또는 수정, 삭제가 가능합니다.


이후 test: 부분은 stage 와 상관없이 원하시는 name 을 적습니다. stage: test 부분은 위에서 언급한 이름을 적는 곳입니다. 여기서는 test를 사용하였습니다.
이후 script 는 원하는 스크립트를 실행합니다. 예를 들어 코드의 커버리지가 60 이상일 때만 성공하게 할 수 있습니다.


test 는 없지만 deploy_dev 에 있는 only 의 경우에는 원하는 브랜치명의 경우에만 실행되도록 하는 것입니다.
이경우에는 feature- 가 붙어있을 경우 dev 서버에 배포하겠다고 선언한 것입니다.

Categories:

Updated:

Leave a comment