Continuous integration 构建docker映像,包括具有bitbucket管道的版本

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

我对Bitbucket管道非常陌生,遇到了一个问题。我正在创建一个管道,以便将Spring引导应用程序的新版本(在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>
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内部版本号即可。(除非您真的想要提交编号(即脚本生成的编号),而不是生成编号。)