Merge pull request #476 from disaster37/feature/gocd

Add GoCD stack on version 17.3.0
This commit is contained in:
Raúl Sánchez 2017-04-06 18:17:46 +02:00 committed by GitHub
commit 3182faff66
5 changed files with 323 additions and 0 deletions

View 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)

View 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}}

View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View 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/