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-settings: autorelease-settings
74 project-type: freestyle
79 - lf-infra-properties:
80 build-days-to-keep: 30
84 maven-version: '{mvn-version}'
85 - lf-infra-parameters:
89 lftools-version: '{lftools-version}'
90 - distribution-karaf-version:
91 karaf-version: '{karaf-version}'
92 - autorelease-release-tag:
93 release-tag: '{stream}'
96 default: '{extra-mvn-opts}'
98 Additional optional Maven Options to pass to the Maven Goals
102 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
103 --fail-never # NEVER fail the build, regardless of project result
104 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
106 name: ARCHIVE_ARTIFACTS
107 default: '{archive-artifacts}'
108 description: Artifacts to archive to the logs server.
110 name: STAGING_PROFILE_ID
111 default: '{staging-profile-id}'
112 description: Nexus staging profile ID.
116 credentials-id: 'opendaylight-jenkins-ssh'
118 refspec: '$GERRIT_REFSPEC'
121 choosing-strategy: default
128 - opendaylight-infra-wrappers:
136 # force jenkins install of maven version before any shell scripts use it
138 mvn-version: '{mvn-version}'
139 - wipe-local-maven-repo
140 - lf-jacoco-nojava-workaround
141 - shell: "./scripts/list-project-dependencies.sh"
142 - autorelease-determine-merge-order
143 - lf-provide-maven-settings:
144 global-settings-file: '{mvn-global-settings}'
145 settings-file: '{mvn-settings}'
146 - lf-infra-create-netrc:
147 server-id: '{mvn-staging-id}'
148 - autorelease-generate-release-patches
149 - autorelease-generate-artifact-versions
150 - lf-update-java-alternatives:
151 java-version: '{java-version}'
152 - autorelease-distribute-taglist
153 - distribute-build-url:
154 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
155 # In a perfect world projects should be releasing separately and we consume them
156 # via a project that pulls the release bits from each project from Nexus.
157 # Keep the patches compatible with that ideal, but apply an edit
158 # to enable building in a single maven reactor afterwards.
159 - autorelease-fix-relative-paths
161 maven-version: '{mvn-version}'
166 -Pintegrationtests,repoBuild
167 -Dcheckstyle.skip=true
168 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
169 {opendaylight-infra-mvn-opts}
171 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
172 settings: '{mvn-settings}'
174 global-settings: '{mvn-global-settings}'
175 global-settings-type: cfp
177 - autorelease-get-integration-test-variables
178 - autorelease-maven-sources:
179 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
180 maven-version: '{mvn-version}'
181 settings: '{mvn-settings}'
182 global-settings: '{mvn-global-settings}'
188 - opendaylight-infra-notify-status
189 - trigger-parameterized-builds:
190 - project: 'integration-distribution-test-{integration-test}'
192 predefined-parameters: BUNDLE_URL=autorelease
193 - project: 'packaging-build-rpm-{stream}'
194 condition: UNSTABLE_OR_BETTER
195 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
196 property-file: variables.jenkins-trigger
197 fail-on-missing: true
198 - project: 'packaging-build-deb-{stream}'
199 condition: UNSTABLE_OR_BETTER
200 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
201 property-file: variables.jenkins-trigger
202 fail-on-missing: true
203 # Critical component of the OpenDaylight community
210 - shell: echo '#topic cookies'
211 mark-unstable-if-failed: false
215 name: 'autorelease-update-submodules-{stream}'
217 ######################
218 # Default parameters #
219 ######################
223 #####################
224 # Job configuration #
225 #####################
227 project-type: freestyle
228 node: centos7-builder-2c-2g
231 - lf-infra-properties:
232 build-days-to-keep: 7
235 - lf-infra-parameters:
236 project: releng/autorelease
239 refspec: 'refs/heads/{branch}'
240 lftools-version: '{lftools-version}'
243 - lf-infra-gerrit-scm:
244 git-url: '$GIT_URL/$GERRIT_PROJECT'
246 refspec: 'refs/heads/{branch}'
247 jenkins-ssh-credential: opendaylight-jenkins-ssh
248 submodule-recursive: true
249 submodule-timeout: 10
250 choosing-strategy: default
255 jenkins-ssh-credential: opendaylight-jenkins-ssh
258 - timed: '{obj:cron}'
262 # Fetch latest head of branch
264 git checkout $GERRIT_BRANCH
265 git submodule update --remote
267 - lf-infra-push-gerrit-patch:
269 gerrit-user: 'jenkins-$SILO'
270 gerrit-host: 'git.opendaylight.org'
271 gerrit-topic: 'autorelease-update-submodules'
272 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
279 name: autorelease-update-validate-jobs-{stream}
281 ######################
282 # Default parameters #
283 ######################
287 #####################
288 # Job configuration #
289 #####################
291 project-type: freestyle
292 node: centos7-builder-2c-1g
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
365 #####################
366 # Job configuration #
367 #####################
369 project-type: freestyle
373 - opendaylight-infra-properties:
374 build-days-to-keep: 7
377 - lf-infra-parameters:
378 project: releng/autorelease
381 refspec: 'refs/heads/{branch}'
382 lftools-version: '{lftools-version}'
387 Release that is being version bumped.
388 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
393 If BRANCH_CUT is enabled, perform version bump for branch cutting
394 workflow, else perform version bump for simultaneous release
400 If DRY_RUN is enabled modifications are not published to Gerrit
401 and artifacts are not pushed to Nexus. Instead the build will be
402 performed using the goals "clean install".
404 maven-version: '{mvn-version}'
407 - lf-infra-gerrit-scm:
408 git-url: '$GIT_URL/$GERRIT_PROJECT'
410 refspec: 'refs/heads/{branch}'
411 jenkins-ssh-credential: opendaylight-jenkins-ssh
412 submodule-recursive: true
413 submodule-timeout: 10
414 choosing-strategy: default
419 jenkins-ssh-credential: opendaylight-jenkins-ssh
423 # force jenkins install of maven version before any shell scripts use it
425 mvn-version: '{mvn-version}'
426 - lf-provide-maven-settings:
427 global-settings-file: '{mvn-global-settings}'
428 settings-file: '{mvn-settings}'
429 - shell: !include-raw-escape:
436 name: 'autorelease-generate-release-notes-{stream}'
438 ######################
439 # Default parameters #
440 ######################
442 gerrit_merge_triggers:
443 - comment-added-contains-event:
444 comment-contains-value: generate-release-notes .+$
446 #####################
447 # Job Configuration #
448 #####################
450 project-type: freestyle
451 node: centos7-builder-2c-8g
454 - lf-infra-properties:
455 build-days-to-keep: 7
458 - lf-infra-parameters:
462 lftools-version: '{lftools-version}'
466 Release to generate release notes for.
467 Eg. Oxygen-SR1, Fluorine-SR2...
469 - lf-infra-gerrit-scm:
470 git-url: '$GIT_URL/$GERRIT_PROJECT'
471 branch: '$GERRIT_BRANCH'
472 refspec: '$GERRIT_REFSPEC'
473 jenkins-ssh-credential: opendaylight-jenkins-ssh
474 submodule-recursive: true
475 submodule-timeout: 10
476 choosing-strategy: default
481 jenkins-ssh-credential: opendaylight-jenkins-ssh
485 server-name: '{gerrit-server-name}'
486 trigger-on: '{obj:gerrit_merge_triggers}'
488 - project-compare-type: ANT
489 project-pattern: '{project}'
491 - branch-compare-type: ANT
492 branch-pattern: '**/{branch}'
496 - autorelease-generate-release-notes
502 name: '{project-name}-validate-autorelease-{stream}'
504 #####################
505 # Default variables #
506 #####################
508 java-version: openjdk8
509 mvn-global-settings: global-settings
510 mvn-settings: autorelease-settings
513 #####################
514 # Job Configuration #
515 #####################
518 project-type: freestyle
519 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
520 # override the build node.
521 node: centos7-builder-2c-8g
523 jdk: '{java-version}'
526 - lf-infra-properties:
527 build-days-to-keep: 7
530 - lf-infra-parameters:
534 lftools-version: '{lftools-version}'
535 - autorelease-release-tag:
536 release-tag: validate
539 default: '{git-url}/releng/autorelease'
540 description: "Autorelease clone URL"
545 credentials-id: 'opendaylight-jenkins-ssh'
555 - opendaylight-infra-wrappers:
556 build-timeout: '{build-timeout}'
559 - gerrit-trigger-patch-submitted:
560 gerrit-server-name: '{gerrit-server-name}'
568 - autorelease-checkout-gerrit-patch
569 - autorelease-compare-projects
570 - lf-jacoco-nojava-workaround
571 - shell: "./scripts/list-project-dependencies.sh"
572 - autorelease-determine-merge-order
573 - autorelease-generate-release-patches
574 # In a perfect world projects should be releasing separately and we consume them
575 # via a project that pulls the release bits from each project from Nexus.
576 # Keep the patches compatible with that ideal, but apply an edit
577 # to enable building in a single maven reactor afterwards.
578 - autorelease-fix-relative-paths
580 maven-version: '{mvn-version}'
581 pom: validate-pom.xml
583 clean install dependency:tree
586 {opendaylight-infra-mvn-opts}
589 settings: '{mvn-settings}'
591 global-settings: '{mvn-global-settings}'
592 global-settings-type: cfp
594 maven-version: '{mvn-version}'
599 {opendaylight-infra-mvn-opts}
601 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
602 settings: '{mvn-settings}'
604 global-settings: '{mvn-global-settings}'
605 global-settings-type: cfp
611 - email-notification:
612 email-recipients: '{email-recipients}'
613 email-prefix: '[autorelease] [{project-name}]'