我正在尝试在特拉维斯中设置Chromatic。
我看到Chromatic 文档建议在特拉维斯中使用此脚本
if [[ $TRAVIS_EVENT_TYPE != 'pull_request' || $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG ]];
then
npm run chromatic
fi
附有解释
Travis 为拉取请求的提交提供了两种类型的构建: 称为 PR 和推送构建。只运行一次 Chromatic 才有意义 每个 PR,因此我们建议在 PR 构建上禁用内部 Chromatic PR(即不是来自分叉的 PR(。你应该确保你 打开推送版本,并添加以下代码:[[上面的代码]]
对于外部 PR(来自存储库分支的 PR(,上面的代码将 确保 Chromatic 确实在 pr 构建上运行,因为 Travis 不会 在这种情况下触发推送构建。
注意:我们建议在推送构建上运行 Chromatic ,因为 pr 构建不能 总是跑出来,脱离正常的 git 血统。例如,如果 你更改了 PR 的基本分支,你可能会发现你需要 重新批准更改,因为某些历史记录可能会丢失。
然而,Chromatic 确实适用于特拉维斯公关构建!
然后我阅读了特拉维斯关于TRAVIS_PULL_REQUEST_SLUG
和TRAVIS_REPO_SLUG
的文件。
TRAVIS_PULL_REQUEST_SLUG:
如果当前作业是拉取请求,则 slug(在 PR 源自的存储库的 owner_name/repo_name(。
如果当前作业是推送构建,则此变量为空 ("(。
TRAVIS_REPO_SLUG:
- 当前正在构建的存储库的 slug(形式:owner_name/repo_name(。
所以我的理解是,当$TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG
时,它是一个推送构建,那么为什么还需要$TRAVIS_EVENT_TYPE != 'pull_request'
呢?
它们之间有什么区别吗?
来自Chroma的Gert。
我们建议仅当构建不是源自拉取请求(即推送构建(时,或者当它是源自分叉的拉取请求构建时,我们建议运行 chromatic ,在这种情况下,PR slug 与存储库 slug 不同。
根据引用的 Travis 文档,如果是推送构建,TRAVIS_PULL_REQUEST_SLUG是空的,如果是从分叉进行的 PR 构建,它将引用分叉的存储库所有者。无论哪种情况,它都与TRAVIS_REPO_SLUG不同。所以你是对的,这个条件的左手边是多余的。随意省略它。