Add packer verify and merge jobs 53/5153/1
authorAnil Belur <abelur@linuxfoundation.org>
Wed, 15 Feb 2017 03:19:52 +0000 (13:19 +1000)
committerAnil Belur <abelur@linuxfoundation.org>
Thu, 16 Feb 2017 03:10:03 +0000 (13:10 +1000)
- These jobs have been ported from ODL releng
- Jobs are designed to build new images first of every month
- Verify runs a packer validation on the templates and verifies
  the syntax of provision scripts
- Merge job is designed to trigger a build only relevent to the change
  rather than building all images

Change-Id: I882fdf9d60a49221e1d9f50809c5fda1d8ebf4fb
Signed-off-by: Anil Belur <abelur@linuxfoundation.org>
jjb/ci-management/ci-management-jobs.yaml
jjb/global-defaults.yaml
jjb/global-macros.yaml

index 24fa255..d46f894 100644 (file)
@@ -3,6 +3,16 @@
     jobs:
         - 'ci-management-verify-jjb'
         - 'ci-management-merge-jjb'
+        - 'ci-management-verify-packer'
+        - 'ci-management-merge-packer-{platforms}-{templates}'
+
+    platforms:
+        - centos
+        - ubuntu-14.04
+        - ubuntu-16.04
+
+    templates:
+        - basebuild
 
     project: ci-management
     branch: master
             !include-raw-escape: include-raw-test-nodepool.sh
         - shell:
             !include-raw-escape: include-raw-merge-nodepool.sh
+
+
+
+- job-template:
+    name: 'ci-management-verify-packer'
+    project-type: freestyle
+    node: ubuntu1404-basebuild-4c-4g
+    concurrent: true
+
+    properties:
+        - fdio-infra-properties:
+            build-days-to-keep: '{build-days-to-keep}'
+            build-num-to-keep: '{build-num-to-keep}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - gerrit-refspec-parameter:
+            refspec: 'refs/heads/{branch}'
+
+    scm:
+        - gerrit-trigger-scm:
+            credentials-id: 'jenkins-gerrit-credentials'
+            refspec: '$GERRIT_REFSPEC'
+            branches:
+                - '$GERRIT_BRANCH'
+            choosing-strategy: 'gerrit'
+
+    wrappers:
+        - fdio-infra-wrappers:
+            build-timeout: '{build-timeout}'
+        - ssh-agent-credentials:
+            users:
+                - 'jenkins-gerrit-credentials'
+
+    triggers:
+        - timed: 'H H 1 * *'
+        - gerrit:
+            server-name: 'Primary'
+            trigger-on:
+                - patchset-created-event:
+                    exclude-drafts: 'false'
+                    exclude-trivial-rebase: 'false'
+                    exclude-no-code-change: 'false'
+                - draft-published-event
+                - comment-added-contains-event:
+                    comment-contains-value: 'recheck'
+                - comment-added-contains-event:
+                    comment-contains-value: 'reverify'
+            projects:
+                - project-compare-type: 'ANT'
+                  project-pattern: 'ci-management'
+                  branches:
+                    - branch-compare-type: 'ANT'
+                      branch-pattern: '**/master'
+                  file-paths:
+                    - compare-type: ANT
+                      pattern: packer/**
+
+    builders:
+        - packer-validate:
+
+    publishers:
+        - archive:
+            artifacts: 'packer/*.log'
+            allow-empty: 'true'
+            only-if-success: 'true'
+        - fdio-infra-shiplogs:
+            maven-version: 'mvn33-new'
+
+- job-template:
+    name: 'ci-management-merge-packer-{platforms}-{templates}'
+    project-type: freestyle
+    node: ubuntu1404-basebuild-4c-4g
+    concurrent: true
+
+    properties:
+        - fdio-infra-properties:
+            build-days-to-keep: '{build-days-to-keep}'
+            build-num-to-keep: '{build-num-to-keep}'
+
+    parameters:
+        - project-parameter:
+            project: '{project}'
+        - gerrit-parameter:
+            branch: '{branch}'
+        - gerrit-refspec-parameter:
+            refspec: 'refs/heads/{branch}'
+
+    scm:
+        - gerrit-trigger-scm:
+            credentials-id: 'jenkins-gerrit-credentials'
+            refspec: '$GERRIT_REFSPEC'
+            branches:
+                - '$GERRIT_BRANCH'
+            choosing-strategy: 'default'
+
+    wrappers:
+        - fdio-infra-wrappers:
+            build-timeout: '{build-timeout}'
+        - ssh-agent-credentials:
+            users:
+                - 'jenkins-gerrit-credentials'
+
+    triggers:
+        - timed: 'H H 1 * *'
+        - gerrit:
+            server-name: 'Primary'
+            trigger-on:
+                - change-merged-event
+                - comment-added-contains-event:
+                    comment-contains-value: 'remerge'
+            projects:
+              - project-compare-type: 'ANT'
+                project-pattern: 'ci-management'
+                branches:
+                    - branch-compare-type: 'ANT'
+                      branch-pattern: '**/master'
+                file-paths:
+                    - compare-type: ANT
+                      pattern: 'packer/vars/{platforms}.json'
+                    - compare-type: ANT
+                      pattern: 'packer/templates/{templates}.json'
+                    - compare-type: ANT
+                      pattern: 'packer/provision/{templates}.sh'
+                    - compare-type: ANT
+                      pattern: 'packer/provision/system_reseal.sh'
+                    - compare-type: ANT
+                      pattern: 'packer/provision/rh-user_data.sh'
+                    - compare-type: ANT
+                      pattern: 'packer/provision/baseline.sh'
+
+    builders:
+        - packer-validate:
+        - packer-build:
+            platform: '{platforms}'
+            template: '{templates}'
+
+    publishers:
+        - archive:
+            artifacts: 'packer/*.log'
+            allow-empty: 'true'
+            only-if-success: 'true'
+        - fdio-infra-shiplogs:
+            maven-version: 'mvn33-new'
index b5aa100..81daba4 100644 (file)
@@ -9,3 +9,6 @@
     build-artifact-num-to-keep: 5
     # Timeout in minutes
     build-timeout: 360
+
+    # fd.io branch defaults
+    branch: master
index 2493c2b..cdecdce 100644 (file)
                   variable: 'GLOBAL_SETTINGS_FILE'
                 - file-id: '{settings-file}'
                   variable: 'SETTINGS_FILE'
+
+- property:
+    name: fdio-infra-properties
+    properties:
+        - build-discarder:
+            days-to-keep: '{build-days-to-keep}'
+            num-to-keep: '{build-num-to-keep}'
+
+
+- builder:
+    name: packer-validate
+    builders:
+        - config-file-provider:
+            files:
+                - file-id: 'packer-cloud-env'
+                  variable: 'CLOUDENV'
+        - shell: |
+            #!/bin/bash
+            cd packer
+            varfiles="../packer/vars/*"
+            templates="../packer/templates/*"
+            provision="../packer/provision/*.sh"
+            for v in $varfiles; do
+                [[ "${v##*/}" =~ ^(cloud-env.*)$ ]] && continue
+                for t in $templates; do
+                    export PACKER_LOG="yes" && \
+                    export PACKER_LOG_PATH="packer-validate-${v##*/}-${t##*/}.log" && \
+                                packer.io validate -var-file=$CLOUDENV \
+                                -var-file=$v $t
+                    if [ $? -ne 0 ]; then
+                        break
+                    fi
+                done
+            done
+            for p in $provision; do
+                /bin/bash -n $p > provision-validate-${p##*/}.log 2>&1
+                if [ $? -ne 0 ]; then
+                    break
+                fi
+            done
+
+
+- builder:
+    name: packer-build
+    builders:
+        - config-file-provider:
+            files:
+                - file-id: 'packer-cloud-env'
+                  variable: 'CLOUDENV'
+        - shell: |
+            #!/bin/bash
+            cd packer
+            export PACKER_LOG="yes" && \
+            export PACKER_LOG_PATH="packer-build.log" && \
+                        packer.io build -var-file=$CLOUDENV \
+                         -var-file=../packer/vars/{platform}.json \
+                         ../packer/templates/{template}.json