跳转到主要内容

CI版本管理工具

项目描述

CI版本管理工具

project-version

为CI构建提供版本环境变量。

示例输出
$ 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

示例应用在.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

解析包含语义版本的环境变量到主要/次要版本。

示例输出
$ 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

示例应用在.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.md

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

ci_version_tools-0.1.2.tar.gz (6.0 kB 查看散列)

上传时间:

构建分发

ci_version_tools-0.1.2-py3-none-any.whl (8.3 kB 查看散列)

上传时间: Python 3

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面