Настройка Gitlab-CI раннера на серверe
В 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-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!
$ 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