首页 > 解决方案 > $TRAVIS_EVENT_TYPE != 'pull_request' 和 $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG 之间的区别

问题描述

我正在尝试在 Travis 中设置 Chromatic。

我在 Travis 中看到Chromatic 文档建议使用此脚本

if [[ $TRAVIS_EVENT_TYPE != 'pull_request' || $TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG ]];
then
  npm run chromatic
fi

有解释

Travis 为拉取请求的提交提供了两种类型的构建:所谓的 pr 和 push 构建。每个 PR 只运行一次 Chromatic 才有意义,因此我们建议在内部 PR(即不是来自 fork 的 PR)的 pr 构建上禁用 Chromatic。您应该确保已打开推送构建,并添加以下代码:[[THE CODE ABOVE]]

对于外部 PR(来自 repo 的分支的 PR),上述代码将确保 Chromatic 确实在 pr 构建上运行,因为 Travis 在这种情况下不会触发推送构建。

注意:我们建议在推送构建上运行 Chromatic,因为 pr 构建不能总是运行并脱离正常的 git 祖先。例如,如果您更改 PR 的基本分支,您可能会发现需要重新批准更改,因为某些历史记录可能会丢失。

但是,Chromatic 确实适用于 Travis pr 构建!

然后我阅读了有关and的Travis 文档TRAVIS_PULL_REQUEST_SLUGTRAVIS_REPO_SLUG

TRAVIS_PULL_REQUEST_SLUG:

  • 如果当前作业是拉取请求,则 PR 源自的存储库的 slug(格式为 owner_name/repo_name)。

  • 如果当前作业是推送构建,则此变量为空 ("")。

TRAVIS_REPO_SLUG:

  • 当前正在构建的存储库的 slug(形式:owner_name/repo_name)。

所以我的理解是什么时候$TRAVIS_PULL_REQUEST_SLUG != $TRAVIS_REPO_SLUG,它是一个推送构建,那么为什么它仍然需要$TRAVIS_EVENT_TYPE != 'pull_request'呢?

它们之间有什么区别吗?

标签: travis-cichromatic

解决方案


从色度这里得到。

我们建议仅在构建不是源自拉取请求(即推送构建)时运行 chromatic,或者当它是源自 fork 的拉取请求构建时,在这种情况下 PR slug 与 repo slug 不同。

根据引用的 Travis 文档,在推送构建的情况下,TRAVIS_PULL_REQUEST_SLUG 为空,如果从分叉进行 PR 构建,它将引用分叉的回购所有者。无论哪种情况,它都不同于 TRAVIS_REPO_SLUG。所以你是正确的,这个条件的左边是多余的。随意省略它。


推荐阅读