[英]How do I know the build number for the current project in Jenkins?
我知道BUILD_NUMBER
環境變量; 但是,除非我弄錯了,否則這是一個全局變量,似乎在所有項目中共享。 這是一個問題,因為如果我有兩個代理運行作業,一個腳本可能會嘗試使用當前項目的內部版本號,而另一個腳本已經為另一個項目更新了它。
以下是一個示例場景:
BUILD_NUMBER
目前,比方說,500。 BUILD_NUMBER
設置為完全不同的東西,比如750。 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
但是您需要根據需要解析輸出。
使用Get Next Build Number插件。
https://wiki.jenkins-ci.org/display/JENKINS/Next+Build+Number+Plugin
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.