8005bdcb6d66a60bcd654fbcf524f1b5b1d7dd9e
[releng/global-jjb.git] / jjb / lf-ci-jobs.yaml
1 ---
2 - job-group:
3     name: '{project-name}-ci-jobs'
4
5     # This job group contains all the recommended jobs that should be deployed
6     # for any project ci.
7
8     jjb-version: 1.6.2
9
10     jobs:
11       - gerrit-jjb-merge
12       - gerrit-jjb-verify
13
14 ####################
15 # Anchors & Macros #
16 ####################
17
18 - builder:
19     name: lf-infra-jjbini
20     builders:
21       - config-file-provider:
22           files:
23             - file-id: jjbini
24               target: '$HOME/.config/jenkins_jobs/jenkins_jobs.ini'
25
26 - lf_jjb_file_paths: &lf_jjb_file_paths
27     name: lf-jjb-file-paths
28     file-paths:
29       - compare-type: ANT
30         pattern: '**/*.sh'
31       - compare-type: ANT
32         pattern: '**/*.yaml'
33
34 - lf_jjb_merge_builders: &lf_jjb_merge_builders
35     name: lf-jjb-merge-builders
36     builders:
37       - lf-infra-jjbini
38       - shell: !include-raw-escape:
39           - ../shell/jjb-install.sh
40           - ../shell/jjb-merge-job.sh
41
42 - lf_jjb_verify_builders: &lf_jjb_verify_builders
43     name: lf-jjb-verfy-builders
44     builders:
45       - lf-infra-jjbini
46       - shell: !include-raw-escape:
47           - ../shell/jjb-install.sh
48           - ../shell/jjb-verify-job.sh
49           - ../shell/jjb-check-unicode.sh
50       - gpg-verify-git-signature
51
52 - parameter:
53     name: lf-infra-jjb-parameters
54     parameters:
55       - string:
56           name: JJB_VERSION
57           default: '{jjb-version}'
58           description: Jenkins Job Builder version to download and install.
59
60 #################
61 # Job Templates #
62 #################
63
64 # JJB verify and merge jobs are the same except for their scm, trigger, and
65 # builders definition. This anchor is the common template
66 - lf_jjb_verify_merge: &lf_jjb_verify_merge
67     name: lf-jjb-verify-merge
68     project-type: freestyle
69
70     node: '{build-node}'
71
72     ######################
73     # Default parameters #
74     ######################
75
76     branch: master
77     submodule-recursive: true
78
79     #####################
80     # Job Configuration #
81     #####################
82
83     properties:
84       - lf-infra-properties:
85           project: '{project}'
86           build-days-to-keep: 7
87
88     parameters:
89       - lf-infra-parameters:
90           project: '{project}'
91           branch: '{branch}'
92       - lf-infra-jjb-parameters:
93           jjb-version: '{jjb-version}'
94
95     wrappers:
96       - lf-infra-wrappers:
97           build-timeout: 10
98           jenkins-ssh-credential: '{jenkins-ssh-credential}'
99
100     publishers:
101       - lf-infra-publish
102
103 - job-template:
104     name: '{project-name}-jjb-merge'
105     id: gerrit-jjb-merge
106     <<: *lf_jjb_verify_merge
107     # yamllint disable-line rule:key-duplicates
108     <<: *lf_jjb_merge_builders
109
110     scm:
111       - lf-infra-gerrit-scm:
112           jenkins-ssh-credential: '{jenkins-ssh-credential}'
113           refspec: ''
114           branch: '{branch}'
115           submodule-recursive: '{submodule-recursive}'
116           choosing-strategy: default
117
118     triggers:
119       - gerrit:
120           server-name: '{gerrit-server-name}'
121           trigger-on:
122             - change-merged-event
123             - comment-added-contains-event:
124                 comment-contains-value: remerge$
125           projects:
126             - project-compare-type: ANT
127               project-pattern: '{project}'
128               branches:
129                 - branch-compare-type: ANT
130                   branch-pattern: '**/{branch}'
131               <<: *lf_jjb_file_paths
132
133 - job-template:
134     name: '{project-name}-jjb-verify'
135     id: gerrit-jjb-verify
136     concurrent: true
137     <<: *lf_jjb_verify_merge
138     # yamllint disable-line rule:key-duplicates
139     <<: *lf_jjb_verify_builders
140
141     scm:
142       - lf-infra-gerrit-scm:
143           refspec: '$GERRIT_REFSPEC'
144           branch: '$GERRIT_BRANCH'
145           submodule-recursive: '{submodule-recursive}'
146           choosing-strategy: gerrit
147           jenkins-ssh-credential: '{jenkins-ssh-credential}'
148
149     triggers:
150       - gerrit:
151           server-name: '{gerrit-server-name}'
152           trigger-on:
153             - patchset-created-event:
154                 exclude-drafts: false
155                 exclude-trivial-rebase: false
156                 exclude-no-code-change: false
157             - draft-published-event
158             - comment-added-contains-event:
159                 comment-contains-value: recheck$
160           projects:
161             - project-compare-type: ANT
162               project-pattern: '{project}'
163               branches:
164                 - branch-compare-type: ANT
165                   branch-pattern: '**/{branch}'
166               <<: *lf_jjb_file_paths