0

我已经设置了一个 CircleCI 作业来运行语义发布,但我希望 CircleCI 在没有发现任何更改时失败。即当语义释放输出时:

没有相关的变化,所以没有发布新版本

运行线的 CircleCi 片段。

  - run:
      name: Semantic Release
      command: npm run semantic-release
4

3 回答 3

1

好问题。我没有对此进行测试,也不太了解 Node.js 以便快速测试,但这是我的建议。

grep0如果它找到某些东西,1如果它没有,则返回一个退出代码。0除了表示 CircleCI 失败之外的任何退出代码。Grep 的-q标志表示安静,不输出文本,&&表示只有在前一个命令通过时才运行。所以,这可能对你有用:

  - run:
      name: Semantic Release
      # Fail if there are no changes
      command: npm run semantic-release | grep -q "There are no relevant changes, so no new version is released." && exit 1

同样,我没有亲自测试过它,所以我不知道如何semantic-release输出东西,但这可能会奏效。

于 2019-05-02T21:47:31.650 回答
0

在故意不释放的情况下,语义释放不会出错。

如果您添加了一个不保证发布的提交(例如修改代码中的注释或代码格式的提交),您不希望您的 CI 失败。

简而言之,在不需要发布时不发布不是错误情况,因此 CI 不应该出错。

于 2019-05-08T20:21:12.547 回答
0

semantic-release 有意不支持这一点,但是,如果您需要管道在不创建版本的情况下失败,您可以按照建议搜索该特定文本,也可以使用插件来执行此操作。

npm install --save-dev commit-analyzer-fail-on-no-release

在语义发布配置文件中,将默认提交分析器替换为commit-analyzer-fail-on-no-release. 如果您已配置,则所有配置选项都会传递给默认插件@semantic-release/commit-analyzer

.releaserc

{
  "plugins": [
    "commit-analyzer-fail-on-no-release"
   ]
 }

了解有关此插件的更多信息

于 2021-05-30T21:47:47.193 回答