簡體   English   中英

如何讓子模塊觸發Jenkins構建

[英]how to get submodules to trigger a Jenkins build

我有一個不是獨立應用程序的子模塊A. 它需要它的主要應用程序才能工作。 我想為A創建一個CI構建,這樣無論何時將提交推送到A,它都會觸發使用主項目代碼的構建。

我怎么在詹金斯那樣做?

我需要做什么:

  • 對A的提交會觸發構建。
  • 構建克隆主項目代碼並在A的最新提交中提取A的最新代碼(不是主項目知道的提交)。

我如何使用Jenkins和GIT做到這一點?

注意我有多個項目子模塊。 子模塊A觸發一個構建,該構建從A和最新的主代碼中提取最新的更改,並從其他子模塊中提取更新。

這可以在沒有git鈎子的情況下完成。 在這個例子中我們有3個回購:

    • 只有子模塊的空倉庫
  1. 兒童一
    • 一個孩子子模塊回購
  2. 孩子-B
    • 另一個孩子子模塊回購

使用子模塊克隆時,它看起來像:

parent\
    child-a\*
    child-b\*

在Jenkins中創建一個名為dummy-child-a的自由式項目。

  • Source Code Management下,為child-a設置Repository URL
  • 在“ Build Triggers ,選擇“ Poll SCM並設置所需的間隔
  • Build單擊Add build step
    • 根據您的操作系統,選擇Execute Windows batch commandExecute shell
    • 在腳本框中執行echo hello (這是虛擬部分)

child-b重復這些步驟


在Jenkins中創建一個名為parent的自由式項目。 這是我們實際建造的地方

  • 在“ Source Code Management下, parent設置Repository URL
  • 單擊Additional Behaviours下的add並選擇Advanced sub-modules behaviours
    • 校驗:
    • Recursively update submodules
    • Update tracking submodules to tip of branch
    • Use credentials from default remote of parent repository
  • Build Triggers下,在Build Triggers Build after other projects are built檢查Build after other projects are built
    • Projects to watchProjects to watch字段中,使用逗號分隔填充要監視的所有項目: dummy-child-a, dummy-child-b
    • 如果parent沒有可以更改的源代碼,則無需在此Jenkins作業上Poll SCM
    • Trigger even if the build fails請檢查Trigger even if the build fails

而且你已經完成了。 對child-a或child-b的任何更改都將觸發父級的重建。 此方法假定父級中的子模塊數不經常更改。 如果要添加另一個子模塊,則需要創建另一個dummy項目,然后更新projects to watch parent Jenkins構建。

這可以分兩步完成:

  1. 在要構建的Jenkins作業上啟用構建觸發器URL。 這是在“遠程觸發器構建”選項卡下完成的。 該網址將采用以下格式: JENKINS_URL/job/MY_JOB_NAME/build?token=TOKEN_NAME

  2. 在子模塊A中設置git post-receive hook,調用上面的url。 一個簡單的方法就是使用curl: curl JENKINS_URL/job/MY_JOB_NAME/build?token=TOKEN_NAME

推送到子模塊A然后通過調用url來觸發主項目Jenkins的工作。 配置Jenkins作業以在構建之前更新其代碼或您需要的任何其他細節。

這個答案提供了很多關於如何設置git鈎子的細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM