Gitlab CI/CD Runner 사용하기

2023년 12월 29일 금요일
4분 소요
0회

문제

gitlab의 ci/cd 기능을 이용하려면 먼저 gitlab-runner를 등록해야 사용할 수 있다.

문제 해결

해당 글은 gitlab-ce 16.7버전 기준으로 작성되었습니다.

  1. gitlab에 접속한 뒤 Admin Area에 들어간다.
  2. 왼쪽의 CI/CD > Runners에 들어간다.
  3. 상단 위쪽의 새로운 인스턴스 러너를 클릭한다.
  4. Platform을 선택한 뒤 원하는 내용을 채우고 맨 밑의 러너 만들기를 클릭한다.
    • 본인은 태그 없는 작업에서 실행할 수 있게 체크박스를 설정했다.

gitlab-runner-ci-cd-1

  1. 생성 완료 후 나타나는 명령어를 복사해둔다. (창을 나가면 다시 볼 수 없으므로 주의)

gitlab-runner-ci-cd-2

  1. 그 후 docker-composerunner를 작성한다.
docker-compose.yml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

services:
  gitlab_ce:
    container_name: gitlab_ce
    image: 'zengxs/gitlab:latest'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        nginx['listen_port'] = 580
        gitlab_rails['gitlab_shell_ssh_port'] = 522
        # Add any other gitlab.rb configuration here, each on its own line
    ports:
      - '580:580'
      - '5443:443'
      - '522:22'
    volumes:
      - '/home/hopoduck/docker/gitlab/config:/etc/gitlab'
      - '/home/hopoduck/docker/gitlab/logs:/var/log/gitlab'
      - '/home/hopoduck/docker/gitlab/data:/var/opt/gitlab'
      - '/home/hopoduck/docker/gitlab/runner:/etc/gitlab-runner'
    shm_size: '256m'
  runner:
    container_name: runner
    image: 'gitlab/gitlab-runner:latest'
    restart: always
    volumes:
      - '/home/hopoduck/docker/gitlab/runner:/etc/gitlab-runner'
      - '/var/run/docker.sock:/var/run/docker.sock'
    # extra_hosts:
    #   - 'gitlab.example.com:{ip}' # 추후 설명
  1. docker compose up -d runnerrunner를 실행한 뒤 docker compose exec runner bashrunner컨테이너에 접속한다.
  2. 5번에서 복사해 둔 명령어를 runner에서 실행한다.

실행하면 gitlab에 등록되고, 설정에 따라 푸시나 태그가 달릴 때 작성한 ci/cd 스크립트가 runner에서 실행된다.

문제: runner에서 gitlab 서버에 연결이 안됨

포트를 변경해서 그런지 내부 gitlab 서버로 연결이 되지 않아서 extra_hosts를 사용해서 연결하게 했다.

yaml

1

2

extra_hosts:
      - 'gitlab.example.com:{ip}'

이제 와서 생각난거지만 생성 후 적혀있는 명령어에서 --url https://gitlab.example.com의 주소를 로컬 ip로 바꿨으면 연결이 잘 되었을 것 같다.


참고자료


Loading reactions

© 2024 Hopoduck. All rights reserved.