[英]Use Hudson to build a specific git commit
我有一個哈德遜構建服務器。 源代碼由git存儲庫管理。 對於每個版本,都會檢出並編譯最新版本。 現在,我想告訴哈德森不要使用最新版本,而要使用舊版本的代碼(由我指定)。
在哈德森,我有兩個可以設置的參數。 第一個“存儲庫名稱”,默認值為“ origin”,第二個refspec
的值為+refs/heads/*:refs/remotes/origin/*
。 我嘗試了一些類似origin/[commitid]
或+refs/heads/*:refs/remotes/origin/[commitid]
。 但是沒有按預期工作。
我認為我必須使用參數化的作業,以便我可以將提交作為參數提供給作業。
我如何告訴hudson使用特定的提交而不是最新的提交?
我只是想讓這個答案更清楚。 如何逐步完成結帳工作:
COMMIT
。 ${COMMIT}
,這是對job參數的引用,將在構建期間解析。 就是這樣,啟動構建,然后在日志中將看到如下所示:
Cloning the remote Git repository
Cloning repository ssh://your-repo.git
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials
Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)
請注意,還有其他方法可以在SCM檢出之前設置環境變量,即使用EnvInject插件中 Prepare environment for the run
步驟Prepare environment for the run
(您甚至可以為此使用Groovy)。
另外,如果您沒有看到我正在談論的選項或者它們不起作用,請確保您具有Git插件的新版本(以我為例)是2.2.0。
您可以使用jenkins-git-plugin的branch參數來定義特定的提交ID。
然后,詹金斯將僅簽出該提交,而不簽出分支的負責人。
就像文檔中說的那樣:
將提交ID輸入到“構建分支”設置中。
在“准備步驟”中,嘗試添加“執行外殼”並添加:
git pull
git checkout <commit version>
一種解決方法是:
build_br
”分支。 build_br
重置為預期的提交 build_br
推送到遠程回購監視器(這將是push --force
,如“ git reset --hard
and a remote repository ”中所示) 這樣,建立該分支build_br
意味着建立特定的提交,並且GIT_COMMIT將被正確設置。
在該特殊分支上不應進行任何開發,因為它會定期重置為您需要構建的任何提交。
您可以將Hudson作業配置為構建特定分支。 然后,您可以將您希望Hudson構建在該分支上的所有更改進行推送。
我不確定Hudson,但Jenkins的Git插件在“資源庫瀏覽器”字段上方的右側有一個“高級...”按鈕。 單擊此處將顯示許多其他選項,其中之一是“檢出/合並到本地分支(可選)”。 它的幫助文本顯示為“如果給出,請在該分支上簽出修訂版本以HEAD形式構建。請注意,此版本尚未經過子模塊的測試”,因此您似乎已經想到了這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.