构建 docker 个图像,包括带有 bitbucket 管道的版本
Build docker image including version with bitbucket pipelines
我是 Bitbucket Pipelines 的新手,我遇到了一个问题。我正在创建一个管道,以将我们的 Spring Boot 应用程序(在 Kubernetes 集群中运行)的新版本部署到我们的测试环境。我遇到的问题是我们 docker 构建的版本控制。我们的版本控制设置如下:
alpha_0.1
alpha_0.2
beta_1.0
gamma_1.0
gamma_1.1
因此每个次要 update/bugfix 都会将内部版本号增加 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 ...
我是 Bitbucket Pipelines 的新手,我遇到了一个问题。我正在创建一个管道,以将我们的 Spring Boot 应用程序(在 Kubernetes 集群中运行)的新版本部署到我们的测试环境。我遇到的问题是我们 docker 构建的版本控制。我们的版本控制设置如下:
alpha_0.1
alpha_0.2
beta_1.0
gamma_1.0
gamma_1.1
因此每个次要 update/bugfix 都会将内部版本号增加 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 ...