拉取请求禁用Travis-CI

tbe*_*lay 8 travis-ci

我有一个使用Travis-CI构建的项目和rsync一个静态网站.我使用以下内容确保只发生这种情况master.

branches:
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

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

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

krl*_*mlr 10

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

如果当前作业是拉取请求,则为拉取请求编号;如果不是拉取请求,则为"假".

另见文档.

您可以更改命令以检查此命令,并仅使用非拉取请求构建

if [[ $TRAVIS_PULL_REQUEST == 'false' ]]; then your-command; fi
Run Code Online (Sandbox Code Playgroud)

为了避免@ruslo描述的场景,您可以(并且应该!)使用加密的环境变量来构建rsync连接.这些不适用于拉取请求(至少是来自分叉的那些),所以这里的一切都是安全的:

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

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


Eht*_*ury 6

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

建立拉动请求