web-dev-qa-db-fra.com

Définissez le nom et la description du pipeline à partir de Jenkinsfile

J'essaie de faire un poc de pipeline jenkins comme code. J'utilise le plug-in de dossier d'organisation Github pour analyser les organisations Github et créer des emplois par branche. Existe-t-il un moyen de définir explicitement les noms des travaux de pipeline qui proviennent de Jenkinsfile? Je veux également ajouter quelques descriptions pour les emplois.

17
HarshaB

Vous devez utiliser currentBuild comme ci-dessous. La partie node est importante

node {
    currentBuild.displayName = "$yournamevariable-$another"
    currentBuild.description = "$yourdescriptionvariable-$another"
}

Modifier: au-dessus d'un, renommez la génération où la question d'origine concerne le changement de nom des travaux. Le script suivant dans le pipeline fera cela (cela nécessite autorisations appropriées)

item = Jenkins.instance.getItemByFullName("originalJobName")
item.setDescription("This description was changed by script")
item.save()
item.renameTo("newJobName")
20
Jayan

Je suis en retard à la fête sur celui-ci, mais cette question m'a forcé à discuter #jenkins où j'ai passé la majeure partie de ma journée aujourd'hui. Je voudrais remercier @ tang ^ de ce chat pour avoir aidé à résoudre ce problème d'une manière gracieuse pour ma situation.

Pour définir la description du JOB et le nom d'affichage du JOB pour un enfant dans un pipeline DÉCLARATIF à plusieurs branches, utilisez le bloc d'étapes suivant dans une étape:

steps {
    script {
        if(currentBuild.rawBuild.project.displayName != 'jobName') {
            currentBuild.rawBuild.project.description = 'NEW JOB DESCRIPTION'
            currentBuild.rawBuild.project.setDisplayName('NEW JOB DISPLAY NAME')
        }
        else {
            echo 'Name change not required'
        }
    }
}

Cela nécessitera que vous approuviez les appels de script individuels via la méthode d'approbation Jenkins sandbox, mais c'était beaucoup plus simple que tout ce que j'avais trouvé sur le Web pour renommer les enfants réels du pipeline parent. La dernière chose à noter est que cela devrait fonctionner dans un fichier Jenkins où vous pouvez utiliser les variables d'environnement pour manipuler les éléments de travail définis.

6
Joshua

J'ai essayé d'utiliser l'extrait de code de la réponse acceptée pour décrire mon pipeline Jenkins dans Jenkinsfile. J'ai dû envelopper l'extrait de code dans la fonction avec @NonCPS annotation et utilisez def pour la variable item. J'ai placé un extrait de code à la racine de Jenkinsfile, pas dans la section node.

@NonCPS 
def setDescription() { 
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME) 
    item.setDescription("Some description.") 
    item.save()
}

setDescription()
5
Mikalai Parafeniuk