...
Process works, feel free to use it.
FIRST SUCCESSFUL RELEASE EXAMPLE CAN BE VIEWED HERE:
...
- The tech team needs to make sure their committer list is up to date as these will be the people approved to make releases.
- The reason behind this, only committers can +2 and merge changes in their tech team repo.
- The releases merge job will be triggered by files merged in the repo and will execute a release.
- Tech team needs to add "{project-name}-gerrit-release-jobs" to their ci-management yaml files.
- This group introduces "gerrit-release-verify" and "gerrit-release-merge"
- Teams that have added these jobs for Nexus2 releases, will need to use a docker node if they want to use docker self releases. For example: https://gerrit.onap.org/r/#/c/ci-management/+/95775/
- Once a release candidate is build using gerrit-maven-docker-stage, a new file must be added to your project repo describing the release and referring to the gerrit-maven-docker-stage log:
- Please create 1 releases file per Gerrit repo. The job will throw an error if found more than 1 release files: https://github.com/lfit/releng-global-jjb/blob/master/shell/release-job.sh#L49
- This file needs to be located in the root repo under a "releases" folder.
- An example can be viewed here: https://gerrit.onap.org/r/#/c/clamp/+/95770/
- Name of the file should match the semantic version of the release being published. (For example: releases/1.0.0-container.yaml) This is not enforced, but is good to follow a convention across repos.
- In reality, the file can be named whatever but we want to keep consistency and recommend teams to use #.#.#-container.yaml (Docker) and #.#.#.yaml (Maven)
- distribution_type: 'container'
- container_release_tag: '#.#.#' (Release semantic version, release version that will appear in the docker.releases repo)
- project: 'project-name' (Project name, for example 'ccsdk-parent')
- log-dir: 'pointer_to_docker_stage_job/build_number/' (for example: 'ccsdk-parent-maven-docker-stage-master/2/')
- ref: 'commit that the team would like to tag' (If the repo was already tagged when maven releases was processed, no re-tagging will happen. This job just tags using the version number that is being released, it does not tag official ONAP releases like 5.0.0-ONAP)
- containers: list of image names and tags to be pulled for the releases. For example:
- Name of the file should match the semantic version of the release being published. (For example: releases/1.0.0-container.yaml) This is not enforced, but is good to follow a convention across repos.
- name: test-backend version: 1.0.0-20190806T184921Z - name: test-frontend version: 1.0.0-20190806T184921Z
- This file will trigger "{project-name}-release-verify-{stream}"
- This job can also be triggered using the comment "recheck|reverify"
- The verify job will make sure the release file contains the needed information and that the candidate exists.
- Tech team needs to +2 this new change and merge it. Please do not override any -1 Verify from Jenkins.
- The merge will trigger "{project-name}-release-merge-{stream}"
- This job can also be triggered using the comment "remerge"
- This job will push the release and tag the repo.
After your self release ...
...
Once your self release file was merged and processed by "gerrit-release-verify" and "gerrit-release-merge"...
- DO NOT attempt to revert files in releases/ → Even if the release was not needed, we need to keep track on what happened in that repo also the tag needs to be kept in the repo
- DO NOT attempt to re-tag the repo with the same version → this will fail as the gerrit-release-merge job already tagged it
- DO NOT modify releases files → Once a releases file is merged, it is immediately processed. If the team needs to release a new build number, please bump your versions and generate another docker-stage-release
- DO NOT re-use the same stage-release build number for multiple releases files → Once an autorelease package is pushed, it is closed and it cannot be re-released.
- MAKE SURE your project is properly calling the Docker profile in pom while running docker-stage-release. If there are no docker images pushed, the job will fail.
- DO NOT cherry-pick release files across branches. Duplicated release files will make the verify and merge job fail as those release were already processed.
- Releases from master should be created in master, releases from sub-branches like "el-alto" should be created in "el-alto"