web-dev-qa-db-fra.com

Changement de nom à Jenkins / Hudson

J'ai essayé de renommer un travail Hudson/Jenkins. Cependant, il n'a pas pu être renommé.

Existe-t-il un moyen de renommer le travail?

27
user2010736

Vous pouvez renommer le travail sélectionné via l'interface utilisateur jenkins en procédant comme suit:

job>configure>Advanced Project Options>Display Name

Une autre façon consiste à renommer le répertoire sur le Jenkins/hudson serveur puis restart le Jenkins.

62
MangeshBiradar

Par souci d'exhaustivité, je veux mentionner la mise à jour du nom du travail Hudson à l'aide de Groovy console de script :

// Groovy script to rename job in Hudson
import hudson.model.*;

def JOB_PATTERN = ~/^MY_JOB.*$/; //find all jobs starting with "MY_JOB".
def NEW_PART = "_NEW"

(Hudson.instance.items.findAll { job -> job.name =~ JOB_PATTERN }).each { job_to_update -> 
    println ("Updating job " + job_to_update.name);
    def new_job_name = job_to_update.name + NEW_PART; //Append new part to the job name
    println ("New name: " + new_job_name);
    job_to_update.renameTo(new_job_name);
    println ("Updated name: " + job_to_update.name);
    println("="*80);
}

Plutôt utile si vous devez mettre à jour plusieurs dizaines d'emplois en même temps.

Remarque : Le code suivant ne fonctionnera pas:

job_to_update.name = new_job_name;
job_to_update.save();

Définir le nom du travail sur une nouvelle configuration et enregistrer ne renommera pas le travail en cours, mais créera une copie de la configuration du travail avec un nouveau nom. De plus, dans ce cas, il peut y avoir des références cassées, donc Hudson devra faire recharger la configuration.

16
artdanil

La façon normale de renommer un travail:

Accédez à l'écran Configurer et modifiez le champ Nom du projet juste en haut . Cliquez ensuite sur Enregistrer et confirmez en cliquant sur Oui . (ne pas cliquez sur le bouton Appliquer à côté de Enregistrer , cela vous donnera un message d'erreur: JENKINS-17474 )

La modification du nom d'affichage ne renommera pas le travail, il modifie uniquement la façon dont il sera affiché. Il sera toujours trouvé sous son nom d'origine via la zone de recherche par exemple et qui apparaîtra également dans l'url.

Renommer les répertoires au niveau du système de fichiers ne devrait vraiment pas être nécessaire.

11
marc.guenther

Pour une compréhension rapide, j'ai utilisé quelques captures d'écran:

J'ai utilisé la version Jenkins: 2.148

Étape 1:

Sur l'écran d'accueil/liste des travaux, cliquez simplement sur l'option de travail.

enter image description here

OR

Ouvrez simplement les détails du travail, vous verrez l'option de gauche pour renommer.

enter image description here

Étape 2:

Entrez un nouveau nom et cliquez simplement sur Bouton Renommer

enter image description here

8
Rikin Patel
  1. Créez un nouveau travail avec un nouveau nom, il y aura une option de copy from un travail existant.
  2. copy from le travail que vous souhaitez renommer.
  3. Supprimez le travail d'origine.

Vous avez maintenant un travail identique avec un nom différent.

4
aditi

Selon l'exigence, je choisis généralement entre:

Travail > Configurer - modifier Nom du projet propriété - Options avancées du projet, appuyez sur Avancé ... , définissez la valeur pour Nom d'affichage

Ensuite Enregistrez le travail. Pas besoin de renommer au niveau du système de fichiers.

1
MrsTang

Je ne peux pas faire fonctionner le script de Marc, alors écrivez-en un basé sur le script Désactiver toutes les tâches comme indiqué ci-dessous. Il s'agit de renommer tout projet avec "Findur.OpenComponent" en "Findur.OpenComponents".

import hudson.model.*

renameChildren(Hudson.instance.items)

def renameChildren(items) {
  for (item in items) {
    if (item.class.canonicalName != 'com.cloudbees.hudson.plugins.folder.Folder') {     
      if (( m = item.name =~ /^(Findur.OpenComponent)(\..*)$/)){
        println(item.name)
        println m.group(1) + " " + m.group(2)
        newname = m[0][1] + 's' + m.group(2)
        item.renameTo(newname)
      }

    } else {
        renameChildren(((com.cloudbees.hudson.plugins.folder.Folder) item).getItems())
    }
  }
}
1
Jirong Hu

Utilisez la fonction Job.previousNames() pour renommer plusieurs travaux à l'aide du script Groovy dans un [générateur de travaux] (plug-in de générateur de travaux) (usine).

L'exemple suivant renomme les travaux ci.*_2 à ci.* (il supprime le dernier _2).

[
    [env: '01', hostname: 'Host01.intranet'],
    [env: '02', hostname: 'Host02.intranet'],
    [env: '03', hostname: 'Host03.intranet'],
    [env: '04', hostname: 'Host04.intranet'],
    [env: '05', hostname: 'Host05.intranet'],
    [env: '06', hostname: 'Host06.intranet'],
    [env: '07', hostname: 'Host07.intranet'],
    [env: '08', hostname: 'Host08.intranet'],
    [env: '09', hostname: 'Host09.intranet'],
    [env: '10', hostname: 'Host10.intranet'],
    [env: '11', hostname: 'Host11.intranet'],
    [env: '12', hostname: 'Host12.intranet'],
    [env: '13', hostname: 'Host13.intranet'],
    [env: '14', hostname: 'Host14.intranet'],
    [env: '15', hostname: 'Host15.intranet'],
    [env: '16', hostname: 'Host16.intranet'],
    [env: '17', hostname: 'Host17.intranet'],
    [env: '18', hostname: 'Host18.intranet'],
    [env: '19', hostname: 'Host19.intranet'],
    [env: '20', hostname: 'Host20.intranet'],
].each { Map config ->
    job("ci.${config.env}") {
        previousNames("ci.${config.env}_2")
        description("Continuous Integration on Host ${config.env}")
        logRotator {
            numToKeep(5)
            daysToKeep(45)
        }
        label('build')
        wrappers {
            colorizeOutput('gnome-terminal')
        }
    }
}
0
olibre