如何在Bitbucket Java-Maven项目中集成semantic-release
Bitbucket Pipelines配置Java-Maven项目semantic-release解决方案
针对你遇到的mvn: command not found问题,核心原因是当前使用的node:latest镜像未预装Maven。以下是两种直接可行的解决办法:
方案1:基于Maven镜像手动安装Node
选择预装Java 11和Maven的官方镜像,在流水线步骤中补充安装Node.js,适配你的需求:
修改后的bitbucket-pipelines.yml:
pipelines: default: - step: name: 'Deployment to Staging' deployment: staging script: - echo "Your deployment to staging script goes here..." - step: name: semantic_release trigger: 'manual' # 使用包含Java11和Maven的镜像 image: maven:3.8.6-adoptopenjdk-11 script: # 安装Node.js 18.x版本 - curl -fsSL https://deb.nodesource.com/setup_18.x | bash - - apt-get install -y nodejs curl jq # 获取Bitbucket OAuth访问令牌 - > export BB_TOKEN=$(curl -s -X POST -u "${CLIENT_ID}:${CLIENT_SECRET}" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=client_credentials -d scopes="repository"| jq --raw-output '.access_token') # 安装semantic-release相关依赖 - npm install semantic-release @semantic-release/git @semantic-release/changelog @semantic-release/exec @semantic-release/commit-analyzer conventional-changelog-conventionalcommits # 执行语义化发布 - npx semantic-release
方案2:使用自定义Docker镜像(长期推荐)
如果流水线频繁运行,建议构建包含Node、Java11和Maven的自定义镜像,避免每次重复安装依赖:
自定义Dockerfile示例
# 基于官方Maven+Java11镜像 FROM maven:3.8.6-adoptopenjdk-11 # 安装Node.js、curl和jq RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ && apt-get install -y nodejs curl jq
将镜像构建后推送到Docker Hub,然后在bitbucket-pipelines.yml中使用:
# 使用自定义镜像 image: 你的Docker用户名/自定义镜像名:latest pipelines: default: - step: name: 'Deployment to Staging' deployment: staging script: - echo "Your deployment to staging script goes here..." - step: name: semantic_release trigger: 'manual' script: # 获取Bitbucket OAuth访问令牌 - > export BB_TOKEN=$(curl -s -X POST -u "${CLIENT_ID}:${CLIENT_SECRET}" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=client_credentials -d scopes="repository"| jq --raw-output '.access_token') # 安装semantic-release依赖 - npm install semantic-release @semantic-release/git @semantic-release/changelog @semantic-release/exec @semantic-release/commit-analyzer conventional-changelog-conventionalcommits # 执行语义化发布 - npx semantic-release
额外提示
- 确保
CLIENT_ID和CLIENT_SECRET已添加到Bitbucket仓库的流水线变量中(路径:仓库设置 → 流水线 → 变量) - 你的
.releaserc.json配置无需调整,@semantic-release/exec会自动执行mvn versions:set更新pom.xml版本 - 若需要在Bitbucket生成发布记录,可在
.releaserc.json的plugins数组中添加@semantic-release/bitbucket插件:
[ "@semantic-release/bitbucket", { "assets": [] } ]
内容的提问来源于stack exchange,提问作者BugsOverflow
相关产品推荐
相关产品推荐

