构建 docker 映像,包括具有位桶管道的版本



我是Bitbucket Pipelines的新手,遇到了一个问题。我正在创建一个管道,将新版本的 Spring Boot 应用程序(在 Kubernetes 集群中运行(部署到我们的测试环境中。我遇到的问题是我们的 docker 构建的版本控制。我们的版本控制设置如下:

alpha_0.1
alpha_0.2
beta_1.0
gamma_1.0
gamma_1.1

因此,每个次要更新/错误修复都会将内部版本号增加 0.1,而主要更新会将版本增加 1.0 + 每个主要更新都会获得一个新版本名称。

目前我有下一个设置:

image: java:8
options:
  docker: true
branches:
  master:
    - step:
        caches:
          - gradle
        script:
          - ./gradlew test
          - ./gradlew build
          - docker build -t <application_name>/<version_name>_<version_number>

bitbucket 管道中包含version_nameversion_number的最佳方法是什么?到目前为止,我们运行了 ruby 脚本,该脚本允许用户输入版本编号,但 bitbucket 管道不是交互式的。

假设alpha_0.1等是标签,并且如果标记了提交,管道就会运行,您可以像这样获取当前提交的标签:

TAG=$(git tag --contains $BITBUCKET_COMMIT)

然后,您可以使用自己喜欢的语言或命令行工具从您获得的标签创建<version_name><version_number>。将标记export为 shell 变量以便能够在脚本中使用它可能是有意义的。

这是我

拥有的shippable.yml文件之一,请随意将其改编为Atlassianpipelines.ymlGradle

language: java
jdk:
  - oraclejdk8
branches:
  only:
    - master
...
build:
  ci:
    # Generates build number
    - BUILD_NUMBER=`git log --oneline | wc -l`
    - echo "Build number':' ${BUILD_NUMBER}"
    # Sets version
    - mvn versions:set -DnewVersion=1.0.${BUILD_NUMBER}
    # Builds and pushes to Docker Hub
    - mvn package
    - docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_PASSWD} --email ${DOCKERHUB_EMAIL} https://index.docker.io/v1/
    - mvn -X docker:build -Dpush.image=true

我的项目版本(pom.xml(设置为 0-SNAPSHOPT

这也使用 SpotifyMaven 插件来构建 Docker 镜像而不是docker build -t ...

最新更新