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-recursive: true
42 choosing-strategy: default
47 jenkins-ssh-credential: opendaylight-jenkins-ssh
50 - shell: !include-raw-escape: branch-cut.sh
56 name: 'autorelease-release-{stream}-{mvn-version}-{java-version}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: '{java-version}'
65 mvn-global-settings: global-settings
66 mvn-goals: clean deploy
67 mvn-opts: '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
69 mvn-settings: autorelease-settings
73 ossrh-profile-id: 6386ebbbf3a563
80 project-type: freestyle
82 disabled: '{disable-job}'
85 - lf-infra-properties:
86 build-days-to-keep: 30
89 - lf-infra-parameters:
93 lftools-version: '{lftools-version}'
94 - lf-infra-maven-parameters:
95 mvn-opts: '{mvn-opts}'
96 mvn-params: '{mvn-params}'
97 mvn-version: '{mvn-version}'
98 - distribution-karaf-version:
99 karaf-version: '{karaf-version}'
100 - autorelease-release-tag:
101 release-tag: '{stream}'
103 name: ARCHIVE_ARTIFACTS
104 default: '{archive-artifacts}'
105 description: Artifacts to archive to the logs server.
107 name: STAGING_PROFILE_ID
108 default: '{staging-profile-id}'
109 description: Nexus staging profile ID.
113 credentials-id: 'opendaylight-jenkins-ssh'
115 refspec: '$GERRIT_REFSPEC'
118 choosing-strategy: default
125 - opendaylight-infra-wrappers:
133 # force jenkins install of maven version before any shell scripts use it
135 mvn-version: '{mvn-version}'
136 - wipe-local-maven-repo
137 - lf-jacoco-nojava-workaround
138 - shell: "./scripts/list-project-dependencies.sh"
139 - autorelease-determine-merge-order
140 - lf-provide-maven-settings:
141 global-settings-file: '{mvn-global-settings}'
142 settings-file: '{mvn-settings}'
143 - lf-infra-create-netrc:
144 server-id: '{mvn-staging-id}'
145 - autorelease-generate-release-patches
146 - autorelease-generate-artifact-versions
147 - lf-update-java-alternatives:
148 java-version: '{java-version}'
149 - autorelease-distribute-taglist
150 - distribute-build-url:
151 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
152 # In a perfect world projects should be releasing separately and we consume them
153 # via a project that pulls the release bits from each project from Nexus.
154 # Keep the patches compatible with that ideal, but apply an edit
155 # to enable building in a single maven reactor afterwards.
156 - autorelease-fix-relative-paths
158 mvn-goals: '{mvn-goals}'
160 sign-artifacts: '{sign-artifacts}'
161 sign-dir: '$WORKSPACE/m2repo'
165 mvn-central: '{mvn-central}'
166 mvn-global-settings: '{mvn-global-settings}'
167 mvn-settings: '{mvn-settings}'
168 ossrh-profile-id: '{ossrh-profile-id}'
169 - autorelease-get-integration-test-variables
170 - autorelease-maven-sources:
171 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
172 maven-version: '{mvn-version}'
173 settings: '{mvn-settings}'
174 global-settings: '{mvn-global-settings}'
180 - opendaylight-infra-notify-status
181 - trigger-parameterized-builds:
182 - project: 'integration-distribution-test-{integration-test}'
183 condition: UNSTABLE_OR_BETTER
184 property-file: variables.jenkins-trigger
185 fail-on-missing: true
186 - project: 'integration-distribution-test-{integration-test}'
188 trigger-with-no-params: true
189 - project: 'packaging-build-rpm-{stream}'
190 condition: UNSTABLE_OR_BETTER
191 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
192 property-file: variables.jenkins-trigger
193 fail-on-missing: true
194 - project: 'packaging-build-deb-{stream}'
195 condition: UNSTABLE_OR_BETTER
196 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
197 property-file: variables.jenkins-trigger
198 fail-on-missing: true
199 # Critical component of the OpenDaylight community
206 - shell: echo '#topic cookies'
207 mark-unstable-if-failed: false
211 name: 'autorelease-update-submodules-{stream}'
213 ######################
214 # Default parameters #
215 ######################
220 #####################
221 # Job configuration #
222 #####################
224 project-type: freestyle
225 node: centos7-builder-2c-2g
226 disabled: '{disable-job}'
229 - lf-infra-properties:
230 build-days-to-keep: 7
233 - lf-infra-parameters:
234 project: releng/autorelease
237 refspec: 'refs/heads/{branch}'
238 lftools-version: '{lftools-version}'
241 - lf-infra-gerrit-scm:
242 git-url: '$GIT_URL/$GERRIT_PROJECT'
244 refspec: 'refs/heads/{branch}'
245 jenkins-ssh-credential: opendaylight-jenkins-ssh
246 submodule-recursive: true
247 submodule-timeout: 10
248 choosing-strategy: default
253 jenkins-ssh-credential: opendaylight-jenkins-ssh
256 - timed: '{obj:cron}'
260 # Fetch latest head of branch
262 git checkout $GERRIT_BRANCH
263 git submodule update --remote
265 - lf-infra-push-gerrit-patch:
267 gerrit-user: 'jenkins-$SILO'
268 gerrit-host: 'git.opendaylight.org'
269 gerrit-topic: 'autorelease-update-submodules'
270 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
277 name: autorelease-update-validate-jobs-{stream}
279 ######################
280 # Default parameters #
281 ######################
286 #####################
287 # Job configuration #
288 #####################
290 project-type: freestyle
291 node: centos7-builder-2c-1g
292 disabled: '{disable-job}'
295 - lf-infra-properties:
296 build-days-to-keep: 7
299 - lf-infra-parameters:
300 project: releng/builder
303 lftools-version: '{lftools-version}'
306 - lf-infra-gerrit-scm:
307 git-url: '$GIT_URL/releng/builder'
309 refspec: 'refs/heads/master'
310 jenkins-ssh-credential: opendaylight-jenkins-ssh
311 submodule-recursive: true
312 submodule-timeout: 10
313 choosing-strategy: default
318 server-name: '{gerrit-server-name}'
320 - change-merged-event
321 - comment-added-contains-event:
322 comment-contains-value: remerge$
324 - project-compare-type: ANT
325 project-pattern: '{project}'
327 - branch-compare-type: ANT
328 branch-pattern: '**/{branch}'
336 jenkins-ssh-credential: opendaylight-jenkins-ssh
340 - autorelease-update-project-views
341 - autorelease-update-validate-projects
342 - lf-infra-push-gerrit-patch:
344 gerrit-user: 'jenkins-$SILO'
345 gerrit-host: 'git.opendaylight.org'
346 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
347 gerrit-commit-message: |
348 'Update validate autorelease projects for {stream}'
349 reviewers-email: 'jenkins-releng@opendaylight.org'
355 name: autorelease-version-bump-{stream}
357 #####################
358 # Default variables #
359 #####################
361 mvn-global-settings: global-settings
362 mvn-settings: autorelease-settings
366 #####################
367 # Job configuration #
368 #####################
370 project-type: freestyle
372 disabled: '{disable-job}'
375 - opendaylight-infra-properties:
376 build-days-to-keep: 7
379 - lf-infra-parameters:
380 project: releng/autorelease
383 refspec: 'refs/heads/{branch}'
384 lftools-version: '{lftools-version}'
389 Release that is being version bumped.
390 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
395 If BRANCH_CUT is enabled, perform version bump for branch cutting
396 workflow, else perform version bump for simultaneous release
402 If DRY_RUN is enabled modifications are not published to Gerrit
403 and artifacts are not pushed to Nexus. Instead the build will be
404 performed using the goals "clean install".
406 maven-version: '{mvn-version}'
409 - lf-infra-gerrit-scm:
410 git-url: '$GIT_URL/$GERRIT_PROJECT'
412 refspec: 'refs/heads/{branch}'
413 jenkins-ssh-credential: opendaylight-jenkins-ssh
414 submodule-recursive: true
415 submodule-timeout: 10
416 choosing-strategy: default
421 jenkins-ssh-credential: opendaylight-jenkins-ssh
425 # force jenkins install of maven version before any shell scripts use it
427 mvn-version: '{mvn-version}'
428 - lf-provide-maven-settings:
429 global-settings-file: '{mvn-global-settings}'
430 settings-file: '{mvn-settings}'
431 - shell: !include-raw-escape:
438 name: 'autorelease-generate-release-notes-{stream}'
440 ######################
441 # Default parameters #
442 ######################
445 gerrit_merge_triggers:
446 - comment-added-contains-event:
447 comment-contains-value: generate-release-notes .+$
449 #####################
450 # Job Configuration #
451 #####################
453 project-type: freestyle
454 node: centos7-builder-2c-8g
455 disabled: '{disable-job}'
458 - lf-infra-properties:
459 build-days-to-keep: 7
462 - lf-infra-parameters:
466 lftools-version: '{lftools-version}'
470 Release to generate release notes for.
471 Eg. Oxygen-SR1, Fluorine-SR2...
473 - lf-infra-gerrit-scm:
474 git-url: '$GIT_URL/$GERRIT_PROJECT'
475 branch: '$GERRIT_BRANCH'
476 refspec: '$GERRIT_REFSPEC'
477 jenkins-ssh-credential: opendaylight-jenkins-ssh
478 submodule-recursive: true
479 submodule-timeout: 10
480 choosing-strategy: default
485 jenkins-ssh-credential: opendaylight-jenkins-ssh
489 server-name: '{gerrit-server-name}'
490 trigger-on: '{obj:gerrit_merge_triggers}'
492 - project-compare-type: ANT
493 project-pattern: '{project}'
495 - branch-compare-type: ANT
496 branch-pattern: '**/{branch}'
500 - autorelease-generate-release-notes
506 name: '{project-name}-validate-autorelease-{stream}'
508 #####################
509 # Default variables #
510 #####################
512 java-version: openjdk8
513 mvn-global-settings: global-settings
514 mvn-settings: autorelease-settings
518 #####################
519 # Job Configuration #
520 #####################
522 project-type: freestyle
523 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
524 # override the build node.
525 node: centos7-builder-2c-8g
527 jdk: '{java-version}'
528 disabled: '{disable-job}'
531 - lf-infra-properties:
532 build-days-to-keep: 7
535 - lf-infra-parameters:
539 lftools-version: '{lftools-version}'
540 - autorelease-release-tag:
541 release-tag: validate
544 default: '{git-url}/releng/autorelease'
545 description: "Autorelease clone URL"
550 credentials-id: 'opendaylight-jenkins-ssh'
560 - opendaylight-infra-wrappers:
561 build-timeout: '{build-timeout}'
564 - gerrit-trigger-patch-submitted:
565 gerrit-server-name: '{gerrit-server-name}'
573 - autorelease-checkout-gerrit-patch
574 - autorelease-compare-projects
575 - lf-jacoco-nojava-workaround
576 - shell: "./scripts/list-project-dependencies.sh"
577 - autorelease-determine-merge-order
578 - autorelease-generate-release-patches
579 # In a perfect world projects should be releasing separately and we consume them
580 # via a project that pulls the release bits from each project from Nexus.
581 # Keep the patches compatible with that ideal, but apply an edit
582 # to enable building in a single maven reactor afterwards.
583 - autorelease-fix-relative-paths
585 maven-version: '{mvn-version}'
586 pom: validate-pom.xml
588 clean install dependency:tree
591 {opendaylight-infra-mvn-opts}
594 settings: '{mvn-settings}'
596 global-settings: '{mvn-global-settings}'
597 global-settings-type: cfp
599 maven-version: '{mvn-version}'
604 {opendaylight-infra-mvn-opts}
606 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
607 settings: '{mvn-settings}'
609 global-settings: '{mvn-global-settings}'
610 global-settings-type: cfp
616 - email-notification:
617 email-recipients: '{email-recipients}'
618 email-prefix: '[autorelease] [{project-name}]'