簡體   English   中英

使用Hudson構建特定的git commit

[英]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使用特定的提交而不是最新的提交?

我只是想讓這個答案更清楚。 如何逐步完成結帳工作:

  1. 將字符串參數添加到帶有名稱的作業中,在我的示例中將其設為COMMIT
  2. 選擇Git作為SCM(由Jenkins Git插件提供 )。
  3. 在Git SCM屬性中設置您的回購屬性。
  4. 在Git SCM中,在“ 要構建的分支 ”段落中鍵入${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。

然后,詹金斯將僅簽出該提交,而不簽出分支的負責人。

就像文檔中說的那樣:

git插件分支配置

將提交ID輸入到“構建分支”設置中。

在“准備步驟”中,嘗試添加“執行外殼”並添加:

   git pull
   git checkout <commit version>

一種解決方法是:

  • 設置Git插件以構建一個特殊的“ build_br ”分支。
  • 將分支build_br重置為預期的提交
  • 通過Jenkins或Hudson將該分支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.

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