【问题标题】:Trigger Specific Jenkins Job on Github Push to specific Directory在 Github 上触发特定 Jenkins 作业推送到特定目录
【发布时间】:2018-05-15 23:19:57
【问题描述】:

我有几个 Jenkins Job 正在运行,将 Deploy 的代码部署到应用程序服务器。每当通过 Github 和 webhook 中的 Jenkins 插件配置的 Github 存储库中有 Commit 时,这些作业就会自动运行。 Jenkins 在 Windows 系统上运行。

我们在存储库中有几个应用程序,由一个包含代码的目录表示,每个应用程序都有一个相应的 Jenkins 作业,当作业运行时将代码部署到服务器。 由于所有应用程序都在同一个存储库中,因此任何一个应用程序的更改都会创建一个 Push 事件,从而触发所有作业。

假设有App1、App2和App3三个Application,它们对应的Jobs分别是J1、J2、J3 并且 App1 发生了变化,并且在 Github 存储库中进行了提交,这导致所有作业 J1、J2、J3 触发并部署App1、App2、App3 在服务器中。

这会导致不必要的混淆,因为 App2、App3 在存储库中没有任何更改,但仍会部署到服务器。 有什么方法可以根据 Github 存储库中的目录级别更改/提交触发特定的 Jenkins 作业构建。我们可以使用任何 git 钩子来实现这一点吗?

【问题讨论】:

    标签: git github jenkins githooks


    【解决方案1】:

    为此,您可以将签出稀疏到 git 中的特定目录,这样每个 jenkins 作业都将是相互的。

    jenkins job configure -> Source Code Management -> Git -> Additional Behaviors -> Add -> Sparse Checkout paths

    这将简单地对子目录进行稀疏签出,并仅检查该目录上是否有任何提交。希望这会有所帮助。

    【讨论】:

    • 您能否具体说明一下您在 jenkins 中的工作是如何配置的。
    • Jenkins Job 配置了“GitHub hook trigger for GITScm polling”选项,以便在 GITHUB PUSH 事件上触发 Job。
    • 在使用此签出到子目录功能时,即使签出发生在子目录中,但触发机制仍然相同,即如果在 GitHub 存储库中发生任何推送,所有作业都会被触发。我需要避免触发其他也使用 Github 钩子触发的作业。
    • 我已更改答案,请检查。我希望这就是你要找的。​​span>
    • 试过 "Sparse Checkout Paths" ,那也没用。即使仅签出特定文件夹,所有作业仍会被触发
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多