Merge "Ansible for build server"
[releng.git] / jjb / releng / opnfv-utils.yml
index 721b5de..b12f663 100644 (file)
@@ -1,11 +1,13 @@
+---
 - project:
 
     name: opnfv-utils
 
     jobs:
-        - 'prune-docker-images'
-        - 'archive-repositories'
-        - 'check-status-of-slaves'
+      - 'prune-docker-images'
+      - 'archive-repositories'
+      - 'check-status-of-slaves'
+      - 'ansible-build-server'
 
 ########################
 # job templates
     concurrent: true
 
     parameters:
-        - node:
-            name: SLAVE_NAME
-            description: Slaves to prune docker images
-            default-slaves:
-                - arm-build2
-                - ericsson-build4
-                - ericsson-build5
-                - lf-build2
-            allowed-multiselect: true
-            ignore-offline-nodes: true
+      - node:
+          name: SLAVE_NAME
+          description: Slaves to prune docker images
+          default-slaves:
+            - arm-build3
+            - arm-build4
+            - arm-build5
+            - arm-build6
+            - ericsson-build3
+            - ericsson-build4
+            - lf-build2
+          allowed-multiselect: true
+          ignore-offline-nodes: true
 
     builders:
-        - description-setter:
-            description: "Built on $NODE_NAME"
-        - shell: |
-            #!/bin/bash
+      - description-setter:
+          description: "Built on $NODE_NAME"
+      # yamllint disable rule:line-length
+      - shell: |
+          #!/bin/bash
+          (docker ps -q; docker ps -aq) | sort | uniq -u | xargs --no-run-if-empty docker rm
+          docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi
 
-            (docker ps -q; docker ps -aq) | sort | uniq -u | xargs --no-run-if-empty docker rm
-            docker images -f dangling=true -q | xargs --no-run-if-empty docker rmi
 
+    # yamllint enable rule:line-length
     triggers:
-        - timed: '@midnight'
+      - timed: '@midnight'
 
 - job-template:
     name: 'archive-repositories'
     concurrent: true
 
     parameters:
-        - node:
-            name: SLAVE_NAME
-            description: Where to create the archive
-            default-slaves:
-                - master
-            allowed-multiselect: false
-            ignore-offline-nodes: true
+      - node:
+          name: SLAVE_NAME
+          description: Where to create the archive
+          default-slaves:
+            - master
+          allowed-multiselect: false
+          ignore-offline-nodes: true
 
     triggers:
-        - timed: '@monthly'
+      - timed: '@monthly'
 
     builders:
-        - shell:
-            !include-raw-escape: opnfv-repo-archiver.sh
+      - shell:
+          !include-raw-escape: opnfv-repo-archiver.sh
+
+    publishers:
+      - email-ext:
+          content-type: 'text'
+          failure: false
+          always: true
+          body:
+            ${{FILE,path="archive-link.txt"}}
+          reply-to: >
+            helpdesk@opnfv.org
+          recipients: >
+            swinslow@linuxfoundation.org
+
 
 - job-template:
     name: 'check-status-of-slaves'
     concurrent: true
 
     parameters:
-        - node:
-            name: SLAVE_NAME
-            description: We don't want workspace wiped. so I just threw the script on the master
-            default-slaves:
-                - master
-            allowed-multiselect: false
-            ignore-offline-nodes: true
+      - node:
+          name: SLAVE_NAME
+          description: 'script lives on master node'
+          default-slaves:
+            - master
+          allowed-multiselect: false
+          ignore-offline-nodes: true
 
     triggers:
-        - timed: '@midnight'
+      - timed: '@midnight'
+
+    builders:
+      - shell: |
+          cd /opt/jenkins-ci/slavemonitor
+          bash slave-monitor-0.1.sh | sort
+
+- job-template:
+    name: 'ansible-build-server'
+
+    project-type: freestyle
+
+    disabled: false
+    concurrent: true
 
+    parameters:
+      - node:
+          name: SLAVE_NAME
+          description: Build Servers
+          default-slaves:
+            - lf-build1
+            - lf-build2
+          allowed-multiselect: true
+          ignore-offline-nodes: true
+      - project-parameter:
+          project: releng
+          branch: master
+
+    scm:
+      - git-scm
+
+    triggers:
+      - timed: '@midnight'
+
+    builders:
+      - install-ansible
+      - run-ansible-build-server-playbook
+
+
+- builder:
+    name: install-ansible
+    builders:
+      - shell: |
+          # Install ansible here
+          if [ -f /etc/centos-release ] \
+          || [ -f /etc/redhat-release ] \
+          || [ -f /etc/system-release ]; then
+          sudo yum -y install ansible
+          fi
+          if [ -f /etc/debian_version ] \
+          || grep -qi ubuntu /etc/lsb-release \
+          || grep -qi ubuntu /etc/os-release; then
+          sudo apt-get -y install ansible
+          fi
+
+- builder:
+    name: run-ansible-build-server-playbook
     builders:
-        - shell: |
-            cd /opt/jenkins-ci/slavemonitor
-            bash slave-monitor-0.1.sh | sort
+      - shell: |
+          # run playbook
+          sudo ansible-playbook -C -D -i \
+          $WORKSPACE/utils/build-server-ansible/inventory.ini \
+          $WORKSPACE/utils/build-server-ansible/main.yml