When releasing CCSDK artifact versions, there are some special considerations to bear in mind:
- There is a known issue in the Sonatype Nexus staging feature such that it only indexes the FIRST version of a zip or tarball that is created - not the most recent. For example, suppose that the current version is 0.2.3-SNAPSHOT, and thus the version built if you do a "release" build (either due to daily builds or due to posting the comment "please release") is 0.2.3. If you request version 0.2.3 of an installation zip stored in staging, it will not get you the NEWEST 0.2.3, but rather will get the OLDEST 0.2.3. To work around this, we add the suffix "-STAGING" to the release version during development, and only remove it when creating a release build. This guarantees that the release version will be consistent, since we will create only one release version.
- The CCSDK parent poms contain properties that specify the current version of each CCSDK sli repository. Unfortunately, this means that if any CCSDK repository has to be released, the CCSDK parent pom and all 4 CCSDK sli repositories need to be released - meaning their versions also have to be rolled.
The following is the procedure that must be followed to release new versions of CCSDK artifacts:
- Create release version of ccsdk/parent:
- Update version.properties to remove -STAGING tag. Update ccsdk versions within parent poms to the release version. Update single-feature-parent to disable SingleFeatureTest by setting property skip.karaf.featureTest to true. Submit change and, after merge build completes, do a release build by posting "please release" as comment.
- Update ccsdk versions within parent poms back to previous snapshot value. NOTE: this step is needed to avoid breaking builds between this step and completion of step 6 below.
- Mail helpdesk@onap.org to create a ticket requesting release of new CCSDK parent poms. In ticket, be sure to include link to Jenkins release build triggered by step 1a. WAIT for LF IT to create release version of parent poms before proceeding to next step
- Create release version of ccsdk/sli/core:
- Update version.properties to remove -STAGING tag and update pom.xmls to use released version of parent poms just created. Submit change and, after merge build completes, do a release build by posting "please release" as comment.
- Roll to next snapshot version. Restore the -STAGING tag to version.properties, and update versions of parent poms to the next snapshot version.
- Mail helpdesk@onap.org to create a ticket requesting release of new ccsdk/sli/core. In ticket, be sure to include link to Jenkins release build triggered by step 3a. WAIT for LF IT to create release version before proceeding to next step.
- Create release versions of ccsdk/sli/adaptors, ccsdk/sli/northbound, ccsdk/sli/plugins, and ccsdk/features. For each repo:
- Update pom.xmls to use newly created release version of parent pom and remove -STAGING tag from version.properties. Do a release build.
- Roll to next snapshot version. Restore the -STAGING tag to version.properties, and update versions of parent poms to the next snapshot version.
- Mail helpdesk@onap.org to create a ticket requesting release of new ccsdk/sli/adaptors, ccsdk/sli/northbound, ccsdk/sli/plugins and ccsdk/features. In ticket, be sure to include link to Jenkins release builds triggered by step 5a. WAIT for LF IT to create release versions before proceeding to next step.
- Roll ccsdk/parent to next snapshot. Note: the next 2 MUST be separate merge requests
- Update ccsdk versions within parent poms to the release version just created. NOTE: this step is needed, since once snapshot is rolled to next snapshot version, previous snapshot will be aged out.
- Roll to next snapshot version
- Create release version of ccsdk/apps (micro services):
- Update pom.xmls to use newly created release version of parent pom and remove -STAGING tag from version.properties. Do a release build.
- Roll to next snapshot version. Restore the -STAGING tag to version.properties, and update versions of parent poms to the next snapshot version.
- Mail helpdesk@onap.org to create a ticket requesting release of new ccsdk/apps. In ticket, be sure to include link to Jenkins release build triggered by step 7a. In this case, it is NOT necessary to wait before proceeding to next step.
- Create release version of ccsdk/distribution (docker containers):
- Update pom.xmls to use newly created release version of parent pom and remove -STAGING tag from version.properties. Do a release build.
- Roll to next snapshot version. Restore the -STAGING tag to version.properties, and update versions of parent poms to the next snapshot version.
- Mail helpdesk@onap.org to create a ticket requesting release of new ccsdk/distribution. In ticket, be sure to include link to Jenkins release build triggered by step 7a.