Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using multiple runners in one gitlab-ci

I want to run CI pipline with 2 jobs:

  1. job will boot up a docker image with docker-runner and run test inside docker
  2. will run under ssh runner and pull code on a remote server.

Is it possible?

like image 606
niko peikrishvili Avatar asked Jan 02 '23 15:01

niko peikrishvili


1 Answers

Yes, it's possible. You need to:

  1. Register two GitLab Runners with needed executor (docker and shell), each witch different tag (or, at least one of them with a build tag).
  2. Declare a specific tag for given job in your .gitlab-ci.yml, .

Shell runner registration:

[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 runner registration:

[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...'
like image 57
Vít Kotačka Avatar answered Jan 14 '23 12:01

Vít Kotačka