본문 바로가기
Env/DevOps

GitLab CI 구성 - 간단 예제(with Docker)

by rva-k 2022. 2. 23.

Contents

    REF

    해당 컨텐츠는 GitLab Official Docs(https://docs.gitlab.com/ee/ci/quick_start/)를 참고하여 공부한 내용에 대해 기술되었습니다.

     

    공부 중인 관계로, 부족하거나 잘못된 부분이 있을 수 있습니다.
    편히 가르쳐주시면 감사하겠습니다.

    Prerequisities

    • CI/CD 적용하기 위한 GitLab 프로젝트
    • Docker

    GitLab CI/CD Concept에 대해 공부를 했으니, 직접 구현을 해보고자 한다.
    여러 방법을 이용하여 구현이 가능하나, 필자는 가능한 Docker를 이용하여 구성하고자 한다.(for re-use)

     

    GitLab CI/CD 구성 과정은 아래와 같이 크게 2가지로 나눠진다.

    1. Install GitLab Runner and Register
    2. Create a .gitlab-ci.yml file 

    세부 내용은 아래에서 다룬다.

     

    Install & Register GitLab Runner

     

     앞서 concept에서 다루었듯이, Runner는 job을 실행시키기 위한 agent 이다.

    처음 설정하는 경우 물론 Runner가 등록되어 있지 않겠지만, 등록 여부는 [settings]-[CI/CD] 로 가 Runners의 Expand 버튼 클릭하여 확인 가능하다. (사용가능한 Runner가 있다면, Show~~instructions 버튼 아래 Availablespecific runners 탭이 생기고 초록색 원과 함께 표시된다.)

     

    Check if available runners are

    Install & Start GitLab Runner with Docker

     지금부터 Docker를 이용하여 Runner를 설치할 것이기 때문에, Docker 설치가 요구된다.(2022.02.23 - [Developer/Env] - Install Docker Engine on Ubuntu)

     

    Docker는 run 명령어 수행시, 해당 image가 설치되지 않았다면, 자동으로 설치 후 실행시켜준다.

    아래 명령어 수행 시, gitlab-runner 최신버전을 설치 후 실행까지 진행된다.

    docker run -d --name gitlab-runner --restart always \
         -v /srv/gitlab-runner/config:/etc/gitlab-runner \
         -v /var/run/docker.sock:/var/run/docker.sock \
         gitlab/gitlab-runner:latest

     필자는 runner container를 Server PC의 local system volume을 이용하고자 하였다. 

    local system volume이 아닌 docker volume을 이용하기 위한 사람은 링크 내 Option2: Use Docker volumes ~~ 부분을 확인하길 바란다.

     

    Register the runner with Docker

    아래 과정은 Docker를 이용한 runner register 방법이다.

     

     1. runner container를 register command 와 함께 실행 (run 후 exec로 진행해도 무방함)

     1. 위에서부터 따라온다면 exec 명령어를 통해 실행 중인 runner container에 bash로 진입. runner register 과정을 진행한다.

    docker exec -it gitlab/gitlab-runner /bin/bash
    gitlab-runner register

      여기까지 진행하면, 터미널에 GitLab instance URL: 이 보일 것이다. 터미널을 종료하지 말고, 2번을 진행한다.

     

    2. Runner의 URL과 registration token 을 확인한다. [settings]-[CI/CD]-[Runner] 에서 확인가능하다.

    Check runner URL & registeration token

     3. 앞에서 확인된 URL과 registeration token을 터미널에 차례로 입력한다.

     4. Runner에 대한 description 입력(추후 변경 가능)

     5. Runner에 대한 tags 입력(추후 변경 가능)

     6. Runner에 대한 maintenance note 입력

     7. Runner executor 로 docker 입력

     8. executor로 docker 입력시, default image를 요구하는데, docker:latest 입력

     

    Process of Registering runner

     9. Runner Configuration 업데이트

    docker restart gitlab-runner

     10. Available specific runners 확인

    Succes for installation & registeration of runner

     

    Create .gitlab-ci.yml

     .gitlab-ci.yml 파일은 GitLab CI/CD 구성에 대한 내용을 포함한 YAML형식 파일이다.

     

    즉, 1)runner가 실행하는 job들의 structure 및 order 와 2)특정 조건시 runner의 결정에 대한 내용을 정의하는 파일이다.

     

     1. .gitlab-ci.yml 파일 생성

    Create .gitlab-ci.yml

     2. .gitlab-ci.yml 간단 예제 작성 후 commit

    build-job:
      stage: build
      script:
        - echo "Hello, $GITLAB_USER_LOGIN!"
      tags:									
        - ci-runner-ros2  	# 본인이 Runner 등록시 기입한 tags 입력
    
    test-job1:
      stage: test
      script:
        - echo "This job tests something"
      tags:
        - ci-runner-ros2  	# 본인이 Runner 등록시 기입한 tags 입력
    
    test-job2:
      stage: test
      script:
        - echo "This job tests something, but takes more time than test-job1."
        - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
        - echo "which simulates a test that runs 20 seconds longer than test-job1"
        - sleep 20
        tags:
        - ci-runner-ros2  	# 본인이 Runner 등록시 기입한 tags 입력
    
    deploy-prod:
      stage: deploy
      script:
        - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
      tags:
        - ci-runner-ros2  	# 본인이 Runner 등록시 기입한 tags 입력

     

     

     3. [CI/CD]-[Pipelines] 탭 클릭하여 CI/CD 진행상황 확인가능하다. passed 확인 시, 모든 job이 완료되었음을 의미한다.

    Success of composing CI/CD 

    'Env > DevOps' 카테고리의 다른 글

    .gitlab-ci.yml 파일 작성법  (0) 2022.02.28
    GitLab CI 관련 개념  (0) 2022.02.23

    댓글