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

时间:2018-02-01 12:46:57

标签: continuous-integration bitbucket bitbucket-pipelines docker-build

我对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 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

这是我拥有的shippable.yml个文件之一,可随意将其改编为Atlassian的{​​{1}}和pipelines.yml

Gradle

我的项目版本(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的{​​{1}}插件来构建Docker镜像,而不是Spotify