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

如何在GitHub Actions中获取semantic release发布的版本并传递给后续步骤

解决方案

可以实现版本号传递,你可以通过GitHub Actions内置的输出变量功能获取semantic-release生成的版本号,同时通过判断版本号是否存在决定是否跳过后续更新步骤,具体操作如下:

步骤1:配置版本号输出

推荐使用官方@semantic-release/exec插件捕获发布成功后的版本号,首先安装插件:

npm install @semantic-release/exec -D

之后修改你的semantic-release配置文件(比如.releaserc.json),添加exec插件配置,发布成功时将版本号写入GitHub Actions输出变量:

{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/github",
    ["@semantic-release/exec", {
      "successCmd": "echo \"release_version=${nextRelease.version}\" >> $GITHUB_OUTPUT"
    }]
  ]
}

步骤2:修改Workflow配置

推荐将两个逻辑放在同一个Job中(同Job内步骤传值更简单),给semantic-release步骤添加id,后续步骤通过id引用输出变量,同时添加if判断,只有版本号存在时才执行更新步骤:

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repo
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 # semantic-release需要全量提交历史才能分析版本,必须配置
      - run: npm install
      - name: semanticRelease
        id: semantic-release # 给步骤加id用于后续引用输出
        run: npx semantic-release -t \${version}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Update release
        if: steps.semantic-release.outputs.release_version != '' # 无新版本发布则自动跳过当前步骤
        uses: tubone24/update_release@v1.2.0
        env:
          GITHUB_TOKEN: ${{ github.token }}
          TAG_NAME: ${{ steps.semantic-release.outputs.release_version }}
        with:
          is_append_body: true
          body: "Update something"

跨Job传值的特殊情况

如果你确实需要拆分为两个独立Job,需要给第一个Job配置输出参数,第二个Job依赖第一个Job并引用输出即可:

jobs:
  release:
    runs-on: ubuntu-latest
    outputs:
      release_version: ${{ steps.semantic-release.outputs.release_version }} # 声明Job级输出
    steps:
      # 此处省略和上文一致的release步骤配置
  update-release:
    runs-on: ubuntu-latest
    needs: release # 声明依赖release Job执行完成再运行
    if: needs.release.outputs.release_version != '' # 无新版本则跳过整个Job
    steps:
      - name: Update release
        uses: tubone24/update_release@v1.2.0
        env:
          GITHUB_TOKEN: ${{ github.token }}
          TAG_NAME: ${{ needs.release.outputs.release_version }}
        with:
          is_append_body: true
          body: "Update something"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:39:03