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>
- compare-type: ANT
pattern: '**/*.yaml'
- 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:
- parameter:
name: lf-infra-jjb-parameters
parameters:
# Job Templates #
#################
# 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}'
project-type: freestyle
node: '{build-node}'
- lf-infra-jjb-parameters:
jjb-version: '{jjb-version}'
- 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}'
scm:
- lf-infra-gerrit-scm:
jenkins-ssh-credential: '{jenkins-ssh-credential}'
submodule-recursive: '{submodule-recursive}'
choosing-strategy: default
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}'
triggers:
- gerrit:
server-name: '{gerrit-server-name}'
branch-pattern: '**/{branch}'
<<: *lf_jjb_file_paths
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'
- job-template:
name: '{project-name}-jjb-verify'
- project-type: freestyle
-
- node: '{build-node}'
-
- ######################
- # 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:
scm:
- lf-infra-gerrit-scm:
choosing-strategy: gerrit
jenkins-ssh-credential: '{jenkins-ssh-credential}'
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}'
triggers:
- gerrit:
server-name: '{gerrit-server-name}'
- branch-compare-type: ANT
branch-pattern: '**/{branch}'
<<: *lf_jjb_file_paths
- 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