如何在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
相关产品推荐
相关产品推荐

