[英]how to get submodules to trigger a Jenkins build
我有一個不是獨立應用程序的子模塊A. 它需要它的主要應用程序才能工作。 我想為A創建一個CI構建,這樣無論何時將提交推送到A,它都會觸發使用主項目代碼的構建。
我怎么在詹金斯那樣做?
我需要做什么:
我如何使用Jenkins和GIT做到這一點?
注意我有多個項目子模塊。 子模塊A觸發一個構建,該構建從A和最新的主代碼中提取最新的更改,並從其他子模塊中提取更新。
這可以在沒有git鈎子的情況下完成。 在這個例子中我們有3個回購:
使用子模塊克隆時,它看起來像:
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 command
或Execute 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 watch
的Projects 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構建。
這可以分兩步完成:
在要構建的Jenkins作業上啟用構建觸發器URL。 這是在“遠程觸發器構建”選項卡下完成的。 該網址將采用以下格式: JENKINS_URL/job/MY_JOB_NAME/build?token=TOKEN_NAME
。
在子模塊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.