Use anchors on JJB verify / merge job definitions 46/4746/1
authorAndrew Grimberg <agrimberg@linuxfoundation.org>
Mon, 8 May 2017 18:28:49 +0000 (11:28 -0700)
committerAndrew Grimberg <agrimberg@linuxfoundation.org>
Mon, 8 May 2017 18:28:49 +0000 (11:28 -0700)
We need a relatively easy way of keeping our Gerrit and GitHub verify
and merge jobs in sync. Given that presently the only difference really
should be the SCM and Trigger diffinitions for each of the job types,
plus a bunch of shared boiler plate in document anchors make a good
method for dealing with it.

Issue: RELENG-106
Change-Id: I28dba9cd5e5535353d9bd4214e38fc4f8e34fc07
Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
jjb/lf-ci-jobs.yaml

index 722b5bc..74eaee0 100644 (file)
       - compare-type: ANT
         pattern: '**/*.yaml'
 
+- lf_jjb_merge_builders: &lf_jjb_merge_builders
+    name: lf-jjb-merge-builders
+    builders:
+      - lf-infra-jjbini
+      - shell: !include-raw-escape:
+          - ../shell/jjb-install.sh
+          - ../shell/jjb-merge-job.sh
+
+- lf_jjb_verify_builders: &lf_jjb_verify_builders
+    name: lf-jjb-verfy-builders
+    builders:
+      - lf-infra-jjbini
+      - shell: !include-raw-escape:
+          - ../shell/jjb-install.sh
+          - ../shell/jjb-verify-job.sh
+          - ../shell/jjb-check-unicode.sh
+      - gpg-verify-git-signature
+
 - parameter:
     name: lf-infra-jjb-parameters
     parameters:
 # Job Templates #
 #################
 
-- job-template:
-    name: '{project-name}-jjb-merge'
+# JJB verify and merge jobs are the same except for their scm, trigger, and
+# builders definition. This anchor is the common template
+- lf_jjb_verify_merge: &lf_jjb_verify_merge
+    name: lf-jjb-verify-merge
     project-type: freestyle
 
     node: '{build-node}'
       - lf-infra-jjb-parameters:
           jjb-version: '{jjb-version}'
 
+    wrappers:
+      - lf-infra-wrappers:
+          build-timeout: 10
+          jenkins-ssh-credential: '{jenkins-ssh-credential}'
+
+    publishers:
+      - lf-infra-publish
+
+- job-template:
+    name: '{project-name}-jjb-merge'
+    <<: *lf_jjb_verify_merge
+    # yamllint disable-line rule:key-duplicates
+    <<: *lf_jjb_merge_builders
+
     scm:
       - lf-infra-gerrit-scm:
           jenkins-ssh-credential: '{jenkins-ssh-credential}'
           submodule-recursive: '{submodule-recursive}'
           choosing-strategy: default
 
-    wrappers:
-      - lf-infra-wrappers:
-          build-timeout: 10
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
     triggers:
       - gerrit:
           server-name: '{gerrit-server-name}'
                   branch-pattern: '**/{branch}'
               <<: *lf_jjb_file_paths
 
-    builders:
-      - lf-infra-jjbini
-      - shell: !include-raw-escape:
-          - ../shell/jjb-install.sh
-          - ../shell/jjb-merge-job.sh
-
-    publishers:
-      - lf-infra-publish
-
 - job-template:
     name: '{project-name}-jjb-verify'
-    project-type: freestyle
-
-    node: '{build-node}'
     concurrent: true
-
-    ######################
-    # Default parameters #
-    ######################
-
-    branch: master
-    submodule-recursive: true
-
-    #####################
-    # Job Configuration #
-    #####################
-
-    properties:
-      - lf-infra-properties:
-          project: '{project}'
-          build-days-to-keep: 7
-
-    parameters:
-      - lf-infra-parameters:
-          project: '{project}'
-          branch: '{branch}'
-      - lf-infra-jjb-parameters:
-          jjb-version: '{jjb-version}'
+    <<: *lf_jjb_verify_merge
+    # yamllint disable-line rule:key-duplicates
+    <<: *lf_jjb_verify_builders
 
     scm:
       - lf-infra-gerrit-scm:
           choosing-strategy: gerrit
           jenkins-ssh-credential: '{jenkins-ssh-credential}'
 
-    wrappers:
-      - lf-infra-wrappers:
-          build-timeout: 10
-          jenkins-ssh-credential: '{jenkins-ssh-credential}'
-
     triggers:
       - gerrit:
           server-name: '{gerrit-server-name}'
                 - branch-compare-type: ANT
                   branch-pattern: '**/{branch}'
               <<: *lf_jjb_file_paths
-
-    builders:
-      - lf-infra-jjbini
-      - shell: !include-raw-escape:
-          - ../shell/jjb-install.sh
-          - ../shell/jjb-verify-job.sh
-          - ../shell/jjb-check-unicode.sh
-      - gpg-verify-git-signature
-
-    publishers:
-      - lf-infra-publish