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?
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
.
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.
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.
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.
OR
Ouvrez simplement les détails du travail, vous verrez l'option de gauche pour renommer.
Étape 2:
Entrez un nouveau nom et cliquez simplement sur Bouton Renommer
copy from
un travail existant.copy from
le travail que vous souhaitez renommer.Vous avez maintenant un travail identique avec un nom différent.
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.
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())
}
}
}
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')
}
}
}