如何控制哪些github提交在CircleCI中构建?

时间:2016-05-12 19:45:39

标签: git github circleci

我想设置一个CI,这样只有在GitHub webhooks报告git提交时它才会做出反应和构建,包含对我的repo子文件夹中任何内容的更改。

myRepo
> code1.js
> workers <-- run when this ... or anything under this changes
  > worker1.js

例如,我想设置一个CircleCI构建,它可以查看提交并运行脚本,根据与搜索{{1}的正则表达式匹配的commit-changelog来确定构建的go? or no-go?。在changelog有效负载中。

我只是不知道在哪里挂钩以及如何:

  1. 我应该设置我的github webhook以某种方式更智能,并辨别更改日志是否有任何提及workers文件夹的内容?这样我的CI就会保持愚蠢,因为webhook会决定何时将commit-payload推送到CI。
  2. 我应该以某种方式将某个地方挂钩到CircleCI的yaml文件中以辨别更改日志是否有任何提及workers文件夹的内容?如果是这样的话?
  3. 我可以编写自己的正则表达式,但我需要知道在哪里注入/挂钩脚本。

    我不要求的事情:

    1. 我不是要求像git submodules这样的替代品
    2. 我不想分成两个单独的回购

1 个答案:

答案 0 :(得分:4)

CircleCI不支持内置此功能。在CircleCI方面,您确实可以在circle.yml中使用某些逻辑检查workers目录中的更改,但是我们只会在构建过程开始后对其进行评估。效率不高。

至于GitHub webhooks,我不知道可以做到这样的事情。如果是这样,那真是太棒了,请告诉我。

我的建议

CircleCI支持提交消息中的[skip ci] or [ci skip]标志。如果workers目录之外的更改很少发生,只需将该标志添加到提交消息中即可。如果经常发生变化,那将会很乏味,所以我会使用Git commit-msg钩子。您可以为该挂钩编写一个小脚本来检查哪些目录包含更改。如果workers/*内的任何内容未更改,请使用[skip ci]附加(或预先添加)提交消息。这里的Git文档非常简单,但这里是钩子页面:https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

我希望有所帮助。

-Ricardo
开发者传播者,CircleCI