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

如何在GitHub Actions中完成npm包发布后的版本校验与功能测试

GitHub Actions 校验NPM包发布版本的实现方法

你可以通过版本号对比的方式完成校验,以下是两种可直接复用的实现方案:

方案1:跨job传递发布版本号(适合发布、测试同工作流场景)

先在发布job中提取要发布的版本号作为输出,测试job拿到该版本号和实际安装的版本做对比即可,完整配置示例:

name: NPM 包发布与校验
on:
  # 替换为你实际的发布触发规则
  push:
    tags:
      - 'v*'
jobs:
  publish:
    runs-on: ubuntu-latest
    outputs:
      # 将当前要发布的版本号输出,供给测试job使用
      release_version: ${{ steps.extract_version.outputs.version }}
    steps:
      - uses: actions/checkout@v4
      - name: 提取package.json中的版本号
        id: extract_version
        run: echo "version=$(jq -r '.version' package.json)" >> $GITHUB_OUTPUT
      # 此处替换为你原有的NPM发布逻辑
      - name: 发布到NPM
        run: npm publish
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
  post-publish-test:
    needs: publish
    runs-on: ubuntu-latest
    steps:
      - name: 安装最新发布的包
        run: npm i orchestrate-command-status --registry https://registry.npmjs.org/
      - name: 校验安装版本是否匹配发布版本
        run: |
          EXPECTED_VERSION=${{ needs.publish.outputs.release_version }}
          # 这里根据你的--version实际输出格式调整过滤规则
          INSTALLED_VERSION=$(npx orchestrator --version | sed 's/^v//' | tr -d '[:space:]')
          if [ "$INSTALLED_VERSION" != "$EXPECTED_VERSION" ]; then
            echo "版本校验失败:期望版本 $EXPECTED_VERSION,实际安装版本 $INSTALLED_VERSION"
            exit 1
          fi
          echo "版本校验通过:已成功安装最新版本 $INSTALLED_VERSION"

方案2:直接拉取NPM官方最新版本对比(适合跨工作流触发测试场景)

不需要传递版本号,直接从NPM registry查询最新发布的版本和本地安装版本对比即可,配置更简单:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: 清除NPM缓存并安装包
        run: |
          npm cache clean --force
          npm i orchestrate-command-status --registry https://registry.npmjs.org/
      - name: 校验版本为最新发布版
        run: |
          LATEST_VERSION=$(npm show orchestrate-command-status version | tr -d '[:space:]')
          INSTALLED_VERSION=$(npx orchestrator --version | sed 's/^v//' | tr -d '[:space:]')
          if [ "$INSTALLED_VERSION" != "$LATEST_VERSION" ]; then
            echo "版本校验失败:NPM最新版本为 $LATEST_VERSION,实际安装版本为 $INSTALLED_VERSION"
            exit 1
          fi
          echo "版本校验通过,当前安装为NPM最新发布版本"

注意事项

  • 安装包时指定--registry https://registry.npmjs.org/可以避免CDN缓存导致拿到旧版本的问题
  • 如果你的orchestrator --version输出包含额外内容,可以自行调整sed/awk规则过滤出纯版本号即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:00