有条件构建而不会触发TravisCI VM

时间:2019-10-05 20:34:00

标签: git github build hook travis-ci

我一直在查看文档,还尝试使用.travis.yml文件进行各种实验性更改,以便根据项目中是否存在与代码相关的更改,或者仅仅是与文档相关的更改来切换我的版本。

所有未进行更改的用户必须不公平地等待以前的版本完成,尤其是如果那些先前的版本是由与代码无关的更改触发的。

但是从构建中释放PR仍需要30-40秒。随后的提交和PR正在队列中等待。我们认为,如果不触发TravisCI VM,并且能够在github挂钩级别执行相同的检查,则可以进一步改善这一点。我们希望进一步优化它,而不是几秒钟后就可以看到PR是否需要CI / CD构建。

背景:TravisCI社区提出了一个问题,但是到目前为止,还没有任何切实的回应:https://travis-ci.community/t/conditional-build-without-triggering-travisci-vms/5305/2

我们已经在before_install指令中提出了一种解决方案来进行检查,然后在出口0的帮助下跳过了构建。

https://github.com/picknmix/picknmix/blob/master/.travis.yml

我要寻找的东西如下:

  • 基本上git知道一个文件在提交或分支(也就是提交)中已更改的文件。如果该信息在TravisCI env变量中可用,则属于一项信息
  • 就我而言,我正在寻找文件扩展名,因此类似地,可以在环境变量或指令中以相同的方式提供相同的信息

  • 表达式语言应允许表达以下内容:

    ${TRAVISCI_COMMIT_FILE_EXTENSIONS} contain any of (xx xxx x xyz)

    ${TRAVISCI_COMMIT_FILE_EXTENSIONS} does not contain any of (xx xxx x xyz)

如果以上返回的是true或false,则可以将该条件添加到环境变量中,或通过if指令直接调用它:

if: <condition>

if: <do not run build if no code changes have been made directive>

if: <run build only if code changes have been made directive>

那是我对atm的基本理解,当然,这与我上面描述的内容不完全相同,但是在查看可用的文档和功能后,我们可以缩小差距。

如果TravisCI可以通过单个指令提供此功能,则可以单独使用,可以节省每个人大量的构建时间并等待构建开始,因为该构建被卡在执行提交或分支的其他构建占用的队列中触发与代码无关的更改。

0 个答案:

没有答案
相关问题