2014-01-14 60 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

我不能告诉你我试过找多少次一点技术诀窍。谢谢。 –

相关问题