Gitlab CI/CD 설정과 .gitlab-ci.yml 작성

Gitlab Registry 설정

gitlab registry는 build한 docker image를 업로드하기 위한 저장소입니다. 기본 Gitlab 패키지에 포함되어 있어 별도의 설치는 필요 없으나 본인 웹서버 환경에 맞게 설정이 필요합니다. 저는 Nginx를 웹서버로 쓰고 있기 때문에 그에 맞는 설정을 했습니다.

Gitlab Runner 설정

CI/CD를 위해서는 Gitlab Runner 설정이 필요합니다. Runner는 아래 글을 참고해서 동작 시킬 수 있습니다.

Gitlab Project 생성

테스트를 위한 프로젝트를 생성합니다. ‘Create blank project’ 로 비어있는 repository를 만들어 보겠습니다.

ci_test라는 repo를 만들었습니다.

로컬에서 프로젝트 만들고 git push하기

이제 코딩 작업을 하는 로컬PC에서 디렉토리를 생성하고 앞서 만들었던 repo에 Push하는 작업을 하겠습니다. 간단한 CI 동작확인을 위해 .gitlab-ci.yml도 같이 생성해보겠습니다.

mkdir ci_test
cd ci_test
git init
vi README.md

README.md

# CI Test Project

이 프로젝트는 CI 테스트용입니다.

- .gitlab-ci.yml 생성

.gitlab-ci.yml

build-job:
  stage: build
  script:
    echo "Hello World"

이렇게 두개 파일을 만들고 git commit & git push를 합니다.

push까지 완료한 후에 gitlab의 CI/CD -> Pipelines 메뉴로 가보면 파이프라인이 동작 된 걸 확인할 수 있습니다.

좀 더 상세 정보를 확인하기 위해 ‘passed’ 버튼을 클릭합니다.

그러면 보는 것과 같이 Build stage의 build-job이 완료된 걸 확인할 수 있습니다. build-job을 클릭하면 작업 내역이 보입니다.

위 캡쳐에 보이는 것처럼 저희가 의도한 “Hello World” 메시지가 정상적으로 출력되는 걸 확인할 수 있습니다.

이번엔 좀 더 복잡한 파이프라인을 구성해보겠습니다. 공식 Tutorial 문서를 참고했습니다. (링크 : https://docs.gitlab.com/ee/ci/quick_start/)

.gitlab-ci.yml 수정

build-job:
  stage: build
  script:
    - echo "안녕, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  script:
    - echo "이 작업은 테스트 작업입니다."

test-job2:
  stage: test
  script:
    - echo "이 작업 역시 테스트 작업입니다. test-job1 보다 오래 걸립니다."
    - echo "test-job1 보다 20초 더 오래 걸리는 작업을 테스트 해봅니다."
    - sleep 20

deploy-prod:
  stage: deploy
  script:
    - echo "이 작업은 $CI_COMMIT_BRANCH branch로 부터 만들어진 deploy 작업입니다."

위 스크립트를 업데이트 하면 4개의 job이 생성됩니다. 3개의 stage에 4개의 job이 할당 되는데 그 결과는 아래와 같습니다.

각각의 job을 클릭해보면 .gitlab-ci.yml에 명시했던 echo 메시지들이 출력된 걸 확인할 수 있습니다. 마지막 deploy-prod job만 보겠습니다.

다음글

참고

Leave a Reply