我們看到在Jenkins多分支管道項目上觸發重複構建。通常使用來自使用此插件的Bitbucket的推送通知來觸發構建:https://marketplace.atlassian.com/plugins/com.nerdwin15.stash-stash-webhook-jenkins/server/overview在Jenkins多分支管道上觸發的重複構建
但是,我們現在看到'double'構建出於某種原因。如果您查看觸發的兩個構建版本,則由「提交通知」觸發,另一個由「分支索引」觸發。
什麼導致分支索引,爲什麼它觸發構建?我們不添加或刪除分支,這只是一個正常的提交/推送。
爲了使它更復雜,它不會一直髮生。有一次,我認爲這隻發生在合併後,但事實並非如此。此外,阻止它的一種方法似乎是刪除作業的構建歷史記錄(這顯然不是理想的)。
我們正在從管道腳本任務設置屬性,但只廢舊構建:
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '20'))])
混亂的另一個來源似乎是,如果一個人應該有順序啓用輪詢(無間隔)推送通知爲Git插件工作。 Git插件的文檔表明這是必需的,確實看起來是用於'普通'管道構建,但似乎並不需要多分支管道構建。 這是正確的嗎?從詹金斯的Git插件維基:
這將掃描的所有作業:
有建立觸發器>民意測驗SCM啓用。沒有輪詢時間表是 必需的。被配置爲在指定的URL上構建存儲庫 被配置爲構建可選的指定分支或提交ID 對於滿足這些條件的作業,輪詢將立即觸發 。如果輪詢發現值得構建的變化,則構建將會觸發 。
我們使用的是Bitbucket 4.8.4和Jenkins 2.30(以及所有最新的管道插件)。
這只是一個猜測:如果存儲庫服務器上的時鐘與Jenkins服務器上的時鐘相比,我已經看到類似的問題。您可能會嘗試添加安靜期(https://jenkins.io/blog/2010/08/11/quiet-period-feature/)。 – jherb
@jherb感謝您的信息 - 但我找不到如何在Jenkinsfile的管道中創建安靜期(我們需要在腳本上設置它,因爲我們正在設置其他構建屬性 - 這將覆蓋其他任何設置集通過圖形用戶界面) –
我想你可以像在這個例子中使用'sleep 60'這樣的東西:https://jenkins.io/doc/pipeline/examples/#timestamper-wrapper(在你調用scm或git命令之前) – jherb