🐳 Настройка Gitlab-CI раннера на своем собственном сервере

by itisgood

В Gitlab у вас есть общедоступные, и у вас есть возможность запускать свои собственные раннеры, которые используются для запуска ваших заданий и отправки результатов обратно в GitLab.

В этом руководстве мы настроим сервер с gitlab-runner и Docker в Ubuntu, а затем настроим базовый пайплан для использования вашего Gitlab раннера.

Настройка Docker

Установите Docker:

$ sudo apt update && sudo apt upgrade -y
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

$ sudo apt update
$ sudo apt install docker-ce -y
$ docker run hello-world

Установка и настройка Gitlab раннера

Эта установка предназначена для Linux 64bit, для других дистрибутивов, посмотрите их документы

Установите Runner:

$ wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
$ chmod +x /usr/local/bin/gitlab-runner
$ useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
$ gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
$ gitlab-runner start
Зарегистрируйте раннера.
Токен Gitlab-CI доступен на панели настроек CI / CD из пользовательского интерфейса:
https://gitlab.com/<account>/<repo>/settings/ci_cd
$ gitlab-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.com/

Please enter the gitlab-ci token for this runner:
__masked__

Please enter the gitlab-ci description for this runner:
[my-runner]: my-runner

Please enter the gitlab-ci tags for this runner (comma separated):
my-runner,foobar
Registering runner... succeeded                     runner=66m_339h

Please enter the executor: docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine, kubernetes:
docker

Please enter the default Docker image (e.g. ruby:2.1):
alpine:latest

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Проверьте статус и проверьте, включены ли Docker и Gitlab раннер при запуске системы:
$ gitlab-runner status
Runtime platform                                    arch=amd64 os=linux pid=30363 revision=7f00c780 version=11.5.1
gitlab-runner: Service is running!

$ systemctl is-enabled gitlab-runner
enabled

$ systemctl is-enabled docker
enabled

Gitlab-CI конфиг для общих раннеров

Если вы хотите использовать публичные раннеры, которые предлагает Gitlab, конфигурация .gitlab-ci.yml будет выглядеть следующим образом:

stages:
  - build
  - test

build:
  stage: build
  script:
    - echo "this is building"
    - hostname
    - mkdir builds
    - touch builds/data.txt
    - echo "true" > builds/data.txt
  artifacts:
    paths:
      - builds/

test:
  stage: test
  script:
    - echo "this is testing"
    - hostname
    - test -f builds/data.txt
    - grep "true" builds/data.txt

Gitlab-CI конфиг для вашего собственного Gitlab раннера

Gitlab использует теги, которые были указаны при регистрации, чтобы определить, где выполняются задания, для получения дополнительной информации об этом посмотрите их документы.

Конфигурация .gitlab-ci.yml для использования вашего раннера gitlab:

- build
  - test

build:
  stage: build
  tags:
    - my-runner
  script:
    - echo "this is building"
    - hostname
    - mkdir builds
    - touch builds/data.txt
    - echo "true" > builds/data.txt
  artifacts:
    paths:
      - builds/

test:
  stage: test
  tags:
    - my-runner
  script:
    - echo "this is testing"
    - hostname
    - test -f builds/data.txt
    - grep "true" builds/data.txt

Запуск и проверка Docker

Передайте конфигурацию мастеру, позвольте вашему пайплайну выполнить задания после завершения, посмотрите Docker  на вашем сервере для контейнеров, на которых выполнялись задания:

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
04292a78de0b        c04b8be95e1e        "gitlab-runner-cache.."  About a minute ago   Exited (0) About a minute ago                       runner-xx-project-xx-concurrent-0-cache-3cxx0
49b1b3c4adf9        c04b8be95e1e        "gitlab-runner-cache.."  About a minute ago   Exited (0) About a minute ago                       runner-xx-project-xx-concurrent-0-cache-6cxxa
422b23191e8c        hello-world         "/hello"                 24 minutes ago       Exited (0) 24 minutes ago                           wizardly_meninsky
Поскольку мы знаем, что каждое задание выполняется в разных контейнерах, из вышеприведенного вывода видно, что для двух заданий, указанных в нашем конвейере, было 2 разных контейнера.
см.также:

You may also like

2 комментария

Илья 10.03.2021 - 17:38

Тэги указывать не обязательно.
Их можно указать позже в вебморде в настройках раннера. В этом случае тэг не будет “захардкоден”)

Reply
itisgood 10.03.2021 - 17:56

спасибо за дополнение

Reply

Добавить комментарий для itisgood Cancel Reply