簡體   English   中英

你如何在Jenkins構建推廣步驟中推送git標簽?

[英]How do you push a git tag in a Jenkins build promotion step?

我有藍本構建推廣過程中這種討論(使用促進構建插件。)一般情況下,它的偉大工程。 然而,對於促銷過程的一些“風味”(並非所有),我想推出一個git標簽。 我通過“執行shell”步驟實現了這一步驟作為促銷操作之一。 這一直運作良好,然后今天失敗了,下面的錯誤。 我懷疑我登陸了一個構建奴隸,其中工作區尚未為git初始化 - 而且我過去一直很幸運(使用Cloudbees - 動態分配構建從屬)。

我已經嘗試了“git發布者”,但它似乎期望你處於git源插件已經完成其工作的環境中。 有沒有人能夠從構建促銷步驟中可靠地推送標簽?

+ git checkout develop
fatal: Not a git repository (or any of the parent directories): .git

到目前為止,這對我有用:

git tag MYTAG ${PROMOTED_GIT_COMMIT}
git push --tags

我不確定我是否簡化了問題,在我的環境中,促銷似乎是在歸檔工件所在的master上執行的。

免責聲明:我對Git一無所知。

在執行促銷時,您永遠不應該依賴${WORKSPACE}下的文件。 最好的情況是,它們可能比您正在執行的作業運行促銷更新,並且在最壞的情況下,工作區在執行新結帳時可能是空的(或者在您的情況下不存在)。 這就是為什么在您鏈接討論中 ,我正在使用Copy Artifacts步驟。 請注意,該步驟從歸檔工件復制,而不是從作業工作區復制,應始終將其視為臨時和瞬態。

如果您需要依賴SCM結帳進行促銷流程,則必須:

  • 執行命令行檢出(Jenkins不會跟蹤),或
  • 使用SCM checkout運行另一項工作(Jenkins跟蹤的所有好處)。

在這兩種情況下,我都假設您要將SCM修訂號傳遞給升級過程(用於命令行檢出,或作為調用另一個作業的參數)。 “觸發/調用構建”步驟有一個選項來傳遞父SVN修訂版,但我不知道它是否具有相同的Git選項。 在最壞的情況下,在“構建”作業執行時,將Git修訂存儲到文件中,並將該文件與其余工件一起存檔。 在促銷過程中,使用“復制工件”步驟檢索已保存的文件,然后從該文件中提取Git修訂版。 您可以使用EnvInject插件來幫助完成所有這些操作,並將提取的Git修訂版作為促銷過程的環境變量提供。

我的建議是你的推廣過程中的第二個“觸發/調用構建”步驟,它觸發一個專門用於你想要的工作,並傳遞一個Git修訂版參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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