web-dev-qa-db-fra.com

Définir une variable et lui attribuer une valeur par défaut en cas de problème lors de la définition

J'ai le code suivant dans mon build.gradle

Le contenu de version.properties Est:

buildVersion=1.2.3
  • La valeur de la variable $v Pendant la construction de Gradle se présente sous la forme suivante: 1.2.3
  • La valeur de la variable $artifactoryVersion Dans la construction JENKINS se présente comme suit: 1.2.3 .1, 1.2.3 .2, 1.2.3 .x ... et ainsi de suite où le 4ème chiffre est Jenkins BUILD_NUMBER disponible pour évaluer le script de construction pendant la construction de Jenkins.

MAIS, lorsque j'exécute ce build.gradle Sur mon bureau où je n'ai pas de variable BUILD_NUMBER disponible ou définie dans mes variables ENVIRONMENT, j'obtiens une erreur disant que trim() ne peut pas fonctionner avec la valeur null. (comme il n'y a pas de BUILD_NUMBER pour la construction de bureau/locale).

J'essaie de trouver un moyen, c'est-à-dire.

  1. Que dois-je coder dans mon script pour que, si BUILD_NUMBER Ne soit pas disponible, alors, au lieu du traitement de génération dégradé échouant pour une erreur, il aurait défini jenkinsBuild = "0" (Codé en dur) sinon, choisissez ce qu'il obtient pendant la construction de Jenkins.

    Par exemple, dans Bash, nous définissons une variable var1=${BUILD_NUMBER:-"0"} Qui définira var1 Sur un nombre Jenkins BUILD valide s'il est disponible et défini sur une valeur, sinon s'il s'agit de NULL, alors var1 = "0".

  2. JE NE VEUX PAS que chaque développeur/utilisateur définisse ce BUILD_NUMBER Dans un fichier de propriétés. Tout ce que je veux, c'est que si cette variable n'existe pas, alors le code devrait mettre "0" Dans la variable jenkinsBuilds et ne pas avoir d'erreur lors de la génération de postes de travail. Je sais que pendant la construction de Jenkins, ça fonctionne 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"
}
46
Arun Sangal

Tout ce dont vous avez besoin, c'est du code Java/Groovy standard:

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

Le code ci-dessus utilise l'opérateur "elvis" de Groovy et constitue un raccourci pour le code suivant, qui utilise l'opérateur ternaire de Java:

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