我对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管道不是交互式的。
答案 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