首页 文章

构建docker镜像,包括带bitbucket管道的版本

提问于
浏览
0

我对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_name和version_number的最佳方法是什么?到目前为止,我们运行了ruby脚本,允许用户输入版本编号,但bitbucket管道不是交互式的 .

2 回答

  • 1

    假设 alpha_0.1 等是标记,并且如果标记了提交,则管道运行,您可以获取当前提交的标记,如下所示:

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

    然后,您可以使用自己喜欢的语言或命令行工具从标记中创建 <version_name><version_number> . export 标签作为shell变量可以在脚本中使用它 .

  • 0

    这是我拥有的 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 ...

相关问题