본문 바로가기

백앤드/Etc

[GitLab] GitLab에서 CI/CD 설정하기 - GitLab 설정편 #3

반응형

[GitLab] GitLab에서 CI/CD 설정하기 - GitLab 설정편 #3

 

GitLab에서 패키징할 수 있는 소스파일을 업로드가 되어지고 추가로 아래 내용으로 .gitlab-ci.yml 파일을 푸쉬합니다.

stages:
  - build
  - test
  - deploy
  
variables:
  HOME_PATH: "/home/jskang"
  RUNNER_PATH: "/home/gitlab-runner"

build-job:
  stage: build
  script:
    - echo "Start building"
  tags:
  - jskang_cicd_manager

test-job1:
  stage: test
  script:
    - mkdir TestResult
    - cp $HOME_PATH/sample-data/sample.json $RUNNER_PATH/build/sample-data/sample.json
  tags:
  - jskang_cicd_manager

test-job2:
  stage: test
  script:
    - echo "Sample test code."
  tags:
  - jskang_cicd_manager

deploy-prod:
  stage: deploy
  script:
    - echo "This job deploys something from the branch."
  tags:
  - jskang_cicd_manager

위의 gitlab-ci.yml 파일은 가장 기본적인 구조에 해당합니다.

각각 하나씩 상세히 설명을 한번 해보겠습니다.

 

Depth 1 카테고리

가장 큰 카테고리를 먼저 살펴보면 다음 5개로 나뉘어집니다.

stage : 작성되어있는 카테고리들을 어떤 순서로 작업을 진행할 것인지 프로세스 순서를 정할 수 있습니다.

프로세스 순서를 정하지 않으면 위에서부터 순서대로 프로세스가 진행됩니다.

 

variables : yml 문서에서 변수를 지정할 수 있습니다. 여기에서 지정한 변수는 하위에 있는 HOME_PATH나 RUNNER_PATH로 예를 들어보면 $HOME_PATH 또는 $RUNNER_PATH로 사용하실 수 있습니다.

 

build-job / test-job1 / test-job2 / deploy-prod : 이름은 작업자가 구분할 수 있도록 임의로 지정가능하며, 단순 키 값이라고 볼 수 있습니다. CI/CD로 수행될 때 미치는 영향은 없으므로 정말 자유롭게 지으셔도 됩니다.

 

Depth 2 카테고리

가장 큰 카테고리를 먼저 살펴보면 다음 5개로 나뉘어집니다.

stage : Depth 1에 위치한 stage에서 프로세스 순서를 정하기 위해 작성되는 값을 지정하게됩니다.

예시로 보여지고 있는 yml을 기준으로 설명을 해보면, Depth 1의 stage에 순서가 build - test - deploy 로 되어있습니다.

그러면 Depth 2의 stage가 build라는 값을 가지고 있는 모든 작업들이 수행됩니다. 여기서 build로 되어있는 모든 작업의 수행이 완료되기 전까지 다음 단계인 test로 넘어가지 않습니다.

 

그렇게해서 test로 단계가 넘어가게 되면, 마찬가지로 Depth 2의 stage가 test라는 값을 가지고 있는 모든 작업이 수행되고, test로 되어있는 모든 작업의 수행이 완료되기전까지 다음 단계인 deploy로 넘어가지 않게 됩니다.

 

이런 방법을 계속 반복해서 Depth 1의 stage에 마지막 순서까지 진행을 하게 됩니다.

 

script : 서버 설정편 #1과 #2에서 설정했던 gitlab-runner이 해당 서버에서 실행할 명령어를 입력할 수 있습니다. 여기에는 git, mvn, gradle, cp, rm, mkdir 등 리눅스에서 사용가능한 모든 명령어 사용이 가능합니다.

 

tags: 서버 설정편 #2에서 특정 서버에만 명령을 내리기 위해 입력하는 반드시 기억해야한다고 했던 옵션 값을 기억하실 겁니다. 거기에 적어준 tag 값을 적어주시면, 그 서버에서만 CI/CD가 동작하게 할 수 있습니다. 만약 tags를 입력하지 않는다면 같은 URL와 같은 TOKEN을 가지고있는 모든 gitlab-runner에서 동작하게 됩니다.

 

# CI/CD 작업이 성공

이렇게 작성을 완료하고 commit & push를 하게되면 그 순간 GitLab에서 감지를 하고 자동으로 작업이 시작됩니다.

아래 사진은 모든 작업이 성공적으로 완료되었을 때 보이는 모습입니다.

 

 

# CI/CD 작업이 실패

작업을 실패하게되면 아래 사진처럼 fail과 어떤 stage 단계에서 실패했는지 아이콘으로 표시가 됩니다.

 

엑스 동그라미 표시를 마우스로 클릭하면 아래 사진처럼 나오는데 형관펜으로 표시된 부분을 클릭하면 자세한 콘솔로그를 확인해서 에러인 부분을 수정할 수 있도록 도와줍니다.

 

실제로 에러로그는 아래 사진처럼 확인이 가능합니다. 물론 에러는 상황에 따라 다르니 어떤 에러인지는 각자 로그를 보고 확인하면 될 것 같습니다.

반응형