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

如何在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

额外提示

  1. 确保CLIENT_ID和CLIENT_SECRET已添加到Bitbucket仓库的流水线变量中(路径:仓库设置 → 流水线 → 变量)
  2. 你的.releaserc.json配置无需调整,@semantic-release/exec会自动执行mvn versions:set更新pom.xml版本
  3. 若需要在Bitbucket生成发布记录,可在.releaserc.json的plugins数组中添加@semantic-release/bitbucket插件:
[
  "@semantic-release/bitbucket",
  {
    "assets": []
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:02:35