You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bamboo Docker任务用Bitbucket源码版本标记Docker镜像?

解决Bitbucket+Bamboo中用源码版本号作为Docker镜像标签的方案

方法一:从Git标签提取版本号(匹配你打tag的工作流)

因为你是在master分支的提交上打版本标签(比如1.3.0),可以直接从Git标签中提取版本号传递给Bamboo:

  • 在Bamboo构建计划中添加Shell脚本任务,放在Docker构建步骤之前:
    # 拉取远程仓库所有标签
    git fetch --tags
    # 获取当前提交对应的精确标签(只返回当前HEAD匹配的标签)
    VERSION=$(git describe --tags --exact-match HEAD 2>/dev/null)
    # 将版本号写入Bamboo的结果属性文件,供后续步骤调用
    echo "bamboo.docker.image.version=$VERSION" >> "${bamboo_build_working_directory}/bamboo-build-results.properties"
    
  • 在Docker构建推送步骤中,直接使用该变量:
    docker build -t namespace/repository:${bamboo.docker.image.version} .
    docker push namespace/repository:${bamboo.docker.image.version}
    
  • 可选优化:在Bamboo的触发设置中,启用标签触发,设置标签匹配规则(比如[0-9]+\.[0-9]+\.[0-9]+),这样只有打了版本标签的提交才会触发构建,避免无标签时变量为空的情况。

方法二:从项目版本文件读取(如果版本号维护在源码文件中)

如果你的版本号是写在项目文件里(比如Maven的pom.xml、Node.js的package.json),可以直接读取文件内容:

  • 对于Maven项目,添加Shell脚本任务:
    VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
    echo "bamboo.docker.image.version=$VERSION" >> "${bamboo_build_working_directory}/bamboo-build-results.properties"
    
  • 对于Node.js项目,添加Shell脚本任务:
    VERSION=$(node -p "require('./package.json').version")
    echo "bamboo.docker.image.version=$VERSION" >> "${bamboo_build_working_directory}/bamboo-build-results.properties"
    
  • 后续Docker步骤同样使用${bamboo.docker.image.version}作为标签即可。

注意事项

  • 确保Bamboo构建代理已安装Git、对应项目的构建工具(Maven/Node.js等),且有拉取Bitbucket仓库的权限。
  • 如果需要同时保留构建号作为备用标签,可以在Docker推送时打多个标签:
    docker tag namespace/repository:${bamboo.docker.image.version} namespace/repository:${bamboo.buildNumber}
    docker push namespace/repository:${bamboo.docker.image.version}
    docker push namespace/repository:${bamboo.buildNumber}
    

内容的提问来源于stack exchange,提问作者LilacBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:05:05