2014-01-14 56 views
35

過程中不順心的事我已經在我的version.propertiesbuild.gradle定義一個變量,並將其設置爲默認值,如果定義

目錄下面的代碼是:

buildVersion=1.2.3 
  • 價值$v變量的過程中Gradle版本來了:1.2.3
  • JENKINS構建中的變量$artifactoryVersion的值爲:1.2.3。 ,1.2.3。 ,1.2.3。 x ...等等,Jenkins構建期間,第4位是詹金斯BUILD_NUMBER可用於gradle構建腳本。

但是,當我運行這個build.gradle我的桌面,我沒有BUILD_NUMBER變量用或者以我的環境變量設置,我得到一個錯誤說trim()不能空工作。 (因爲Desktop/local build沒有BUILD_NUMBER)。

我試圖找到一種方法,即

  1. 我應該在我的腳本代碼,這樣,如果BUILD_NUMBER不可用,則不用的gradle這個構建過程中失敗的一個錯誤,它會設置jenkinsBuild = "0"(硬編碼),否則,選擇它在Jenkins構建過程中得到的結果。

    對於例如:在Bash中,我們設置一個變量var1=${BUILD_NUMBER:-"0"}將設置var1爲有效詹金斯版本號(如果可用),並設置一個值,否則如果是NULL,則var1 = "0"

  2. 我不想讓每個開發人員/用戶在某個屬性文件中設置此BUILD_NUMBER。我想要的是,如果這個變量不存在,那麼代碼應該把"0"放在jenkinsBuilds變量中,並且在桌面構建期間不會出錯。我知道在Jenkins構建期間,它工作正常。

// Build Script 
def fname = new File('version.properties') 
Properties props = new Properties() 
props.load(new FileInputStream(fname)) 
def v = props.get('buildVersion') 


def env = System.getenv() 
def jenkinsBuild = env['BUILD_NUMBER'].trim() 
if(jenkinsBuild.length() > 0) { 
    artifactoryVersion = "$v.$jenkinsBuild" 
} 

回答

74

所有你需要的是一些普通的Java/Groovy代碼:

def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0" 

上面的代碼使用Groovy的 「貓王」 操作,是下面的代碼,速記這使用Java的三元運算符:

def buildNumber = System.getenv("BUILD_NUMBER") 
def jenkinsBuild = buildNumber != null ? buildNumber : "0" 
+0

我不能告訴你我試過找多少次一點技術訣竅。謝謝。 –

相關問題