- Formatage de données JSON (readJSON)
Pour analyser du JSON dans une pipelien Jenkins, il est recommandé d'utiliser la méthode intégrée readJSON. Voici un exemple modifié :
def contenuJson = '{"status": "succes", "code": 200}'
def resultat = readJSON text: contenuJson
println "Statut : ${resultat.status}"
Évitez d'utiliser des bibliothèques Groovy natives comme JsonSlurper directement, car cela peut poser des problèmes de sérialisation dans les pipelines.
- Utilisation sécurisée des identifiants
Pour manipuler des secrets (mots de passe, tokens) dans une pipelnie, utilisez la directive withCredentials. Exemple avec une variable d'environnement :
withCredentials([usernamePassword(credentialsId: 'mon-id-secret', usernameVariable: 'UTILISATEUR', passwordVariable: 'MOT_DE_PASSE')]) {
echo "Connexion avec l'utilisateur : $UTILISATEUR"
}
- Récupération du code source (checkout)
La commande checkout permet de cloner des dépôts. Voici des exemples pour Git et SVN avec des paramètres modifiés :
// Exemple Git avec une branche spécifique
checkout([$class: 'GitSCM',
branches: [[name: '*/develop']],
extensions: [[$class: 'CloneOption', depth: 1]],
userRemoteConfigs: [[credentialsId: 'git-creds', url: 'https://github.com/projet/depot.git']]])
// Exemple SVN avec chemin distant
checkout([$class: 'SubversionSCM',
locations: [[credentialsId: 'svn-creds', remote: 'https://svn.exemple.com/projet/trunk']],
workspaceUpdater: [$class: 'UpdateUpdater']])
- Publication de rapports HTML (publishHTML)
Pour générer des rapports HTML dans Jenkins, utilisez le plugin publishHTML. Exemple :
publishHTML([allowMissing: false,
alwaysLinkToLastBuild: true,
keepAll: false,
reportDir: 'resultats/',
reportFiles: 'rapport_tests.html,rapport_couverture.html',
reportName: 'Rapport de tests automatisés',
reportTitre: 'Détails des tests'])
Les paramètres reportDir et reportFiles spécifient l'emplacement et les noms des fichiers à publier.
- Interaction uitlisateur (input)
La directive input permet de demander des entrées à l'utilisateur. Exemple avec une case à cocher :
def choixUtilisateur = input message: 'Sélectionnez les modules à déployer :',
ok: 'Confirmer',
parameters: [extendedChoice(description: 'Modules disponibles',
name: 'modules_selectionnes',
type: 'PT_CHECKBOX',
value: 'module1,module2,module3',
visibleItemCount: 5)]
echo "Modules choisis : $choixUtilisateur"
- Informations sur l'utilisateur de la construction (BuildUser)
Avec le plugin Build User Vars, vous pouvez récupérer des détails sur l'utilisateur qui a lancé la construction :
wrap([$class: 'BuildUser']) {
echo "Nom complet : $BUILD_USER"
echo "ID utilisateur : $BUILD_USER_ID"
echo "Email : $BUILD_USER_EMAIL"
}
- Envoi de requêtes HTTP (httpRequest)
Pour effectuer des appels API, utilisez le plugin HTTP Request. Exemple modifié :
def apiUrl = "https://api.exemple.com/v1/status"
def reponse = httpRequest authentication: 'api-token',
url: apiUrl,
contentType: 'APPLICATION_JSON',
validResponseCodes: '200:399'
echo "Code de réponse : ${reponse.status}"
- Notifications par email (emailext)
Pour envoyer des emails avec un contenu HTML, utilisez emailext. Exemple simplifié :
def sujet = "Résultat de la construction : ${JOB_NAME} #${BUILD_ID}"
def corps = """
<html>
<body>
<p>Construction numéro : ${BUILD_ID}</p>
<p>Statut : ${currentBuild.result}</p>
<a href="${BUILD_URL}">Voir le détail</a>
</body>
</html>
"""
emailext body: corps, subject: sujet, to: 'equipe@example.com'
- Nettoyage de l'espace disque
Pour libérer de l'espace, supprimez les anciens artefacts avec la commande cleanWs du plugin Workspace Cleanup :
cleanWs(patterns: [[pattern: 'resultats/*.log', type: 'INCLUDE']],
deleteDirs: true)