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}'
58 ######################
59 # Default parameters #
60 ######################
62 build-node: '{build-node}'
64 java-version: openjdk8
72 project-type: freestyle
77 - lf-infra-properties:
78 build-days-to-keep: 30
82 maven-version: '{mvn-version}'
83 - lf-infra-parameters:
87 lftools-version: '{lftools-version}'
88 - distribution-karaf-version:
89 karaf-version: '{karaf-version}'
90 - autorelease-release-tag:
91 release-tag: '{stream}'
94 default: '{extra-mvn-opts}'
96 Additional optional Maven Options to pass to the Maven Goals
100 -Dskip.karaf.featureTest=true # To disable karaf SingleFeatureTests
101 --fail-never # NEVER fail the build, regardless of project result
102 --fail-at-end # Only fail the build afterwards; allow all non-impacted builds to continue
104 name: ARCHIVE_ARTIFACTS
105 default: '{archive-artifacts}'
106 description: Artifacts to archive to the logs server.
108 name: STAGING_PROFILE_ID
109 default: '{staging-profile-id}'
110 description: Nexus staging profile ID.
114 credentials-id: 'opendaylight-jenkins-ssh'
116 refspec: '$GERRIT_REFSPEC'
119 choosing-strategy: default
126 - opendaylight-infra-wrappers:
134 # force jenkins install of maven version before any shell scripts use it
136 mvn-version: '{mvn-version}'
137 - wipe-local-maven-repo
138 - lf-jacoco-nojava-workaround
139 - shell: "./scripts/list-project-dependencies.sh"
140 - autorelease-determine-merge-order
142 autorelease-settings: 'autorelease-settings'
143 global-settings: 'odl-global-settings'
144 - lf-infra-create-netrc:
145 server-id: '{mvn-staging-id}'
146 - autorelease-generate-release-patches
147 - autorelease-generate-artifact-versions
148 - autorelease-distribute-taglist
149 - distribute-build-url:
150 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
151 # In a perfect world projects should be releasing separately and we consume them
152 # via a project that pulls the release bits from each project from Nexus.
153 # Keep the patches compatible with that ideal, but apply an edit
154 # to enable building in a single maven reactor afterwards.
155 - autorelease-fix-relative-paths
157 maven-version: '{mvn-version}'
162 -Pintegrationtests,repoBuild
163 -Dcheckstyle.skip=true
164 -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo
165 {opendaylight-infra-mvn-opts}
167 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
168 settings: 'autorelease-settings'
170 global-settings: 'global-settings'
171 global-settings-type: cfp
173 - autorelease-get-integration-test-variables
174 - autorelease-maven-sources:
175 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
176 maven-version: '{mvn-version}'
177 settings: 'autorelease-settings'
178 global-settings: 'global-settings'
184 - opendaylight-infra-notify-status
185 - trigger-parameterized-builds:
186 - project: 'integration-distribution-test-{integration-test}'
187 condition: UNSTABLE_OR_BETTER
188 property-file: variables.jenkins-trigger
189 fail-on-missing: true
190 - project: 'integration-distribution-test-{integration-test}'
192 trigger-with-no-params: true
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}
356 project-type: freestyle
360 - opendaylight-infra-properties:
361 build-days-to-keep: 7
364 - lf-infra-parameters:
365 project: releng/autorelease
368 refspec: 'refs/heads/{branch}'
369 lftools-version: '{lftools-version}'
374 Release that is being version bumped.
375 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
380 If BRANCH_CUT is enabled, perform version bump for branch cutting
381 workflow, else perform version bump for simultaneous release
387 If DRY_RUN is enabled modifications are not published to Gerrit
388 and artifacts are not pushed to Nexus. Instead the build will be
389 performed using the goals "clean install".
394 - lf-infra-gerrit-scm:
395 git-url: '$GIT_URL/$GERRIT_PROJECT'
397 refspec: 'refs/heads/{branch}'
398 jenkins-ssh-credential: opendaylight-jenkins-ssh
399 submodule-recursive: true
400 submodule-timeout: 10
401 choosing-strategy: default
406 jenkins-ssh-credential: opendaylight-jenkins-ssh
410 # force jenkins install of maven version before any shell scripts use it
414 settings: autorelease-settings
416 global-settings: global-settings
417 global-settings-type: cfp
419 - shell: !include-raw-escape:
426 name: 'autorelease-generate-release-notes-{stream}'
428 ######################
429 # Default parameters #
430 ######################
432 gerrit_merge_triggers:
433 - comment-added-contains-event:
434 comment-contains-value: generate-release-notes .+$
436 #####################
437 # Job Configuration #
438 #####################
440 project-type: freestyle
441 node: centos7-builder-2c-8g
444 - lf-infra-properties:
445 build-days-to-keep: 7
448 - lf-infra-parameters:
452 lftools-version: '{lftools-version}'
455 description: Release to generate release notes for.
458 - lf-infra-gerrit-scm:
459 git-url: '$GIT_URL/$GERRIT_PROJECT'
460 branch: '$GERRIT_BRANCH'
461 refspec: '$GERRIT_REFSPEC'
462 jenkins-ssh-credential: opendaylight-jenkins-ssh
463 submodule-recursive: true
464 submodule-timeout: 10
465 choosing-strategy: default
470 jenkins-ssh-credential: opendaylight-jenkins-ssh
474 server-name: '{gerrit-server-name}'
475 trigger-on: '{obj:gerrit_merge_triggers}'
477 - project-compare-type: ANT
478 project-pattern: '{project}'
480 - branch-compare-type: ANT
481 branch-pattern: '**/{branch}'
485 - autorelease-generate-release-notes
491 name: '{project-name}-validate-autorelease-{stream}'
497 java-version: openjdk8
499 #####################
500 # Job Configuration #
501 #####################
504 project-type: freestyle
505 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
506 # override the build node.
507 node: centos7-builder-2c-8g
509 jdk: '{java-version}'
512 - lf-infra-properties:
513 build-days-to-keep: 7
516 - lf-infra-parameters:
520 lftools-version: '{lftools-version}'
521 - autorelease-release-tag:
522 release-tag: validate
525 default: '{git-url}/releng/autorelease'
526 description: "Autorelease clone URL"
531 credentials-id: 'opendaylight-jenkins-ssh'
541 - opendaylight-infra-wrappers:
542 build-timeout: '{build-timeout}'
545 - gerrit-trigger-patch-submitted:
546 gerrit-server-name: '{gerrit-server-name}'
554 - autorelease-checkout-gerrit-patch
555 - autorelease-compare-projects
556 - lf-jacoco-nojava-workaround
557 - shell: "./scripts/list-project-dependencies.sh"
558 - autorelease-determine-merge-order
559 - autorelease-generate-release-patches
560 # In a perfect world projects should be releasing separately and we consume them
561 # via a project that pulls the release bits from each project from Nexus.
562 # Keep the patches compatible with that ideal, but apply an edit
563 # to enable building in a single maven reactor afterwards.
564 - autorelease-fix-relative-paths
567 pom: validate-pom.xml
569 clean install dependency:tree
572 {opendaylight-infra-mvn-opts}
575 settings: autorelease-settings
577 global-settings: global-settings
578 global-settings-type: cfp
585 {opendaylight-infra-mvn-opts}
587 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
588 settings: autorelease-settings
590 global-settings: global-settings
591 global-settings-type: cfp
597 - email-notification:
598 email-recipients: '{email-recipients}'
599 email-prefix: '[autorelease] [{project-name}]'