我已经设置了CircleCI作业来运行语义释放,但是我希望CircleCI在找不到任何更改时会失败。即当语义释放输出时:
没有相关更改,因此没有新版本发布
运行线的CircleCi代码段。
- run:
name: Semantic Release
command: npm run semantic-release
答案 0 :(得分:1)
好问题。我尚未对此进行测试,并且我不太了解Node.js以便快速进行测试,但这是我的建议。
grep
如果发现某物,则返回退出代码0
,如果找不到,则返回退出代码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
是如何输出内容的,但这可能有用。
答案 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"
]
}