2013-10-04 140 views
15

Jenkins參數是否區分大小寫?我有一個參數化版本,需要在構建之前設置一個名爲「build_parameter」的ant參數。當我嘗試訪問Jenkins設置的$ {BUILD_NUMBER}時,我得到了爲ant參數設置的值。如果構建參數不區分大小寫,任何人都可以建議我解決此問題?我無法更改構建參數名稱,因爲我將不得不更改構建腳本(這不是一個選項)。謝謝!Jenkins - 如何訪問BUILD_NUMBER環境變量

+0

參考https://issues.jenkins-ci.org/browse/JENKINS-1322 –

+0

阿達什訥:我build_param eter和環境變量$ {BUILD_NUMBER}具有不同的值。對不起,不清楚。我需要一種方法來訪問Jenkins $ {BUILD_NUMBER}的值。但是,當我嘗試以環境變量($ {BUILD_NUMBER})的方式訪問它時,它會打印出另一個值。 – Anand

+0

根據我的調查,BUILD_NUMBER爲您提供當前內部版本號。所以你需要改變你的構建腳本。或者嘗試創建新變量並將其賦值BUILD_NUMBER並使用它。 –

回答

15

要回答你的第一個問題,Jenkins變量區分大小寫。但是,如果您正在編寫Windows批處理腳本,則它們不區分大小寫,因爲Windows不關心這種情況。

既然你對你的設置不是很清楚,那麼讓我們假設你正在使用一個ant build步驟來啓動你的ant任務。看看the Jenkins documentation(Adarsh給你的同一頁,但不同的章節),瞭解如何使Jenkins變量可用於你的螞蟻任務。

編輯:

因此,我將需要訪問環境變量$ {} BUILD_NUMBER構造URL。

那你爲什麼不用$BUILD_URL呢?它在擴展電子郵件插件中不可用嗎?

+0

彼得:請參考我的評論以上薩加爾的迴應。我需要獲取環境變量$ {BUILD_NUMBER}的值,但是我想它會被另一個參數(小寫參數)覆蓋。我使用的是Mac OS,我沒有在任何bash腳本中使用這些參數。我所要做的就是在擴展電子郵件通知電子郵件內容中使用它。 – Anand

+0

Peter:謝謝你的建議。在您提出建議後,我確​​實嘗試了$ {BUILD_URL}。它確實帶我到構建頁面。有沒有辦法直接指向它的神器,這樣它會直接從電子郵件中的鏈接開始神器的下載? – Anand

+3

這是$ {BUILD_URL}/artifact/

5

假設我理解你的問題,設置正確,

如果你正在嘗試使用腳本中的版本號,你必須選擇:

1)撥打電話時螞蟻,用途:ant -Dbuild_parameter=${BUILD_NUMBER}

2)改變你的腳本,以便:

<property environment="env" /> 
<property name="build_parameter" value="${env.BUILD_NUMBER}"/> 
+0

Sagar:我使用參數化構建選項來使用戶輸入build_number參數(注意:它位於lower_case中),然後在我的ant腳本中使用它。不過,我需要發送一封包含工件位置的電子郵件作爲URL。因此,我需要訪問環境變量$ {BUILD_NUMBER}來構造URL。現在,用戶輸入參數$ {build_number}和環境變量$ {BUILD_NUMBER}是不同的。但是,如果我將$ {BUILD_NUMBER}追加到URL,它總是佔用存儲在$ {build_number}中的值。 – Anand

+0

啊,好的。在這種情況下,爲什麼不在您的參數列表中將「build_number」更改爲「build.number」。它的意義仍然相同,人們不會將它與其他任何東西混淆。同時,它將完全不同於BUILD_NUMBER。我不確定是否存在大小寫敏感(您的服務器或Windows上的客戶端?),但這是您的最佳選擇。您仍然可以使用上面的第1點或第2點來將腳本的內部變量與參數和環境變量進行匹配。 – Sagar