Использование нескольких бегунов в одном gitlab-ci - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу запустить CI pipline с 2 заданиями:

  1. задание загрузит образ докера с помощью docker-runner и запустит тест внутри докера
  2. будет работать под ssh runner и извлекать код на удаленном сервере.

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Да, вы можете запускать разные / смешанные бегуны из одного конвейера gitlab-ci.

Сначала вы должны зарегистрировать обработчик оболочки на целевом хосте и присвоить ему тег (усеченный):

$ gitlab-runner register
...

Please enter the gitlab-ci tags for this runner (comma separated):
my_shell_runner
...
Please enter the executor: virtualbox, docker+machine, docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh:
shell

В вашем gitlab-ci.yaml что-то вроде этого должно работать. Задание 'test' запускает вашу команду test в контейнере Docker на основе изображения NAME_OF_IMAGE.

Если это удастся, задание 'deploy' выберет вашего обработчика оболочки на основе тега 'my_shell_runner' и выполнит все команды в теге script на хосте участника (усечено):

 test:
   stage: test
   services:
     - docker:dind
   tags:
     - docker-executor
   script:
     - docker run --rm NAME_OF_IMAGE sh -c "TEST_COMMAND_TO_RUN"

 deploy:
   stage: deploy
   tags:
     - my_shell_runner
   script:
     - COMMAND_TO_RUN
     - COMMAND_TO_RUN
     - COMMAND_TO_RUN
0 голосов
/ 08 ноября 2018

Да, это возможно. Вам необходимо:

  1. Зарегистрируйте двух GitLab Runners с необходимым исполнителем (docker и shell), каждый из которых имеет свой собственный тег (или хотя бы один из них с тегом сборки).
  2. Объявите определенный тег для данного задания в вашем .gitlab-ci.yml,.

Регистрация участника ракушки:

[root@jsc00mca ~]# gitlab-runner register
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://example.com/
Please enter the gitlab-ci token for this runner:
1a2b3c
Please enter the gitlab-ci description for this runner:
[jsc00mca.example.com]: my-shell-runner
Please enter the gitlab-ci tags for this runner (comma separated):
shell
Whether to run untagged builds [true/false]:
[false]: 
Whether to lock the Runner to current project [true/false]:
[true]:
Registering runner... succeeded                     runner=ajgHxcNz
Please enter the executor: virtualbox, docker+machine, kubernetes, docker, shell, ssh, docker-ssh+machine, docker-ssh, parallels:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Регистрация участника Docker:

[root@jsc00mca ~]# gitlab-runner register
Running in system-mode.                            

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://example.com/
Please enter the gitlab-ci token for this runner:
1a2b3c
Please enter the gitlab-ci description for this runner:
[jsc00mca.example.com]: my-docker-runner
Please enter the gitlab-ci tags for this runner (comma separated):
docker
Whether to run untagged builds [true/false]:
[false]: 
Whether to lock the Runner to current project [true/false]:
[true]:
Registering runner... succeeded                     runner=ajgHxcNz
Please enter the executor: virtualbox, docker+machine, kubernetes, docker, shell, ssh, docker-ssh+machine, docker-ssh, parallels:
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-ci.yml

buildWithShell:
  stage: build
  tags:
  - shell
  script:
  - echo 'Building with the shell executor...'

buildWithDocker:
  image: alpine:latest
  stage: build
  tags:
  - docker
  script:
  - echo 'Building with the docker executor...'
...