From cb30dc45a9f3f54d12c5a0999c4c2b5c511adf75 Mon Sep 17 00:00:00 2001 From: Frederic Leger Date: Tue, 23 May 2017 00:13:49 +0200 Subject: [PATCH] Add gitlab-ci-multi-runner --- .../gitlab-multi-runner/0/docker-compose.yml | 44 ++++++++++++++++++ .../gitlab-multi-runner/0/rancher-compose.yml | 30 ++++++++++++ .../catalogIcon-gitlab-multi-runner.png | Bin 0 -> 21396 bytes templates/gitlab-multi-runner/config.yml | 5 ++ 4 files changed, 79 insertions(+) create mode 100644 templates/gitlab-multi-runner/0/docker-compose.yml create mode 100644 templates/gitlab-multi-runner/0/rancher-compose.yml create mode 100644 templates/gitlab-multi-runner/catalogIcon-gitlab-multi-runner.png create mode 100644 templates/gitlab-multi-runner/config.yml diff --git a/templates/gitlab-multi-runner/0/docker-compose.yml b/templates/gitlab-multi-runner/0/docker-compose.yml new file mode 100644 index 0000000..b0b3c35 --- /dev/null +++ b/templates/gitlab-multi-runner/0/docker-compose.yml @@ -0,0 +1,44 @@ +version: '2' + +services: + + gitlab-runner-config: + image: gitlab/gitlab-runner:alpine + stdin_open: true + volumes: + - /etc/gitlab-runner/ + tty: true + command: + - register + - -n + - --url + - ${GITLAB_URL} + - --registration-token + - ${GITLAB_TOKEN} + - --executor + - docker + - --description + - Rancher Docker Runner + - --docker-image + - docker:latest + - --docker-volumes + - /var/run/docker.sock:/var/run/docker.sock + - --docker-privileged + labels: + io.rancher.container.pull_image: always + io.rancher.container.start_once: 'true' + + gitlab-runner: + image: gitlab/gitlab-runner:alpine + stdin_open: true + volumes: + - /var/run/docker.sock:/var/run/docker.sock + tty: true + volumes_from: + - gitlab-runner-config + command: + - run + labels: + io.rancher.sidekicks: gitlab-runner-config + io.rancher.container.pull_image: always + io.rancher.scheduler.global: 'true' diff --git a/templates/gitlab-multi-runner/0/rancher-compose.yml b/templates/gitlab-multi-runner/0/rancher-compose.yml new file mode 100644 index 0000000..e30fa9f --- /dev/null +++ b/templates/gitlab-multi-runner/0/rancher-compose.yml @@ -0,0 +1,30 @@ +version: '2' + +catalog: + name: "gitlab-multi-runner" + version: "0.1" + description: "a Gitlab pipelines multi-runner, that will spawn privates runners in your infra." + # minimum_rancher_version: + # maximum_rancher_version: + # upgrade_from: # The previous versions that this template can be upgraded from + questions: + - variable: "GITLAB_URL" + label: "Gitlab Url" + description: "Url to your Gitlab CI endpoint" + type: "string" + default: "https://gitlab.com/ci" + required: true + + - variable: "GITLAB_TOKEN" + label: "Gitlab Token" + description: "Token provided in you project settings" + type: "string" + default: "xxxxxxxxxxxxxxxxxxxx" + required: true + +services: + gitlab-runner-config: + scale: 1 + start_on_create: true + gitlab-runner: + start_on_create: true \ No newline at end of file diff --git a/templates/gitlab-multi-runner/catalogIcon-gitlab-multi-runner.png b/templates/gitlab-multi-runner/catalogIcon-gitlab-multi-runner.png new file mode 100644 index 0000000000000000000000000000000000000000..a629de7ed00a95813d235a78ac649ac424afdf60 GIT binary patch literal 21396 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