簡體   English   中英

我如何知道Jenkins當前項目的內部版本號?

[英]How do I know the build number for the current project in Jenkins?

我知道BUILD_NUMBER環境變量; 但是,除非我弄錯了,否則這是一個全局變量,似乎在所有項目中共享。 這是一個問題,因為如果我有兩個代理運行作業,一個腳本可能會嘗試使用當前項目的內部版本號,而另一個腳本已經為另一個項目更新了它。

以下是一個示例場景:

  • 作業J 1啟動,執行一些腳本S. BUILD_NUMBER目前,比方說,500。
  • 有人手動啟動作業J 2 ,現在將BUILD_NUMBER設置為完全不同的東西,比如750。
  • 仍在運行的腳本S現在達到了它實際使用BUILD_NUMBER的點,現在設置為750(作業J 1的一個不可能的值,最多只有500)。

我理解這個嗎? 如果是這樣,我該如何解決這個問題?

BUILD_NUMBER不是系統的全局。 這是每個工作的本地。 在您的示例中,J1和J2將具有不同的BUILD_NUMBER(J1 = 500,J2-750)值,並且在作業期間它們將在作業內保持不變。

您可以使用以下命令獲取最新 (已完成或正在執行)的內部版本號:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/buildNumber
或者從作業本身,您可以使用環境變量:
${BUILD_NUMBER}

您也可以使用所有其他永久鏈接,例如:
/lastStableBuild/
/lastSuccessfulBuild/
/lastFailedBuild/
等等。

除非您使用Next Build Number等插件自定義構建號,否則您的下一個構建號將始終是最新構建號的增量

構建編號是每個作業 它們不是全局環境變量。
每次執行任何作業時,它都會將現有環境變量復制/繼承新會話中 然后,Jenkins / Hudson將所有作業參數和額外變量(包括${BUILD_NUMBER} )添加到該新會話中。 它們僅在該會話期間(即在作業運行期間)作為環境變量提供。 作業完成后, 將破壞會話 (以及為會話生成的所有額外變量)。

無法從另一個作業運行/會話訪問一個作業運行/會話的環境變量。 但是,您可以通過我提供的URL方法訪問另一個作業的/lastBuild/buildNumber 您也可以以相同的方式訪問/lastBuild/buildTimestamp

要訪問其他作業的作業參數 ,您可以使用:
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/json
要么
http://[JENKINS_URL]/job/[JOB_NAME]/lastBuild/api/xml
但是您需要根據需要解析輸出。

暫無
暫無

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

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