variables - tipos - Defina una variable y establézcala en un valor predeterminado si algo sale mal durante la definición
tabla de variables investigacion (1)
Tengo el siguiente código en mi build.gradle
Los contenidos en version.properties
son:
buildVersion=1.2.3
- El valor de la variable
$v
durante la compilación de Gradle viene como: 1.2.3 - El valor de la variable
$artifactoryVersion
en JENKINS build viene como: 1.2.3. 1 , 1.2.3. 2 , 1.2.3. x ... y así sucesivamente, donde el cuarto dígito es Jenkins BUILD_NUMBER disponible para gradle script durante la compilación de Jenkins.
PERO, cuando estoy ejecutando este build.gradle
en mi escritorio donde no tengo la variable BUILD_NUMBER disponible o configurada en mis variables ENVIRONMENT, aparece un error que dice que trim()
no puede funcionar en null. (ya que no hay BUILD_NUMBER
para Desktop / local build).
Estoy tratando de encontrar una forma, es decir
¿Qué debo codificar en mi secuencia de comandos para que si
BUILD_NUMBER
no está disponible, en lugar de fallar el procesamiento de compilación de un error, establezcajenkinsBuild = "0"
(códigojenkinsBuild = "0"
) de lo contrario, elija lo que obtiene durante la compilación de Jenkins.Por ejemplo: en Bash, establecemos una variable
var1=${BUILD_NUMBER:-"0"}
que establecerávar1
en un número de BUILD Jenkins BUILD si está disponible y configurado en un valor; de lo contrario, si es NULL, entoncesvar1 = "0"
.NO
BUILD_NUMBER
que cada desarrollador / usuario configure esteBUILD_NUMBER
en algún archivo de propiedad. Todo lo que quiero es que, si esta variable no existe, el código debería poner"0"
en la variable jenkinsBuilds y no generar errores durante las compilaciones de escritorio. Sé durante la compilación de Jenkins, está funcionando bien.
// 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"
}
Todo lo que necesita es un código Java / Groovy normal:
def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"
El código anterior utiliza el operador "elvis" de Groovy, y es una forma abreviada del siguiente código, que usa el operador ternario de Java:
def buildNumber = System.getenv("BUILD_NUMBER")
def jenkinsBuild = buildNumber != null ? buildNumber : "0"