[英]How to build a project with forms to be used in multiple other MVC projects
[英]Jenkins trigger a build based on the commit in multiple projects
最近我開始研究CI項目,它必須在SCM提交(Git / SVN)上構建項目。 我嘗試遠程使用Build觸發器,當我提交代碼並成功構建應用程序時,它會觸發Job。
現在我在一個存儲庫中有多個項目,因此根據我的提交,它必須在存儲庫中找到相應的項目並開始執行特定的工作。
詹金斯有沒有辦法做到這一點?
post-commit-hook-jenkins.vbs文件的代碼
Set args = WScript.Arguments
JobName = args.Item(0)
Token = args.Item(1)
' URL to open
sUrl = "http://builduser:a844e9e505bfc5e6e9ce6e953ba5443a@localhost:8080/buildByToken/build?job=" + JobName + "&token=" + Token
' POST Request to send.
WScript.Echo "sUrl: " + sUrl
sRequest = ""
HTTPPost sUrl, sRequest
Function HTTPPost(sUrl, sRequest)
set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "POST", sUrl,false
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send sRequest
HTTPPost = oHTTP.responseText
End Function
Post-commit.bat文件的代碼
SET CSCRIPT=%windir%\system32\cscript.exe
SET VBSCRIPT=E:\Repositories\CICD\hooks\post-commit-hook-jenkins.vbs
"%CSCRIPT%" "%VBSCRIPT%" "JobName" "AuthenticationToken"
如果你
然后它應該像你想要的那樣工作。
您提出此問題的事實可能意味着您正在從構建腳本執行源代碼檢查,對吧? 避免這種情況,而是讓Jenkins處理svn checkout / git clone。
或者你可能只是想避免輪詢,這個問題是關於如何從SVN post-commit鈎子中觸發不同的項目,具體取決於你提交的SVN存儲庫中的位置? 在這種情況下,您需要編寫一個更復雜的鈎子腳本,該腳本分析受提交影響的路徑,並根據該腳本觸發正確的Jenkins作業。
編輯 :
在post-commit.bat文件中,您應該傳遞提交的存儲庫和修訂號而不是作業名,因為您還不知道要觸發哪個作業。 Subversion將存儲庫和修訂版作為第一個和第二個參數傳遞。
SET CSCRIPT=%windir%\system32\cscript.exe
SET VBSCRIPT=E:\Repositories\CICD\hooks\post-commit-hook-jenkins.vbs
SET REPOS=%1
SET REVISION=%2
"%CSCRIPT%" "%VBSCRIPT%" %REPOS% %REVISION% "AuthenticationToken"
在.vbs腳本中,您應該替換從參數中獲取jobName的語句
repos = args.Item(0)
revision = args.Item(1)
token = args.Item(2)
現在,您需要使用此修訂號來使用svnlook.exe檢查更改。 將svnlook.exe的絕對路徑放在svnlook
變量中並執行如下操作:
Set changedExec = shell.Exec(svnlook & " changed --revision " & revision & " " & repos)
Do Until changedExec.StdOut.AtEndOfStream
changed = changed + changedExec.StdOut.ReadLine() + Chr(10)
Loop
現在,您已在changed
變量中changed
了svnlook.exe的輸出。 它告訴您SVN存儲庫中的哪些文件受提交影響。
接下來,由您來解析已changed
變量的內容以決定要觸發的作業名稱。 例如,您可以執行一些簡單的操作,例如檢查它是否包含“foo / trunk /”,然后觸發foo-trunk作業。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.