Versioning tools for CI
Project description
Versioning tools for CI
project-version
Provides version environment variables to CI builds.
Example output
$ cat VERSION
0.2.7
$ project-version --version-source-file VERSION --dev-nr 12345 env-vars
VERSION_SEMVER=0.2.7-dev.12345
VERSION_SEMVER_MAJOR=0
VERSION_SEMVER_MINOR=0.2
VERSION_IS_PRE_RELEASE=1
$ project-version --version-source-file VERSION --dev-nr 12345 --git-tag v0.2.7 env-vars
VERSION_SEMVER=0.2.7
VERSION_SEMVER_MAJOR=0
VERSION_SEMVER_MINOR=0.2
VERSION_IS_RELEASE=1
VERSION_IS_LATEST_RELEASE=1
$ git checkout v0.2.6
Note: switching to 'v0.2.6'.
$ cat VERSION
0.2.6
$ project-version --version-source-file VERSION --dev-nr 12345 --git-tag v0.2.6 env-vars
VERSION_SEMVER=0.2.6
VERSION_SEMVER_MAJOR=0
VERSION_SEMVER_MINOR=0.2
VERSION_IS_RELEASE=1
$ project-version --version-source-file VERSION --dev-nr 12345 --git-tag v9.9.9 env-vars
ERROR:ci_version_tools.project:Version 0.2.7 in the version source does not match the version 9.9.9 in the Git tag
$ echo $?
1
Example application in .gitlab-cy.yml
:
version:
image: docker.io/alikov/ci-version-tools:0.1.0
stage: .pre
script:
- project-version
--version-source-file ./VERSION
--git-version-tag-prefix v
--dev-identifier dev
--dev-nr "${CI_PIPELINE_IID:-0}"
${CI_COMMIT_TAG:+--git-tag "$CI_COMMIT_TAG"}
env-vars | tee version.env
artifacts:
reports:
dotenv:
- version.env
.build-image:
stage: build
image: $BUILDAH_CI_IMAGE
script:
- IMAGE="${CI_REGISTRY_IMAGE}:${VERSION_SEMVER}"
- buildah build -t "$IMAGE" .
- buildah push "$IMAGE"
- if [ -n "${VERSION_IS_RELEASE:-}" ]; then
buildah push "$IMAGE" "${CI_REGISTRY_IMAGE}:${VERSION_SEMVER_MAJOR}";
buildah push "$IMAGE" "${CI_REGISTRY_IMAGE}:${VERSION_SEMVER_MINOR}";
fi
- if [ -n "${VERSION_IS_LATEST_RELEASE:-}" ]; then
buildah push "$IMAGE" "${CI_REGISTRY_IMAGE}:latest";
fi
needs:
- version
version-env-vars
Parses environment variables containing semantic versions into major/minor variants.
Example output
$ export ALPINE_VERSION=3.20.2
$ export TERRAFORM_VERSION=1.9.3
$ version-env-vars parse ALPINE_VERSION TERRAFORM_VERSION
ALPINE_VERSION_MAJOR=3
ALPINE_VERSION_MINOR=3.20
TERRAFORM_VERSION_MAJOR=1
TERRAFORM_VERSION_MINOR=1.9
Example application in .gitlab-cy.yml
:
variables:
ALPINE_VERSION: "3.20.2"
TERRAFORM_VERSION: "1.9.3"
tool-versions:
image: docker.io/alikov/ci-version-tools:0.1.0
stage: .pre
script:
- version-env-vars parse ALPINE_VERSION TERRAFORM_VERSION | tee tool-versions.env
artifacts:
reports:
dotenv:
- tool-versions.env
.build-image:
stage: build
image: $BUILDAH_CI_IMAGE
script:
- IMAGE="${CI_REGISTRY_IMAGE}:${VERSION_SEMVER}"
- buildah build
--build-arg "BASE_IMAGE=alpine:${ALPINE_VERSION}"
--build-arg "DOWNLOAD_TERRAFORM_VERSION=${TERRAFORM_VERSION}"
-t "$IMAGE"
.
- buildah inspect "$IMAGE"
- buildah push "$IMAGE"
- if [ -n "${VERSION_IS_RELEASE:-}" ]; then
buildah push "$IMAGE" "${CI_REGISTRY_IMAGE}:alpine-${ALPINE_VERSION_MINOR}";
buildah push "$IMAGE" "${CI_REGISTRY_IMAGE}:terraform-${TERRAFORM_VERSION_MINOR}";
fi
needs:
- version
- tool-versions
Developing
See DEVELOPING.md for local development setup instructions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ci_version_tools-0.1.2.tar.gz
.
File metadata
- Download URL: ci_version_tools-0.1.2.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.6.31-linuxkit
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c76f937e7e1bce60b2d0d53da6b5b7068f497a37c11f1e2be197e79e593c71aa |
|
MD5 | b90e0dfe50363dbb0ce689dc2b5b29ca |
|
BLAKE2b-256 | 0c8daf09a7ff93ad1999612ce82ff1d1da0449d60aea7dea488ab39ded147a06 |
File details
Details for the file ci_version_tools-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: ci_version_tools-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.6.31-linuxkit
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 415ac21d4b4e96716bbb1f7982923582dfd057b33b31d453a0327e764b436e7d |
|
MD5 | c8149c61522a0e5ea3028bbb5236879c |
|
BLAKE2b-256 | b1b77664c6338326824a206eb2f18d08a2ac602c0d956da1ed8bca1323e60495 |