Ansible for build server
[releng.git] / jjb / releng / opnfv-utils.yml
1 ---
2 - project:
3
4     name: opnfv-utils
5
6     jobs:
7       - 'prune-docker-images'
8       - 'archive-repositories'
9       - 'check-status-of-slaves'
10       - 'ansible-build-server'
11
12 ########################
13 # job templates
14 ########################
15 - job-template:
16     name: 'prune-docker-images'
17
18     disabled: false
19
20     concurrent: true
21
22     parameters:
23       - node:
24           name: SLAVE_NAME
25           description: Slaves to prune docker images
26           default-slaves:
27             - arm-build2
28             - ericsson-build3
29             - ericsson-build4
30             - lf-build2
31           allowed-multiselect: true
32           ignore-offline-nodes: true
33
34     builders:
35       - description-setter:
36           description: "Built on $NODE_NAME"
37       # yamllint disable rule:line-length
38       - shell: |
39           #!/bin/bash
40           (docker ps -q; docker ps -aq) | sort | uniq -u | xargs --no-run-if-empty docker rm
41           docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi
42
43
44     # yamllint enable rule:line-length
45     triggers:
46       - timed: '@midnight'
47
48 - job-template:
49     name: 'archive-repositories'
50
51     disabled: false
52
53     concurrent: true
54
55     parameters:
56       - node:
57           name: SLAVE_NAME
58           description: Where to create the archive
59           default-slaves:
60             - master
61           allowed-multiselect: false
62           ignore-offline-nodes: true
63
64     triggers:
65       - timed: '@monthly'
66
67     builders:
68       - shell:
69           !include-raw-escape: opnfv-repo-archiver.sh
70
71     publishers:
72       - email-ext:
73           content-type: 'text'
74           failure: false
75           always: true
76           body:
77             ${{FILE,path="archive-link.txt"}}
78           reply-to: >
79             helpdesk@opnfv.org
80           recipients: >
81             swinslow@linuxfoundation.org
82
83
84 - job-template:
85     name: 'check-status-of-slaves'
86
87     disabled: false
88
89     concurrent: true
90
91     parameters:
92       - node:
93           name: SLAVE_NAME
94           description: 'script lives on master node'
95           default-slaves:
96             - master
97           allowed-multiselect: false
98           ignore-offline-nodes: true
99
100     triggers:
101       - timed: '@midnight'
102
103     builders:
104       - shell: |
105           cd /opt/jenkins-ci/slavemonitor
106           bash slave-monitor-0.1.sh | sort
107
108 - job-template:
109     name: 'ansible-build-server'
110
111     project-type: freestyle
112
113     disabled: false
114     concurrent: true
115
116     parameters:
117       - node:
118           name: SLAVE_NAME
119           description: Build Servers
120           default-slaves:
121             - lf-build1
122             - lf-build2
123           allowed-multiselect: true
124           ignore-offline-nodes: true
125       - project-parameter:
126           project: releng
127           branch: master
128
129     scm:
130       - git-scm
131
132     triggers:
133       - timed: '@midnight'
134
135     builders:
136       - install-ansible
137       - run-ansible-build-server-playbook
138
139
140 - builder:
141     name: install-ansible
142     builders:
143       - shell: |
144           # Install ansible here
145           if [ -f /etc/centos-release ] \
146           || [ -f /etc/redhat-release ] \
147           || [ -f /etc/system-release ]; then
148           sudo yum -y install ansible
149           fi
150           if [ -f /etc/debian_version ] \
151           || grep -qi ubuntu /etc/lsb-release \
152           || grep -qi ubuntu /etc/os-release; then
153           sudo apt-get -y install ansible
154           fi
155
156 - builder:
157     name: run-ansible-build-server-playbook
158     builders:
159       - shell: |
160           # run playbook
161           sudo ansible-playbook -C -D -i \
162           $WORKSPACE/utils/build-server-ansible/inventory.ini \
163           $WORKSPACE/utils/build-server-ansible/main.yml