Merge pull request #476 from disaster37/feature/gocd
Add GoCD stack on version 17.3.0
This commit is contained in:
commit
3182faff66
35
templates/gocd/0/README.md
Normal file
35
templates/gocd/0/README.md
Normal file
@ -0,0 +1,35 @@
|
||||
# GoCD.io
|
||||
|
||||
### Info:
|
||||
|
||||
This template creates one GoCD server and scale out the number of GoCD agent you need.
|
||||
|
||||
The GoCD agent is link with docker engine container as sidekick, so the idea is to not create GoCD agent per language but use docker container to build and test your stuff.
|
||||
You can use on GoCD agent:
|
||||
- docker cli
|
||||
- docker-compose cli
|
||||
- rancher-compose cli
|
||||
- make
|
||||
|
||||
|
||||
### Usage:
|
||||
|
||||
Select GoCD from catalog.
|
||||
|
||||
Choose if you should deploy GoCD Server, or GoCD Agent or the two.
|
||||
Enter the number of GoCD agent you need.
|
||||
Choose the key to autoregister GoCD agent.
|
||||
|
||||
Click deploy.
|
||||
|
||||
GoCD server can now be accessed over the Rancher network on port `8153` (http://IP_CONTAINER:8153). To access from external Rancher network, you need to set load balancer or expose the port 8153.
|
||||
|
||||
|
||||
|
||||
### Source, bugs and enhances
|
||||
|
||||
If you found bugs or need enhance, you can open ticket on github:
|
||||
- [GoCD official core project](https://github.com/gocd/gocd)
|
||||
- [GoCD Server docker image](https://github.com/disaster37/alpine-gocd-server)
|
||||
- [GoCD Agent docker image](https://github.com/disaster37/alpine-gocd-agent)
|
||||
- [Rancher Cattle metadata docker image](https://github.com/disaster37/rancher-cattle-metadata)
|
125
templates/gocd/0/docker-compose.yml.tpl
Normal file
125
templates/gocd/0/docker-compose.yml.tpl
Normal file
@ -0,0 +1,125 @@
|
||||
version: '2'
|
||||
services:
|
||||
{{- if eq .Values.DEPLOY_SERVER "true"}}
|
||||
gocd-server:
|
||||
tty: true
|
||||
image: webcenter/alpine-gocd-server:17.3.0-1
|
||||
volumes:
|
||||
{{- if (contains .Values.VOLUME_DRIVER_SERVER "/")}}
|
||||
- ${VOLUME_DRIVER_SERVER}:/data
|
||||
{{- else}}
|
||||
- gocd-server-data:/data
|
||||
{{- end}}
|
||||
environment:
|
||||
- GOCD_CONFIG_memory=${GOCD_SERVER_MEMORY}
|
||||
- GOCD_CONFIG_agent-key=${GOCD_AGENT_KEY}
|
||||
- GOCD_CONFIG_server-url=${GOCD_SERVER_URL}
|
||||
- GOCD_USER_${GOCD_USER}=${GOCD_PASSWORD}
|
||||
- CONFD_BACKEND=${CONFD_BACKEND}
|
||||
- CONFD_NODES=${CONFD_NODES}
|
||||
- CONFD_PREFIX_KEY=${CONFD_PREFIX}
|
||||
{{- if eq .Values.GOCD_AGENT_PACKAGE "true"}}
|
||||
- GOCD_PLUGIN_script-executor=https://github.com/gocd-contrib/script-executor-task/releases/download/0.3/script-executor-0.3.0.jar
|
||||
- GOCD_PLUGIN_docker-task=https://github.com/manojlds/gocd-docker/releases/download/0.1.27/docker-task-assembly-0.1.27.jar
|
||||
- GOCD_PLUGIN_slack=https://github.com/Vincit/gocd-slack-task/releases/download/v1.3.1/gocd-slack-task-1.3.1.jar
|
||||
- GOCD_PLUGIN_docker-pipline=https://github.com/Haufe-Lexware/gocd-plugins/releases/download/v1.0.0-beta/gocd-docker-pipeline-plugin-1.0.0.jar
|
||||
- GOCD_PLUGIN_email-notifier=https://github.com/gocd-contrib/email-notifier/releases/download/v0.1/email-notifier-0.1.jar
|
||||
- GOCD_PLUGIN_github-notifier=https://github.com/gocd-contrib/gocd-build-status-notifier/releases/download/1.3/github-pr-status-1.3.jar
|
||||
- GOCD_PLUGIN_github-scm=https://github.com/ashwanthkumar/gocd-build-github-pull-requests/releases/download/v1.3.3/github-pr-poller-1.3.3.jar
|
||||
- GOCD_PLUGIN_maven-repository=https://github.com/1and1/go-maven-poller/releases/download/v1.1.4/go-maven-poller.jar
|
||||
- GOCD_PLUGIN_maven-task=https://github.com/ruckc/gocd-maven-plugin/releases/download/0.1.1/gocd-maven-plugin-0.1.1.jar
|
||||
- GOCD_PLUGIN_s3-fetch=https://github.com/indix/gocd-s3-artifacts/releases/download/v2.0.2/s3fetch-assembly-2.0.2.jar
|
||||
- GOCD_PLUGIN_s3-publish=https://github.com/indix/gocd-s3-artifacts/releases/download/v2.0.2/s3publish-assembly-2.0.2.jar
|
||||
- GOCD_PLUGIN_nessus-scan=https://github.com/Haufe-Lexware/gocd-plugins/releases/download/v1.0.0-beta/gocd-nessus-scan-plugin-1.0.0.jar
|
||||
- GOCD_PLUGIN_sonar=https://github.com/Haufe-Lexware/gocd-plugins/releases/download/v1.0.0-beta/gocd-sonar-qualitygates-plugin-1.0.0.jar
|
||||
- GOCD_PLUGIN_gitlab-auth=https://github.com/gocd-contrib/gocd-oauth-login/releases/download/v2.3/gitlab-oauth-login-2.3.jar
|
||||
- GOCD_PLUGIN_google-auth=https://github.com/gocd-contrib/gocd-oauth-login/releases/download/v2.3/google-oauth-login-2.3.jar
|
||||
- GOCD_PLUGIN_github-auth=https://github.com/gocd-contrib/gocd-oauth-login/releases/download/v2.3/github-oauth-login-2.3.jar
|
||||
{{- end}}
|
||||
{{- if (ne .Values.DEPLOY_LB "true") and .Values.PUBLISH_PORT}}
|
||||
ports:
|
||||
- ${PUBLISH_PORT}:8153
|
||||
{{- end}}
|
||||
labels:
|
||||
io.rancher.scheduler.affinity:container_label_soft_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
|
||||
io.rancher.container.hostname_override: container_name
|
||||
{{- if eq .Values.DEPLOY_LB "true"}}
|
||||
lb:
|
||||
image: rancher/lb-service-haproxy:v0.6.2
|
||||
{{- if .Values.PUBLISH_PORT}}
|
||||
ports:
|
||||
- ${PUBLISH_PORT}:8153/tcp
|
||||
{{- else}}
|
||||
expose:
|
||||
- 8153:8153/tcp
|
||||
{{- end}}
|
||||
links:
|
||||
- gocd-server:gocd-server
|
||||
labels:
|
||||
io.rancher.container.agent.role: environmentAdmin
|
||||
io.rancher.container.create_agent: 'true'
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
{{- if eq .Values.DEPLOY_AGENT "true"}}
|
||||
gocd-agent:
|
||||
tty: true
|
||||
image: webcenter/alpine-gocd-agent:17.3.0-1
|
||||
volumes:
|
||||
{{- if (contains .Values.VOLUME_DRIVER_AGENT "/")}}
|
||||
- ${VOLUME_DRIVER_AGENT}:/data
|
||||
{{- else}}
|
||||
- gocd-agent-data:/data
|
||||
{{- end}}
|
||||
- gocd-scheduler-setting:/opt/scheduler
|
||||
environment:
|
||||
- GOCD_CONFIG_memory=${GOCD_AGENT_MEMORY}
|
||||
- GOCD_CONFIG_agent_key=${GOCD_AGENT_KEY}
|
||||
- GOCD_CONFIG_agent_resource_docker=${GOCD_AGENT_RESOURCE}
|
||||
- DOCKER_HOST=docker-engine:2375
|
||||
{{- if eq .Values.DEPLOY_SERVER "true"}}
|
||||
links:
|
||||
- gocd-server:gocd-server
|
||||
{{- end}}
|
||||
labels:
|
||||
io.rancher.scheduler.affinity:container_label_soft_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
|
||||
io.rancher.container.hostname_override: container_name
|
||||
io.rancher.container.agent.role: environment
|
||||
io.rancher.container.create_agent: 'true'
|
||||
io.rancher.sidekicks: rancher-cattle-metadata,docker-engine
|
||||
rancher-cattle-metadata:
|
||||
network_mode: none
|
||||
labels:
|
||||
io.rancher.scheduler.affinity:container_label_soft_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
|
||||
io.rancher.container.hostname_override: container_name
|
||||
io.rancher.container.start_once: "true"
|
||||
image: webcenter/rancher-cattle-metadata:1.0.1
|
||||
volumes:
|
||||
- gocd-scheduler-setting:/opt/scheduler
|
||||
docker-engine:
|
||||
privileged: true
|
||||
labels:
|
||||
io.rancher.scheduler.affinity:container_label_soft_ne: io.rancher.stack_service.name=$${stack_name}/$${service_name}
|
||||
io.rancher.container.hostname_override: container_name
|
||||
image: index.docker.io/docker:1.13-dind
|
||||
volumes:
|
||||
{{- if (contains .Values.VOLUME_DRIVER_AGENT "/")}}
|
||||
- ${VOLUME_DRIVER_AGENT}:/data
|
||||
{{- else}}
|
||||
- gocd-agent-data:/data
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
|
||||
|
||||
volumes:
|
||||
gocd-scheduler-setting:
|
||||
driver: local
|
||||
per_container: true
|
||||
{{- if not (contains .Values.VOLUME_DRIVER_AGENT "/")}}
|
||||
gocd-agent-data:
|
||||
driver: ${VOLUME_DRIVER_AGENT}
|
||||
per_container: true
|
||||
{{- end}}
|
||||
{{- if not (contains .Values.VOLUME_DRIVER_SERVER "/")}}
|
||||
gocd-server-data:
|
||||
driver: ${VOLUME_DRIVER_SERVER}
|
||||
{{- end}}
|
155
templates/gocd/0/rancher-compose.yml
Normal file
155
templates/gocd/0/rancher-compose.yml
Normal file
@ -0,0 +1,155 @@
|
||||
version: '2'
|
||||
catalog:
|
||||
name: GoCD
|
||||
version: 17.3.0-rancher1
|
||||
minimum_rancher_version: v1.5.0
|
||||
questions:
|
||||
- variable: "DEPLOY_SERVER"
|
||||
description: "Deploy GoCD server"
|
||||
label: "Deploy GoCD server"
|
||||
required: true
|
||||
type: enum
|
||||
default: "true"
|
||||
options:
|
||||
- "true"
|
||||
- "false"
|
||||
- variable: "DEPLOY_AGENT"
|
||||
description: "Deploy GoCD agent"
|
||||
label: "Deploy GoCD agent"
|
||||
required: true
|
||||
type: enum
|
||||
default: "true"
|
||||
options:
|
||||
- "true"
|
||||
- "false"
|
||||
- variable: "GOCD_AGENT_SCALE"
|
||||
description: "Number of GoCD agent"
|
||||
label: "GoCD Agents"
|
||||
required: true
|
||||
default: 1
|
||||
type: "string"
|
||||
- variable: "GOCD_AGENT_KEY"
|
||||
description: "Key to use for auto registration agent"
|
||||
label: "Agent key"
|
||||
required: true
|
||||
type: "password"
|
||||
- variable: "GOCD_SERVER_MEMORY"
|
||||
description: "Max memory allowed to GoCD server"
|
||||
label: "Max memory for server"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "1024m"
|
||||
- variable: "GOCD_AGENT_MEMORY"
|
||||
description: "Max memory allowed to GoCD agent"
|
||||
label: "Max memory for agent"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "2048m"
|
||||
- variable: "GOCD_AGENT_RESOURCE"
|
||||
description: "Resource name associated for agent"
|
||||
label: "Resource name"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "docker"
|
||||
- variable: "GOCD_USER"
|
||||
description: "Login to connect on GoCD"
|
||||
label: "Login"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "admin"
|
||||
- variable: "GOCD_PASSWORD"
|
||||
description: "Password to connect on GoCD"
|
||||
label: "Password"
|
||||
type: "password"
|
||||
required: true
|
||||
- variable: "GOCD_AGENT_PACKAGE"
|
||||
description: "Install GoCD extra plugins"
|
||||
label: "Install extra plugins"
|
||||
required: true
|
||||
type: enum
|
||||
default: "true"
|
||||
options:
|
||||
- "true"
|
||||
- "false"
|
||||
- variable: "VOLUME_DRIVER_SERVER"
|
||||
description: "Docker driver to store volume or base path for GoCD server"
|
||||
label: "Volume drver / Path for server"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "local"
|
||||
- variable: "VOLUME_DRIVER_AGENT"
|
||||
description: "Docker driver to store volume or base path for GoCD agent"
|
||||
label: "Volume drver / Path for agent"
|
||||
type: "string"
|
||||
required: true
|
||||
default: "local"
|
||||
- variable: "DEPLOY_LB"
|
||||
description: "Deploy Loadbalancer"
|
||||
label: "Deploy Loadbalancer"
|
||||
required: true
|
||||
type: enum
|
||||
default: "true"
|
||||
options:
|
||||
- "true"
|
||||
- "false"
|
||||
- variable: "PUBLISH_PORT"
|
||||
description: "Set port if you want publish external port for GoCD server or Loadbalancer"
|
||||
label: "Publish port"
|
||||
required: false
|
||||
type: "string"
|
||||
default: "8153"
|
||||
- variable: "GOCD_SERVER_URL"
|
||||
description: "The server URL use by agent to auto register. Don't touch if you deploy server and agent"
|
||||
label: "Server URL"
|
||||
required: true
|
||||
type: "string"
|
||||
default: "https://gocd-server:8154/go"
|
||||
- variable: "CONFD_BACKEND"
|
||||
description: "The confd backend to grab config"
|
||||
label: "Confd backend"
|
||||
required: true
|
||||
default: "env"
|
||||
type: "string"
|
||||
- variable: "CONFD_NODES"
|
||||
description: "The confd nodes"
|
||||
label: "Confd nodes"
|
||||
required: false
|
||||
type: "string"
|
||||
- variable: "CONFD_PREFIX"
|
||||
description: "The confd prefix"
|
||||
label: "Confd prefix"
|
||||
required: true
|
||||
default: "/gocd"
|
||||
type: "string"
|
||||
|
||||
services:
|
||||
gocd-agent:
|
||||
scale: ${GOCD_AGENT_SCALE}
|
||||
retain_ip: true
|
||||
gocd-server:
|
||||
scale: 1
|
||||
retain_ip: false
|
||||
health_check:
|
||||
port: 8153
|
||||
interval: 5000
|
||||
unhealthy_threshold: 3
|
||||
request_line: ''
|
||||
healthy_threshold: 2
|
||||
response_timeout: 5000
|
||||
lb:
|
||||
scale: 1
|
||||
start_on_create: true
|
||||
lb_config:
|
||||
certs: []
|
||||
port_rules:
|
||||
- priority: 1
|
||||
protocol: http
|
||||
service: gocd-server
|
||||
source_port: 8153
|
||||
target_port: 8153
|
||||
health_check:
|
||||
response_timeout: 2000
|
||||
healthy_threshold: 2
|
||||
port: 42
|
||||
unhealthy_threshold: 3
|
||||
interval: 2000
|
BIN
templates/gocd/catalogIcon-gocd.png
Normal file
BIN
templates/gocd/catalogIcon-gocd.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
8
templates/gocd/config.yml
Normal file
8
templates/gocd/config.yml
Normal file
@ -0,0 +1,8 @@
|
||||
name: GoCD
|
||||
description: |
|
||||
GoCD Stack (server and agents)
|
||||
version: 17.3.0-rancher1
|
||||
category: Continuous Integration
|
||||
maintainer: "Sebastien Langoureaux <linuxworkgroup@gmail.com>"
|
||||
license: Apache License
|
||||
projectURL: https://www.gocd.io/
|
Loading…
x
Reference in New Issue
Block a user