#!/usr/bin/env bash # We only want to tag in git when the version changes # Next version is based on versioned version.txt # using git describe requires a tag at the begging of development, not at the end TRUNK_BRANCH="dev" CD_BASE_VERSION=$(cat version.txt) CD_LAST_RELEASE_TAG=$(git describe --abbrev=0) CD_PATCH=$(git rev-list $CD_LAST_RELEASE_TAG..HEAD --count) CD_QUALIFIER=$(git rev-parse --short HEAD) CD_CURRENT_VERSION="${CD_BASE_VERSION}.${CD_PATCH}" CD_CURRENT_VERSION_QUALIFIED="${CD_BASE_VERSION}.${CD_PATCH}-${CD_QUALIFIER}" CD_CURRENT_MAJOR_TAG=$(echo "${CD_BASE_VERSION}" | cut -d'.' -f1) export CD_BASE_VERSION export CD_PATCH export CD_QUALIFIER export CD_LAST_RELEASE_TAG export CD_CURRENT_VERSION export CD_CURRENT_VERSION_QUALIFIED export CD_CURRENT_MAJOR_TAG echo "Example versioning" echo "Trunk Branch: ${TRUNK_BRANCH}" echo "Java Development Version: ${CD_BASE_VERSION}.0-SNAPSHOT" echo "NPM Development Version: ${CD_BASE_VERSION}.alpha.0" echo "Current Release Version: ${CD_CURRENT_VERSION}" echo "Current qualified Release Version: ${CD_CURRENT_VERSION_QUALIFIED}" echo "BASE TAG: ${CD_BASE_VERSION}" echo "Current Major Release Tag: ${CD_CURRENT_MAJOR_TAG}" echo "Current Release Tag (normally get from pipeline CI_COMMIT_TAG): ${CD_RELEASE_TAG}" echo "CD_BASE_VERSION=${CD_BASE_VERSION}" > version-lock.sh echo "CD_PATCH=${CD_PATCH}" >> version-lock.sh echo "CD_QUALIFIER=${CD_QUALIFIER}" >> version-lock.sh echo "CD_LAST_RELEASE_TAG=${CD_LAST_RELEASE_TAG}" >> version-lock.sh echo "CD_CURRENT_VERSION=${CD_CURRENT_VERSION}" >> version-lock.sh echo "CD_CURRENT_VERSION_QUALIFIED=${CD_CURRENT_VERSION_QUALIFIED}" >> version-lock.sh echo "CD_CURRENT_MAJOR_TAG=${CD_CURRENT_MAJOR_TAG}" >> version-lock.sh