2 # Autorelease build jobs
4 name: autorelease-branch-cut
10 project-type: freestyle
11 node: centos7-builder-2c-2g
14 - opendaylight-infra-properties:
18 - lf-infra-parameters:
19 project: releng/autorelease
22 lftools-version: "{lftools-version}"
26 Release name to branch cut.
27 Eg. Lithium, Beryllium, Boron, Carbon...
32 If DRY_RUN is enabled modifications are not published to Gerrit.
35 - lf-infra-gerrit-scm:
36 git-url: "$GIT_URL/$GERRIT_PROJECT"
38 refspec: "refs/heads/master"
39 jenkins-ssh-credential: opendaylight-jenkins-ssh
40 submodule-disable: false
41 submodule-recursive: true
43 choosing-strategy: default
48 jenkins-ssh-credential: opendaylight-jenkins-ssh
51 - shell: !include-raw-escape: branch-cut.sh
57 name: "autorelease-release-{stream}-{mvn-version}-{java-version}"
59 ######################
60 # Default parameters #
61 ######################
63 build-node: "{build-node}"
65 java-version: "{java-version}"
66 mvn-global-settings: global-settings
67 mvn-goals: clean deploy
68 mvn-opts: "-Xmx8g -Dmaven.compile.fork=true"
70 mvn-settings: autorelease-settings
79 project-type: freestyle
81 disabled: "{disable-job}"
84 - lf-infra-properties:
85 build-days-to-keep: 30
88 - lf-infra-parameters:
92 lftools-version: "{lftools-version}"
93 - lf-infra-maven-parameters:
94 mvn-opts: "{mvn-opts}"
95 mvn-params: "{mvn-params}"
96 mvn-version: "{mvn-version}"
97 - distribution-karaf-version:
98 karaf-version: "{karaf-version}"
99 - autorelease-release-tag:
100 release-tag: "{stream}"
102 name: ARCHIVE_ARTIFACTS
103 default: "{archive-artifacts}"
104 description: Artifacts to archive to the logs server.
106 name: STAGING_PROFILE_ID
107 default: "{staging-profile-id}"
108 description: Nexus staging profile ID.
112 credentials-id: "opendaylight-jenkins-ssh"
114 refspec: "$GERRIT_REFSPEC"
117 choosing-strategy: default
124 - opendaylight-infra-wrappers:
132 # force jenkins install of maven version before any shell scripts use it
134 mvn-version: "{mvn-version}"
135 - wipe-local-maven-repo
136 - lf-jacoco-nojava-workaround
137 - shell: "./scripts/list-project-dependencies.sh"
138 - autorelease-determine-merge-order
139 - lf-provide-maven-settings:
140 global-settings-file: "{mvn-global-settings}"
141 settings-file: "{mvn-settings}"
142 - autorelease-generate-release-patches
143 - autorelease-generate-artifact-versions
144 - lf-update-java-alternatives:
145 java-version: "{java-version}"
146 - autorelease-distribute-taglist
147 - distribute-build-url:
148 path: "integration/distribution/$KARAF_ARTIFACT/src/main/assembly"
149 # In a perfect world projects should be releasing separately and we consume them
150 # via a project that pulls the release bits from each project from Nexus.
151 # Keep the patches compatible with that ideal, but apply an edit
152 # to enable building in a single maven reactor afterwards.
153 - autorelease-fix-relative-paths
155 mvn-goals: "{mvn-goals}"
157 sign-artifacts: "{sign-artifacts}"
158 sign-dir: "$WORKSPACE/m2repo"
161 mvn-global-settings: "{mvn-global-settings}"
162 mvn-settings: "{mvn-settings}"
163 mvn-staging-id: "{mvn-staging-id}"
164 - autorelease-get-integration-test-variables
165 - autorelease-maven-sources:
166 opendaylight-infra-mvn-opts: "{opendaylight-infra-mvn-opts}"
167 maven-version: "{mvn-version}"
168 settings: "{mvn-settings}"
169 global-settings: "{mvn-global-settings}"
175 - opendaylight-infra-notify-status
176 - trigger-parameterized-builds:
177 - project: "integration-distribution-test-{integration-test}"
178 condition: UNSTABLE_OR_BETTER
179 property-file: variables.jenkins-trigger
180 fail-on-missing: true
181 - project: "integration-distribution-test-{integration-test}"
183 trigger-with-no-params: true
184 # Critical component of the OpenDaylight community
191 - shell: echo '#topic cookies'
192 mark-unstable-if-failed: false
196 name: "autorelease-update-submodules-{stream}"
198 ######################
199 # Default parameters #
200 ######################
205 #####################
206 # Job configuration #
207 #####################
209 project-type: freestyle
210 node: centos7-builder-2c-2g
211 disabled: "{disable-job}"
214 - lf-infra-properties:
215 build-days-to-keep: 7
218 - lf-infra-parameters:
219 project: releng/autorelease
222 refspec: "refs/heads/{branch}"
223 lftools-version: "{lftools-version}"
226 - lf-infra-gerrit-scm:
227 git-url: "$GIT_URL/$GERRIT_PROJECT"
229 refspec: "refs/heads/{branch}"
230 jenkins-ssh-credential: opendaylight-jenkins-ssh
231 submodule-disable: false
232 submodule-recursive: true
233 submodule-timeout: 10
234 choosing-strategy: default
239 jenkins-ssh-credential: opendaylight-jenkins-ssh
242 - timed: "{obj:cron}"
246 # Fetch latest head of branch
248 git checkout $GERRIT_BRANCH
249 git submodule update --remote
251 - lf-infra-push-gerrit-patch:
253 gerrit-user: "jenkins-$SILO"
254 gerrit-host: "git.opendaylight.org"
255 gerrit-topic: "autorelease-update-submodules"
256 gerrit-commit-message: "Update submodules to latest HEAD of branch"
257 reviewers-email: "jenkins-releng@opendaylight.org"
263 name: autorelease-update-validate-jobs-{stream}
265 ######################
266 # Default parameters #
267 ######################
272 #####################
273 # Job configuration #
274 #####################
276 project-type: freestyle
277 node: centos7-builder-2c-1g
278 disabled: "{disable-job}"
281 - lf-infra-properties:
282 build-days-to-keep: 7
285 - lf-infra-parameters:
286 project: releng/builder
289 lftools-version: "{lftools-version}"
292 - lf-infra-gerrit-scm:
293 git-url: "$GIT_URL/releng/builder"
295 refspec: "refs/heads/master"
296 jenkins-ssh-credential: opendaylight-jenkins-ssh
297 submodule-disable: false
298 submodule-recursive: true
299 submodule-timeout: 10
300 choosing-strategy: default
305 server-name: "{gerrit-server-name}"
307 - change-merged-event
308 - comment-added-contains-event:
309 comment-contains-value: remerge$
311 - project-compare-type: ANT
312 project-pattern: "{project}"
314 - branch-compare-type: ANT
315 branch-pattern: "**/{branch}"
323 jenkins-ssh-credential: opendaylight-jenkins-ssh
327 - autorelease-update-project-views
328 - autorelease-update-validate-projects
329 - lf-infra-push-gerrit-patch:
331 gerrit-user: "jenkins-$SILO"
332 gerrit-host: "git.opendaylight.org"
333 gerrit-topic: "autorelease-update-validate-jobs-{stream}"
334 gerrit-commit-message: "Update validate-ar jobs for {stream}"
335 reviewers-email: "jenkins-releng@opendaylight.org"
341 name: autorelease-version-bump-{stream}-{mvn-version}-{java-version}
343 #####################
344 # Default variables #
345 #####################
347 mvn-global-settings: global-settings
348 mvn-settings: autorelease-settings
352 #####################
353 # Job configuration #
354 #####################
356 project-type: freestyle
358 disabled: "{disable-job}"
361 - opendaylight-infra-properties:
362 build-days-to-keep: 7
365 - lf-infra-parameters:
366 project: releng/autorelease
369 refspec: "refs/heads/{branch}"
370 lftools-version: "{lftools-version}"
375 Release that is being version bumped.
376 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
381 If BRANCH_CUT is enabled, perform version bump for branch cutting
382 workflow, else perform version bump for simultaneous release
388 If DRY_RUN is enabled modifications are not published to Gerrit
389 and artifacts are not pushed to Nexus. Instead the build will be
390 performed using the goals "clean install".
392 maven-version: "{mvn-version}"
395 - lf-infra-gerrit-scm:
396 git-url: "$GIT_URL/$GERRIT_PROJECT"
398 refspec: "refs/heads/{branch}"
399 jenkins-ssh-credential: opendaylight-jenkins-ssh
400 submodule-disable: false
401 submodule-recursive: true
402 submodule-timeout: 10
403 choosing-strategy: default
408 jenkins-ssh-credential: opendaylight-jenkins-ssh
412 # force jenkins install of maven version before any shell scripts use it
413 - lf-update-java-alternatives:
414 java-version: "{java-version}"
416 mvn-version: "{mvn-version}"
417 - lf-provide-maven-settings:
418 global-settings-file: "{mvn-global-settings}"
419 settings-file: "{mvn-settings}"
420 - shell: !include-raw-escape:
427 name: "autorelease-generate-release-notes-{stream}"
429 ######################
430 # Default parameters #
431 ######################
434 gerrit_merge_triggers:
435 - comment-added-contains-event:
436 comment-contains-value: generate-release-notes .+$
438 #####################
439 # Job Configuration #
440 #####################
442 project-type: freestyle
443 node: centos7-builder-2c-8g
444 disabled: "{disable-job}"
447 - lf-infra-properties:
448 build-days-to-keep: 7
451 - lf-infra-parameters:
455 lftools-version: "{lftools-version}"
459 Release to generate release notes for.
460 Eg. Silicon-SR1, Phosphorus-SR2 ...
462 - lf-infra-gerrit-scm:
463 git-url: "$GIT_URL/$GERRIT_PROJECT"
464 branch: "$GERRIT_BRANCH"
465 refspec: "$GERRIT_REFSPEC"
466 jenkins-ssh-credential: opendaylight-jenkins-ssh
467 submodule-disable: false
468 submodule-recursive: true
469 submodule-timeout: 10
470 choosing-strategy: default
475 jenkins-ssh-credential: opendaylight-jenkins-ssh
479 server-name: "{gerrit-server-name}"
480 trigger-on: "{obj:gerrit_merge_triggers}"
482 - project-compare-type: ANT
483 project-pattern: "{project}"
485 - branch-compare-type: ANT
486 branch-pattern: "**/{branch}"
490 - autorelease-generate-release-notes
496 name: "{project-name}-validate-autorelease-{stream}"
498 #####################
499 # Default variables #
500 #####################
502 java-version: openjdk8
503 mvn-global-settings: global-settings
504 mvn-settings: autorelease-settings
508 #####################
509 # Job Configuration #
510 #####################
512 project-type: freestyle
513 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
514 # override the build node.
515 node: centos7-builder-2c-8g
517 jdk: "{java-version}"
518 disabled: "{disable-job}"
521 - lf-infra-properties:
522 build-days-to-keep: 7
525 - lf-infra-parameters:
529 lftools-version: "{lftools-version}"
530 - autorelease-release-tag:
531 release-tag: validate
534 default: "{git-url}/releng/autorelease"
535 description: "Autorelease clone URL"
540 credentials-id: "opendaylight-jenkins-ssh"
550 - opendaylight-infra-wrappers:
551 build-timeout: "{build-timeout}"
554 - gerrit-trigger-patch-submitted:
555 gerrit-server-name: "{gerrit-server-name}"
563 - lf-update-java-alternatives:
564 java-version: "{java-version}"
565 - autorelease-checkout-gerrit-patch
566 - lf-jacoco-nojava-workaround
567 - shell: "./scripts/list-project-dependencies.sh"
568 - autorelease-determine-merge-order
569 - autorelease-generate-release-patches
570 # In a perfect world projects should be releasing separately and we consume them
571 # via a project that pulls the release bits from each project from Nexus.
572 # Keep the patches compatible with that ideal, but apply an edit
573 # to enable building in a single maven reactor afterwards.
574 - autorelease-fix-relative-paths
576 maven-version: "{mvn-version}"
577 pom: validate-pom.xml
579 clean install dependency:tree
582 {opendaylight-infra-mvn-opts}
585 settings: "{mvn-settings}"
587 global-settings: "{mvn-global-settings}"
588 global-settings-type: cfp
590 maven-version: "{mvn-version}"
595 {opendaylight-infra-mvn-opts}
597 - "-Xmx8g -Dmaven.compile.fork=true"
598 settings: "{mvn-settings}"
600 global-settings: "{mvn-global-settings}"
601 global-settings-type: cfp
607 - email-notification:
608 email-recipients: "{email-recipients}"
609 email-prefix: "[autorelease] [{project-name}]"