在未找到任何更改的情况下如何使用CircleCI进行语义发布失败

时间:2019-05-02 14:29:59

标签: node.js circleci semantic-release

我已经设置了CircleCI作业来运行语义释放,但是我希望CircleCI在找不到任何更改时会失败。即当语义释放输出时:

  

没有相关更改,因此没有新版本发布

运行线的CircleCi代码段。

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

3 个答案:

答案 0 :(得分:1)

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

grep如果发现某物,则返回退出代码0,如果找不到,则返回退出代码10以外的任何退出代码均表示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是如何输出内容的,但这可能有用。

答案 1 :(得分:0)

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

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

简而言之,在不需要释放时不进行释放不是错误的情况,因此CI不应出错。

答案 2 :(得分:0)

这是 intentionally not supported by 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"
   ]
 }

Learn more about this plugin