【问题标题】:How to control which github commits to build for in CircleCI?如何控制在 CircleCI 中为哪个 github 提交构建?
【发布时间】:2016-05-13 10:29:16
【问题描述】:

我想设置一个 CI,使其仅在 GitHub webhook 报告 git 提交时做出反应并构建,包含对我的 repo 子文件夹中任何内容的更改。

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

例如,我想设置一个 CircleCI 构建,它可以查看提交并运行一个脚本来根据与在变更日志中搜索 workers 的正则表达式匹配的提交变更日志来决定构建的 go? or no-go?有效载荷。

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

  1. 我是否应该以某种方式将我的 github webhook 设置为更智能并辨别变更日志是否有任何提及 workers 文件夹的内容?这样我的 CI 就可以保持沉默,因为 webhook 会自行决定何时将提交有效负载推送到 CI。
  2. 我是否应该以某种方式连接到 CircleCI 的 yaml 文件中,以辨别变更日志中是否有提及 workers 文件夹的内容?如果有的话在哪里?

我可以编写自己的正则表达式,但我需要知道在哪里注入/挂钩脚本。


我不想要的东西:

  1. 我不是要求像 git 子模块这样的替代品
  2. 我不想分成两个独立的存储库

【问题讨论】:

    标签: git github circleci


    【解决方案1】:

    CircleCI 不支持此内置功能。在 CircleCI 方面,您肯定可以在 circle.yml 中有一些逻辑来检查 workers 目录中的更改,但是我们只会在构建过程已经开始后评估它。效率不高。

    就 GitHub webhook 而言,我不知道可以做这样的事情。如果是这样,那太棒了,请告诉我。

    我的建议

    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

    希望对你有帮助。

    -里卡多
    开发人员布道师,CircleCI

    【讨论】:

    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 2016-04-30
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多