Définissez une variable et définissez-la sur une valeur par défaut en cas de problème lors de la définition

J’ai le code suivant dans ma build.gradle

Le contenu de version.properties est:

 buildVersion=1.2.3 
  • La valeur de la variable $v lors de la construction de Gradle est la suivante: 1.2.3
  • La valeur de la variable $artifactoryVersion dans la version JENKINS est la suivante: 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 graduer le script de construction pendant la construction de Jenkins.

MAIS, lorsque je build.gradle ce build.gradle sur mon bureau où je n’ai pas de variable BUILD_NUMBER disponible ou définie dans mes variables ENVIRONNEMENT, je reçois une erreur disant que sortingm() ne peut pas fonctionner sur null. (comme il n’y a pas de BUILD_NUMBER pour Desktop / build local).

J’essaie de trouver un moyen

  1. Que dois-je coder dans mon script pour que si BUILD_NUMBER n’est pas disponible, alors au lieu de traiter graduellement une erreur, il définirait 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 var1 à un numéro de code Jenkins valide s’il est disponible et défini sur une valeur, sinon s’il est 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 n’a pas d’erreur lors de la construction du bureau. Je sais que pendant le développement de Jenkins, ça marche 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'].sortingm() if( jenkinsBuild.length() > 0 ) { artifactoryVersion = "$v.$jenkinsBuild" } 

Tout ce dont vous avez besoin est un code Java / Groovy standard:

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

Le code ci-dessus utilise l’opérateur “elvis” de Groovy, et est 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"