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: 'mvn35'
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.
110 credentials-id: 'opendaylight-jenkins-ssh'
112 refspec: '$GERRIT_REFSPEC'
115 choosing-strategy: default
122 - opendaylight-infra-wrappers:
130 # force jenkins install of maven version before any shell scripts use it
132 mvn-version: '{mvn-version}'
133 - wipe-local-maven-repo
134 - lf-jacoco-nojava-workaround
135 - shell: "./scripts/list-project-dependencies.sh"
136 - autorelease-determine-merge-order
138 autorelease-settings: 'autorelease-settings'
139 global-settings: 'odl-global-settings'
140 - autorelease-generate-release-patches
141 - autorelease-generate-artifact-versions
142 - autorelease-distribute-taglist
143 - distribute-build-url:
144 path: 'integration/distribution/$KARAF_ARTIFACT/src/main/assembly'
145 # In a perfect world projects should be releasing separately and we consume them
146 # via a project that pulls the release bits from each project from Nexus.
147 # Keep the patches compatible with that ideal, but apply an edit
148 # to enable building in a single maven reactor afterwards.
149 - autorelease-fix-relative-paths
151 maven-version: 'mvn35'
156 -Pintegrationtests,repoBuild
157 -Dcheckstyle.skip=true
158 -DaltDeploymentRepository=staging::default::file:hide/from/pom/files/stage
159 {opendaylight-infra-mvn-opts}
161 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
162 settings: 'autorelease-settings'
164 global-settings: 'global-settings'
165 global-settings-type: cfp
166 - autorelease-maven-deploy
167 - autorelease-get-integration-test-variables
168 - autorelease-maven-sources:
169 opendaylight-infra-mvn-opts: '{opendaylight-infra-mvn-opts}'
170 maven-version: 'mvn35'
171 settings: 'autorelease-settings'
172 global-settings: 'global-settings'
173 - autorelease-maven-sources-post-process
179 - opendaylight-infra-notify-status
180 - trigger-parameterized-builds:
181 - project: 'integration-distribution-test-{integration-test}'
182 condition: UNSTABLE_OR_BETTER
183 property-file: variables.jenkins-trigger
184 fail-on-missing: true
185 - project: 'integration-distribution-test-{integration-test}'
187 trigger-with-no-params: true
188 - project: 'packaging-build-rpm-{stream}'
189 condition: UNSTABLE_OR_BETTER
190 predefined-parameters: DOWNLOAD_URL=$BUNDLE_URL
191 property-file: variables.jenkins-trigger
192 fail-on-missing: true
193 - project: 'packaging-build-deb-{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 # Critical component of the OpenDaylight community
205 - shell: echo '#topic cookies'
206 mark-unstable-if-failed: false
210 name: 'autorelease-update-submodules-{stream}'
212 ######################
213 # Default parameters #
214 ######################
218 #####################
219 # Job configuration #
220 #####################
222 project-type: freestyle
223 node: centos7-builder-2c-2g
226 - lf-infra-properties:
227 build-days-to-keep: 7
230 - lf-infra-parameters:
231 project: releng/autorelease
234 refspec: 'refs/heads/{branch}'
235 lftools-version: '{lftools-version}'
238 - lf-infra-gerrit-scm:
239 git-url: '$GIT_URL/$GERRIT_PROJECT'
241 refspec: 'refs/heads/{branch}'
242 jenkins-ssh-credential: opendaylight-jenkins-ssh
243 submodule-recursive: true
244 submodule-timeout: 10
245 choosing-strategy: default
250 jenkins-ssh-credential: opendaylight-jenkins-ssh
253 - timed: '{obj:cron}'
257 # Fetch latest head of branch
259 git checkout $GERRIT_BRANCH
260 git submodule update --remote
262 - lf-infra-push-gerrit-patch:
264 gerrit-user: 'jenkins-$SILO'
265 gerrit-host: 'git.opendaylight.org'
266 gerrit-topic: 'autorelease-update-submodules'
267 gerrit-commit-message: 'Update submodules to latest HEAD of branch'
274 name: autorelease-update-validate-jobs-{stream}
276 ######################
277 # Default parameters #
278 ######################
282 #####################
283 # Job configuration #
284 #####################
286 project-type: freestyle
287 node: centos7-builder-2c-1g
290 - lf-infra-properties:
291 build-days-to-keep: 7
294 - lf-infra-parameters:
295 project: releng/builder
298 lftools-version: '{lftools-version}'
301 - lf-infra-gerrit-scm:
302 git-url: '$GIT_URL/releng/builder'
304 refspec: 'refs/heads/master'
305 jenkins-ssh-credential: opendaylight-jenkins-ssh
306 submodule-recursive: true
307 submodule-timeout: 10
308 choosing-strategy: default
313 server-name: '{gerrit-server-name}'
315 - change-merged-event
316 - comment-added-contains-event:
317 comment-contains-value: remerge$
319 - project-compare-type: ANT
320 project-pattern: '{project}'
322 - branch-compare-type: ANT
323 branch-pattern: '**/{branch}'
331 jenkins-ssh-credential: opendaylight-jenkins-ssh
335 - autorelease-update-project-views
336 - autorelease-update-validate-projects
337 - lf-infra-push-gerrit-patch:
339 gerrit-user: 'jenkins-$SILO'
340 gerrit-host: 'git.opendaylight.org'
341 gerrit-topic: 'autorelease-update-validate-jobs-{stream}'
342 gerrit-commit-message: |
343 'Update validate autorelease projects for {stream}'
344 reviewers-email: 'jenkins-releng@opendaylight.org'
350 name: autorelease-version-bump-{stream}
351 project-type: freestyle
355 - opendaylight-infra-properties:
356 build-days-to-keep: 7
359 - lf-infra-parameters:
360 project: releng/autorelease
363 refspec: 'refs/heads/{branch}'
364 lftools-version: '{lftools-version}'
369 Release that is being version bumped.
370 Eg. Lithium, Beryllium, Boron, Carbon, Carbon-SR1, Carbon-SR2...
375 If BRANCH_CUT is enabled, perform version bump for branch cutting
376 workflow, else perform version bump for simultaneous release
382 If DRY_RUN is enabled modifications are not published to Gerrit
383 and artifacts are not pushed to Nexus. Instead the build will be
384 performed using the goals "clean install".
389 - lf-infra-gerrit-scm:
390 git-url: '$GIT_URL/$GERRIT_PROJECT'
392 refspec: 'refs/heads/{branch}'
393 jenkins-ssh-credential: opendaylight-jenkins-ssh
394 submodule-recursive: true
395 submodule-timeout: 10
396 choosing-strategy: default
401 jenkins-ssh-credential: opendaylight-jenkins-ssh
405 # force jenkins install of maven version before any shell scripts use it
409 settings: autorelease-settings
411 global-settings: global-settings
412 global-settings-type: cfp
414 - shell: !include-raw-escape:
421 name: 'autorelease-generate-release-notes-{stream}'
423 ######################
424 # Default parameters #
425 ######################
427 gerrit_merge_triggers:
428 - comment-added-contains-event:
429 comment-contains-value: generate-release-notes .+$
431 #####################
432 # Job Configuration #
433 #####################
435 project-type: freestyle
436 node: centos7-builder-2c-8g
439 - lf-infra-properties:
440 build-days-to-keep: 7
443 - lf-infra-parameters:
447 lftools-version: '{lftools-version}'
450 description: Release to generate release notes for.
453 - lf-infra-gerrit-scm:
454 git-url: '$GIT_URL/$GERRIT_PROJECT'
455 branch: '$GERRIT_BRANCH'
456 refspec: '$GERRIT_REFSPEC'
457 jenkins-ssh-credential: opendaylight-jenkins-ssh
458 submodule-recursive: true
459 submodule-timeout: 10
460 choosing-strategy: default
465 jenkins-ssh-credential: opendaylight-jenkins-ssh
469 server-name: '{gerrit-server-name}'
470 trigger-on: '{obj:gerrit_merge_triggers}'
472 - project-compare-type: ANT
473 project-pattern: '{project}'
475 - branch-compare-type: ANT
476 branch-pattern: '**/{branch}'
480 - autorelease-generate-release-notes
486 name: '{project-name}-validate-autorelease-{stream}'
492 java-version: openjdk8
494 #####################
495 # Job Configuration #
496 #####################
499 project-type: freestyle
500 # Note: This NEEDS to be hardcoded as projects should NOT be allowed to
501 # override the build node.
502 node: centos7-builder-2c-8g
504 jdk: '{java-version}'
507 - lf-infra-properties:
508 build-days-to-keep: 7
511 - lf-infra-parameters:
515 lftools-version: '{lftools-version}'
516 - autorelease-release-tag:
517 release-tag: validate
520 default: '{git-url}/releng/autorelease'
521 description: "Autorelease clone URL"
526 credentials-id: 'opendaylight-jenkins-ssh'
536 - opendaylight-infra-wrappers:
537 build-timeout: '{build-timeout}'
540 - gerrit-trigger-patch-submitted:
541 gerrit-server-name: '{gerrit-server-name}'
549 - autorelease-checkout-gerrit-patch
550 - autorelease-compare-projects
551 - lf-jacoco-nojava-workaround
552 - shell: "./scripts/list-project-dependencies.sh"
553 - autorelease-determine-merge-order
554 - autorelease-generate-release-patches
555 # In a perfect world projects should be releasing separately and we consume them
556 # via a project that pulls the release bits from each project from Nexus.
557 # Keep the patches compatible with that ideal, but apply an edit
558 # to enable building in a single maven reactor afterwards.
559 - autorelease-fix-relative-paths
562 pom: validate-pom.xml
564 clean install dependency:tree
567 {opendaylight-infra-mvn-opts}
570 settings: autorelease-settings
572 global-settings: global-settings
573 global-settings-type: cfp
580 {opendaylight-infra-mvn-opts}
582 - '-Xmx8g -XX:MaxPermSize=1024m -Dmaven.compile.fork=true'
583 settings: autorelease-settings
585 global-settings: global-settings
586 global-settings-type: cfp
592 - email-notification:
593 email-recipients: '{email-recipients}'
594 email-prefix: '[autorelease] [{project-name}]'