簡體   English   中英

當只構建Git倉庫的子目錄時,Jenkins會顯示整個倉庫的變化 - 為什么?

[英]When building only a subdirectory of a Git repo, Jenkins shows the changes of the whole repo - why?

我們剛剛遷移到Git,所以如果我問愚蠢的問題,請原諒我:-)

我們的Git repo包含幾個Maven項目,就像這樣

ssh://git@git.whatever.com:7999/foo/foo.git
   bar1
   bar2

我有單獨的Jenkins工作來構建bar1和bar2。 為了防止對bar1的推送也觸發了bar2,我在Advanced... Included Regions下的bar2中配置了Git插件,只包括bar2/.* - 反之亦然bar1作業: bar1/.*

這很有效,但有一件事讓我感到困惑:兩個工作中的變化都顯示了repo(bar1和bar2)的所有變化,而不僅僅是特定項目的變化。

我該如何配置?

截圖: 在此輸入圖像描述

很晚了,但詹金斯總是檢查出整個回購(甚至做稀疏檢出時,詹金斯還在克隆整個回購到本地硬盤),並顯示回購作為一個整體構建頁面上的修訂。

這是Jenkins開發人員的意圖。 CI的核心方面是能夠輕松跟蹤回購歷史中的變化。 如果僅針對每個構建顯示子目錄的修訂,則跨越回購的變更跟蹤將變得非常困難(並且對於大回購而言幾乎不可能)。

當你提到更改時,我假設你的意思是提交日志,在這種情況下,如果沒有自定義git客戶端或至少是自定義git commit viewer腳本,你就無法完成所需的操作。

理論上,單個存儲庫只應包含一個項目。 否則你使用git“錯誤”(在非常寬松的意義上使用“錯誤”一詞,因為git只是一個工具,使用它是錯誤的是不可能的,只是根據你自己的要求使用它)。

執行所需操作的唯一方法是將bar1和bar2文件夾拆分為單獨的git repo。 如果它們有點像模塊,這兩個模塊都需要在同一個站點上,你可以分別為每個項目git init / clone到bar1和bar2文件夾中,這樣你就可以單獨控制它們。

另一個選擇是將它們分成單獨的git repo,然后創建第三個“master”repo,其中只包含另外兩個repo作為其各自文件夾中的子模塊。 然后使用你可能已經做的自定義git鈎子,使主拉動並構建正確的文件夾/項目/欄(x)。 然而,這是一種純粹為了不必首先設置幾個文件夾而做事的hacky方式。

基本上,您不能基於該文件夾拆分提交日志,而無需編寫自己的自定義提交查看器。 您需要將項目分成多個回購。 然后,如何將它們重新組合在一起並自動執行任何構建任務,由您自己決定。 毫無疑問,我上面提到的方式更多。 只是找到滿足您需求的最佳解決方案。

暫無
暫無

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

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