Continuous integration 构建docker映像,包括具有bitbucket管道的版本
我对Bitbucket管道非常陌生,遇到了一个问题。我正在创建一个管道,以便将Spring引导应用程序的新版本(在Kubernetes集群中运行)部署到测试环境中。我遇到的问题是docker构建的版本控制。我们的版本控制设置如下:Continuous integration 构建docker映像,包括具有bitbucket管道的版本,continuous-integration,bitbucket,bitbucket-pipelines,docker-build,Continuous Integration,Bitbucket,Bitbucket Pipelines,Docker Build,我对Bitbucket管道非常陌生,遇到了一个问题。我正在创建一个管道,以便将Spring引导应用程序的新版本(在Kubernetes集群中运行)部署到测试环境中。我遇到的问题是docker构建的版本控制。我们的版本控制设置如下: alpha_0.1 alpha_0.2 beta_1.0 gamma_1.0 gamma_1.1 因此,每一次次要更新/错误修复都会使版本号增加0.1,而一次主要更新会使版本号增加1.0+每一次主要更新都会获得一个新的版本名 目前我有下一个设置: image: ja
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>
image:java:8
选项:
docker:是的
分支机构:
大师:
-步骤:
缓存:
-格拉德尔
脚本:
-/梯度试验
-/格拉德卢建筑
-docker build-t/_
在bitbucket管道中包含版本名称和版本号的最佳方式是什么?到目前为止,我们运行了ruby脚本,该脚本允许用户输入版本编号,但bitbucket管道不是交互式的。假设
alpha_0.1
等是标记,并且如果标记了提交,则管道将运行,您可以获得当前提交的标记,如下所示:
TAG=$(git tag --contains $BITBUCKET_COMMIT)
然后,您可以使用您最喜欢的语言或命令行工具从您获得的标记创建
和
。将标记导出为shell变量以便在脚本中使用可能是有意义的。假设alpha_0.1
等是标记,并且如果标记了提交,则管道将运行,您可以获得当前提交的标记,如下所示:
TAG=$(git tag --contains $BITBUCKET_COMMIT)
然后,您可以使用您最喜欢的语言或命令行工具从您获得的标记创建
和
。将标签导出为shell变量以便在脚本中使用可能是有意义的。这是我拥有的shippable.yml
文件之一,请随意将其改编为Atlassian
的管道.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…
这是我拥有的可交付的.yml
文件之一,请随意将其改编为大西洋管道.yml
和渐变:
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…
如果您只需要构建编号,只需使用预定义的$BITBUCKET\u build\u编号
。(除非您真的想要提交号(脚本生成的提交号),而不是内部版本号。)如果您只需要内部版本号,只需使用预定义的$BITBUCKET\u内部版本号即可。(除非您真的想要提交编号(即脚本生成的编号),而不是生成编号。)