2012-04-04 79 views
64

我需要設置什麼插件和插件功能才能讓我的Jenkins作業觸發構建任何時候將代碼提交給SVN項目?我已經安裝了標準的SVN插件以及SVN標籤插件,但沒有看到任何允許進行觸發器配置的新功能。Jenkins CI:如何在SVN commit上觸發構建

+0

可能重複的HTTP ://sackoverflow.com/questions/4792466/trigger-hudson-build-when-svn-commit) – highlycaffeinated 2012-04-04 15:28:49

回答

71

有兩種方法去了解這一點:

我建議第一個選項最初,由於其易於實施。一旦你在構建過程中成熟,切換到第二個。

  1. 民意調查的資料庫,看是否發生了變化。如果兩個提交在同一個輪詢間隔內進入,這可能會「跳過」一個提交。 Description of how to do so here,請注意第四個屏幕截圖,您可以在該作業上配置基於輪詢存儲庫(使用類似crontab的配置)的「構建觸發器」。

  2. 配置您的存儲庫以具有通知Jenkins生成需要啓動的post-commit掛鉤。 Description of how to do so here,在部分「提交後鉤」

的SVN標籤特徵不是輪詢的一部分,它是促進源代碼的當前「頭」標籤的一部分,進行快照的建立。這允許您將Jenkins buid#32稱爲SVN標籤/標籤/ build-32(或類似的東西)。

+0

後提交鉤岩石。更快的響應時間,並且(按比例)您的CI系統不會用數百個更改日誌請求壓縮源回購。 – EricMinick 2012-04-05 15:22:30

+4

@EricMinick他們很棒,但有時他們可以融化CI服務器,如果你在很短的時間內得到很多小的提交。這些課程都是馬匹,如果不分析你的開發過程當前如何運作,很難知道哪種方法是有利的。 – 2012-04-05 15:27:27

+0

@EdwinBuck:你知道有沒有辦法將Jenkins配置爲僅構建選擇性提交?我會解釋一下,我有一個tortoiseSVN和一個Jenkins項目,它繼續輪詢存儲庫。現在,如果我希望我所做的承諾不應觸發Jenkins,是否有辦法做到這一點? – 2015-01-05 20:04:35

0

我做了一個工具,使用Python與一些bash觸發jenkins構建。基本上,你必須收集來自這兩個值的post-commit在commit打SVN服務器:

REPOS = 「$ 1」 REV = 「$ 2」

然後使用「svnlook的迪爾斯 - 改變$ 1 - [$ 2 「以獲得剛剛承諾的道路。然後,你可以檢查你想建立的存儲庫。想象一下你有幾十萬個項目。你不能檢查整個存儲庫?

您可以從github

檢查出我的劇本我寫這個劇本,因爲我剛剛學習Python,和現在仍在使用它。我計劃改進它,但新項目和新事物一直支持着我。大家對Python有很好的瞭解肯定有更好的內置工具。如果任何人都可以分享,會喜歡擁有它。

-1

你可以使用post-commit鉤子。

將提交後掛鉤腳本放入hooks文件夾中,在C:\驅動器中創建一個wget_folder,並將wget.exe文件放入此文件夾中。 添加以下代碼文件中稱爲post-commit.bat

SET REPOS=%1 
SET REV=%2 

FOR /f "tokens=*" %%a IN ( 
'svnlook uuid %REPOS%' 
) DO ( 
SET UUID=%%a 
) 

FOR /f "tokens=*" %%b IN ( 
'svnlook changed --revision %REV% %REPOS%' 
) DO ( 
SET POST=%%b 
) 

echo %REPOS% ----- 1>&2 

echo %REV% -- 1>&2 

echo %UUID% --1>&2 

echo %POST% --1>&2 

C:\wget_folder\wget^ 
    --header="Content-Type:text/plain"^ 
    --post-data="%POST%"^ 
    --output-document="-"^ 
    --timeout=2^ 
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%  

在作業

echo的測試=名稱用來看到價值,你也可以在末尾添加exit 2瞭解的問題, post-commit鉤子腳本是否正在運行。

0

你們會推薦使用GitHub代替SVN來觸發構建嗎? 其實我只是知道SVN,但我想知道爲什麼這麼多人傾向於使用GitHub。

0

你只需要一個插件,這是一個顛覆插件。 然後 簡單地說,走進jenkins-> job_name->構建觸發部分 - > (我)觸發建立遠程(即從腳本) 身份驗證令牌:-Token_name

然後去SVN服務器掛鉤目錄,然後起火後以下命令: - (a)cp post-commit.tmpl post-commit (b)chmod 777 post-commit (c)chown -R www-data:www-data post-commit (d)vi post-提交 說明:所有行都應該註釋 最後加上一行 synta X(爲Linux用戶): - 在/ usr /斌/捲曲http://username:[email protected]:8081/job/job_name/build?token=Token_name

語法(視窗用戶): - C:/ curl_for_win /捲曲http://username:[email protected]:8081/job/job_name/build?token=Token_name

[觸發哈德森生成時使用svn commit](的
相關問題