J'accède au numéro de build Jenkins dans le script Gradle en appelant:
def buildNumber = System..getenv('BUILD_NUMBER')
Cela fonctionne bien la première fois que je lance la construction. La deuxième fois que la génération est exécutée, le nombre n'est pas incrémenté, il reste identique à celui de la précédente exécution . Je ne me souviens pas d'avoir le même problème avec les versions antérieures.
Ma solution actuelle consiste à passer le commutateur --no-daemon à Gradle. Cependant, de cette façon, je ne peux pas bénéficier de la fonctionnalité de démon. Existe-t-il un moyen d'utiliser les démons tout en obtenant le bon numéro de construction dans la version Gradle?
Utilisez-vous Java 9? Avec Java 9, Gradle ne peut plus modifier l'environnement du démon - vous ne pouvez donc pas transmettre de propriétés à l'aide de variables d'environnement . L'avertissement suivant doit apparaître dans vos journaux:
Warning: Unable able to set daemon's environment variables to match the client because:
Java 9 does not support modifying environment variables.
Vous pouvez passer le 'BUILD_NUMBER'
en tant que propriété système (-DbuildNumber=$BUILD_NUMBER
) ou propriété du projet Gradle (-PbuildNumber=$BUILD_NUMBER
) à l'aide de la ligne de commande de Gradle.
Il semble que cela ait été discuté et résolu dans les forums Gradle , en lisant l’environnement System dans un bloc spécial:
class Globals {
String buildNr = System.getenv( 'BUILD_NUMBER' ).toString()
}
ext {
globals = new Globals()
}
// reference it like:
println "value of BUILD_NUMBER = " + globals.buildNr
Je construis normalement un magasin clé-valeur avec un horodatage utilisant redis pour stocker les numéros de build. De cette façon, je peux isoler et récupérer, et envoyer des données entre chaque client.