在一个gitlab-ci中使用多个跑步者

时间:2018-11-08 18:55:26

标签: gitlab-ci gitlab-ci-runner

我想使用2个作业来运行CI管道:

  1. job将使用docker-runner启动docker映像并在docker内部运行测试
  2. 将在ssh运行程序下运行并在远程服务器上提取代码。

有可能吗?

2 个答案:

答案 0 :(得分:1)

是的,有可能。您需要:

  1. 用所需的 executor dockershell)注册两个 GitLab Runners ,每个巫婆使用不同的标签(或者至少一个标签)带有构建标记)。
  2. .gitlab-ci.yml中为给定的职位声明特定的标签

Shell运行器注册:

[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...'

答案 1 :(得分:0)

是的,您可以从单个gitlab-ci管道中触发不同/混合的跑步者。

首先,您应该在目标主机上注册一个shell运行器,并为其添加一个标签(被截断):

$ 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中应该可以执行以下操作。 “测试”作业基于图像NAME_OF_IMAGE在Docker容器中运行您的测试命令。

如果成功,“部署”作业将基于标签“ my_shell_runner”选择您的shell运行器,并将在运行器主机上的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