:sourcedir: ../../../pipelines ifndef::imagesdir[] :imagesdir: ../../images endif::[] = update-version-pipeline This pipeline provides the jobs to increase the version, create a new tag and updates the changed files (version) the repository. It can be extended to push a docker image to a docker registry. .Variables |=== |Name |Description | Default Value |BUMP_VERSION | defines the version bump | "major" |=== == Setup This pipeline should be included as a child-pipeline in your gitlab-ci pipeline. You then can add an individual release job for each kind of version bump. NOTE: You only need the variable `PARENT_PIPELINE_ID` , if you use an https://docs.gitlab.com/ee/ci/yaml/README.html#artifact-downloads-to-child-pipelines[artfact of you parent-pipeline in your child pipeline] In your gitlab-ci.yml include the following .gitlab-ci.yml [source, yaml] ---- stages: - release a.major-image-release: stage: release when: manual only: - master variables: BUMP_VERSION: "major" PARENT_PIPELINE_ID: $CI_PIPELINE_ID trigger: include: release.gitlab-ci.yml strategy: depend b.minor-image-release: stage: release when: manual only: - master variables: BUMP_VERSION: "minor" PARENT_PIPELINE_ID: $CI_PIPELINE_ID trigger: include: release.gitlab-ci.yml strategy: depend c.patch-image-release: stage: release when: manual only: - master variables: BUMP_VERSION: "patch" PARENT_PIPELINE_ID: $CI_PIPELINE_ID trigger: include: release.gitlab-ci.yml strategy: depend ---- Create a child-pipeline file called `release.gitlab-ci.yml` and include the following: .release.gitlab-ci.yml [source, yaml] ---- stages: - set-version - push-tag-and-version - release include: - project: 'gilden/ci/gitlab-ci-templates' ref: 'master' file: - '/pipelines/update-version-pipeline.yml' - 'push-image.yml' # This is optional push-docker-image: stage: release extends: .push-image-kaniko # You only need NEED if you use a artifact from your parent pipeline to build the image needs: - pipeline: $PARENT_PIPELINE_ID #Get artifacts from parent pipeline #https://docs.gitlab.com/ee/ci/yaml/README.html#artifact-downloads-to-child-pipelines job: mvn-build - job: increase-version - job: push-tag-version ---- You pipeline then looks like the following: .Release Pipeline image::Release-Docker-Image-Pipeline.png[] == Pipeline .update-version-pipeline [source, yaml] ---- include::{sourcedir}/update-version-pipeline.yml[] ----