travis-ci - $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_SLUG
TRAVIS_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'
呢?
它们之间有什么区别吗?
解决方案
从色度这里得到。
我们建议仅在构建不是源自拉取请求(即推送构建)时运行 chromatic,或者当它是源自 fork 的拉取请求构建时,在这种情况下 PR slug 与 repo slug 不同。
根据引用的 Travis 文档,在推送构建的情况下,TRAVIS_PULL_REQUEST_SLUG 为空,如果从分叉进行 PR 构建,它将引用分叉的回购所有者。无论哪种情况,它都不同于 TRAVIS_REPO_SLUG。所以你是正确的,这个条件的左边是多余的。随意省略它。
推荐阅读
- reactjs - Commerce JS API 拒绝我的测试交易
- c++ - 简单的顺序 std::iota 比并行等效更快
- java - 在 spring-boot:run 期间启动 MockServer
- ruby - gem install puma -v '4.3.7' 在 Mac OS Big Sur Ruby 2.6.3 Bundler 版本 2.2.19 上失败
- sql - SQLite:相当于“软删除”的 ON DELETE RESTRICT(表字段变为非 NULL)
- volttron - 通过 rpc 从外部应用程序调用 VOLTTRON 代理功能
- django - Django Crispy Forms 未按预期工作
- jquery - Bootstrap 5选择下拉列表,折叠多个属性
- python - 只有当数据集文件在我的 DAG Python 文件中有记录时,我才需要编写头文件和数据集文件
- javascript - 如何检查对象是否具有可以分配的属性?