This repository has been archived by the owner on May 2, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jenkins_docker_swarm.service.m4
66 lines (59 loc) · 2.58 KB
/
jenkins_docker_swarm.service.m4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
changequote({{,}})dnl
define(DOCKER_NAME, jenkins_slave)dnl
define(DOCKER_IMAGE, cloudposse/library:jenkins-swarm-slave)dnl
define(DOCKER_STOP_TIMEOUT, 20)dnl
define(DOCKER_DNS, ${DNS_SERVER})dnl
define(DNS_SERVICE_NAME, swarm)dnl
define(DNS_SERVICE_ID, %H)dnl
define(JENKINS_MASTER_HOST, localhost)dnl
define(JENKINS_MASTER_PORT, 8080)dnl
define(JENKINS_HOME, /home/jenkins)dnl
define(JENKINS_SLAVE_NAME, DOCKER_NAME)dnl
define(JENKINS_SLAVE_USERNAME, jenkins)dnl
define(JENKINS_SLAVE_PASSWORD, password)dnl
define(JENKINS_SLAVE_MODE, normal)dnl
define(JENKINS_SLAVE_EXECUTORS, 1)dnl
define(FLEET_CONFLICTS, %p@*)dnl
[Unit]
Description=Jenkins Swarm Slave with Docker Support
Requires=docker.service
After=docker.service
Requires=flanneld.service
After=flanneld.service
[Service]
User=core
EnvironmentFile=/etc/environment
EnvironmentFile=/etc/env.d/*
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker stop --time=DOCKER_STOP_TIMEOUT DOCKER_NAME
ExecStartPre=-/usr/bin/docker rm DOCKER_NAME
ExecStartPre=-/usr/bin/docker --debug=true pull DOCKER_IMAGE
ExecStart=/usr/bin/docker run \
--dns DOCKER_DNS \
--name DOCKER_NAME \
--rm \
ifelse(DOCKER_HOSTNAME, {{none}}, {{}}, --hostname {{DOCKER_HOSTNAME}}) \
-v JENKINS_HOME \
-v /usr/bin/docker:/usr/bin/docker:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /home/core/.docker:JENKINS_HOME/.docker \
-e "SERVICE_NAME=DNS_SERVICE_NAME" \
-e "SERVICE_ID=DNS_SERVICE_ID" \
-e "{{DOCKER_NAME}}=DOCKER_NAME" \
-e "{{JENKINS_MASTER_HOST}}=JENKINS_MASTER_HOST" \
-e "{{JENKINS_MASTER_PORT}}=JENKINS_MASTER_PORT" \
-e "{{JENKINS_SLAVE_USERNAME}}=JENKINS_SLAVE_USERNAME" \
-e "{{JENKINS_SLAVE_PASSWORD}}=JENKINS_SLAVE_PASSWORD" \
-e "{{JENKINS_SLAVE_MODE}}=JENKINS_SLAVE_MODE" \
-e "{{JENKINS_SLAVE_NAME}}=JENKINS_SLAVE_NAME" \
-e "{{JENKINS_SLAVE_EXECUTORS}}=JENKINS_SLAVE_EXECUTORS" \
DOCKER_IMAGE
ExecStop=-/usr/bin/docker stop --time=DOCKER_STOP_TIMEOUT DOCKER_NAME
ExecStopPost=-/usr/bin/docker rm DOCKER_NAME
TimeoutStopSec=DOCKER_STOP_TIMEOUT{{s}}
RestartSec=10s
Restart=always
[Install]
WantedBy=multi-user.target
[X-Fleet]
ifelse(FLEET_CONFLICTS, {{}}, {{}}, Conflicts=FLEET_CONFLICTS)