拉取请求禁用Travis-CI

时间:2014-01-12 15:46:12

标签: travis-ci

我有一个使用Travis-CI构建和rsync静态网站的项目。我使用以下内容确保仅在master

中发生这种情况
branches:
  only:
    - master

但是,当有人在存储库上发出拉取请求时,Travis-CI会将该分支合并到master中并进行构建和rsync,这意味着任何人都可以通过提交任何内容来替换我的网站内容。拉请求。

有没有办法阻止Travis-CI尝试构建拉取请求?

2 个答案:

答案 0 :(得分:10)

您可以通过检查环境变量TRAVIS_PULL_REQUEST来确定Travis是否正在检查拉取请求。它包含:

  

如果当前作业是拉取请求,则为拉取请求编号;如果不是拉取请求,则为“假”。

另见the docs

您可以更改命令以检查此操作,并仅使用

构建非拉取请求
if [[ $TRAVIS_PULL_REQUEST == 'false' ]]; then your-command; fi

为了避免@ruslo描述的场景,您可以(并且应该!)使用encrypted environment variables来构建rsync连接。这些不适用于拉动请求(至少是来自叉子的那些),所以这里的一切都是安全的:

  

请注意,安全的env变量不适用于来自分叉的拉取请求。这是因为在提交的代码中暴露此类信息的安全风险。每个人都可以提交拉取请求,如果有可用的未加密变量,则可以轻松显示。

(文档中陈述的理由不同,但该机制也适用于此。)

答案 1 :(得分:6)

您是否无法禁用PULL请求构建?至少,在撰写本文时,我认为这是每个回购设置的选择:

build pull requests