我是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 管道不是交互式的。
假设alpha_0.1
等是标签,并且如果标记了提交,管道就会运行,您可以像这样获取当前提交的标签:
TAG=$(git tag --contains $BITBUCKET_COMMIT)
然后,您可以使用自己喜欢的语言或命令行工具从您获得的标签创建<version_name>
和<version_number>
。将标记export
为 shell 变量以便能够在脚本中使用它可能是有意义的。
拥有的shippable.yml
文件之一,请随意将其改编为Atlassian
的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
这也使用 Spotify
的 Maven
插件来构建 Docker 镜像而不是docker build -t ...