Comment cloner un travail dans Jenkins?

231

Jenkinsa le Gerritplugin en place afin que lorsque nous effectuons des enregistrements Gerrit, Jenkinseffectue une génération et s'il réussit, la modification dans Gerritest vérifiée. Si la construction échoue, ce n'est pas le cas. Je crois comprendre que cela est accompli grâce à des emplois créés en Jenkins. Nous avons maintenant créé une nouvelle branche ( git) et je suppose que je dois cloner les travaux existants pointant vers l'autre branche afin que ce même flux de travail se produise et que les builds soient effectués à chaque validation. Quelqu'un peut-il expliquer comment je clonerais ces emplois? Je ne semble pas voir un moyen de le faire via l'interface utilisateur, ni même un moyen de répertorier les emplois via l'interface utilisateur.

GregH
la source
7
Vous devriez pouvoir "Copier le travail existant" comme l'une des options de la page Nouveau travail. Voir stackoverflow.com/questions/3133537/…
nofinator

Réponses:

180

Pour copier un travail existant, accédez à http://your-jenkins/newJobet utilisez l'option "Copier le travail existant". Entrez le nom du travail existant - Jenkins vérifiera s'il existe.

L'onglet par défaut sur la première page de Jenkins devrait répertorier tous les travaux existants, mais votre prédécesseur a peut-être supprimé l'onglet. Vous pouvez créer un nouvel onglet répertoriant toutes les tâches dehttp://your-jenkins/newView.

gareth_bowles
la source
attention, lors de la copie d'un travail existant, vous devez fournir le nom (non encodé comme dans l'URL lors de l'accès au travail), donc si le nom du travail a des espaces, ils seront conservés. En bref, ne mettez que le nom d'origine du travail, rien d'autre.
Yauhen
Avec le plug-in ez-template installé, "Copier le travail existant" appliqué à un modèle ou à un travail utilisant un modèle crée un nouveau travail dépendant du modèle. Si vous voulez réellement une copie indépendante, vous pouvez alors supprimer la Use another job as a templateconfiguration.
user598656
146

Vous pouvez cloner un travail:

  1. Cliquez sur le lien «Nouvel élément»
  2. Donnez un nouveau nom à votre travail
  3. Sélectionnez le bouton radio «Copier l'élément existant»
  4. Donnez le nom du travail que vous souhaitez cloner
  5. Cliquez sur OK'

Enfin, vous avez votre nouveau travail, qui reflète toutes les fonctionnalités de votre travail cloné.

prudviraj
la source
117

Jenkins 2.9

  1. Jenkins> Nouvel élément

    Jenkins New Item

  2. Entrez un nom d'élément - Par exemple, "MY_CLONE"

    Entrez un nom d'élément

  3. Spécifiez le travail source ( copier depuis )> OK

    Lorsque vous commencez à taper le nom, les valeurs existantes seront trouvées. Notez que cela est sensible à la casse.

    Copier depuis OK

  4. Cliquez sur Enregistrer si vous souhaitez conserver les valeurs par défaut.

  5. Maintenant, les deux emplois sont disponibles au même endroit:

    Afficher les emplois

ROUMANIE_ingénieur
la source
3
Une image vaut mille mots. Impossible de trouver le petit menu déroulant pour la vie de moi. Mulțumiri
michaelok
34

New Item> Project Name= abc> Au lieu de Freestyle job, sélectionnezCopy from job name of already existing jobs

Si vous vous trouvez dans le dossier que vous souhaitez copier hors du répertoire, utilisez ../.

ksr
la source
Merci d'avoir mentionné../
Satevg
14

si vous souhaitez copier dans le même Jenkins mais dans différents sous-dossiers, créez un nouvel élément -> utilisez la copie depuis. le nouveau Job sera cloné dans le même répertoire. Utilisez ensuite l'option de déplacement pour le déplacer dans le répertoire souhaité

Ulka
la source
C'est ce que j'ai utilisé. La simple copie dans le même dossier n'est souvent pas suffisante. Merci!
donmartin
11

Toutes les réponses ci-dessus sont bonnes. Mais si vous avez créé des "dossiers" pour vos travaux, les choses sont légèrement différentes.

Cliquez sur le dossier sous lequel vous souhaitez créer un nouveau travail. Cliquez ensuite sur "Nouvel élément" dans le menu de gauche. Maintenant, l'URL de votre "nouveau travail" ressemblera à ceci (en supposant que vous créez le nouveau travail sous "mon-dossier"):

http://my-jenkins:8080/job/my-folder/newJob

Sous Enter an item name, entrez le nouveau nom de votre travail souhaité. Utilisez ensuite la zone de Copy fromtexte en bas. Saisissez le chemin de travail du travail source.

Par exemple, si votre travail source se trouve dans un dossier src-folder et que le nom du travail est src-job, vous devrez entrer src-folder/src-jobdans la case "Copier depuis".

J'espère que ça aide.

Bhushan
la source
J'essaie toujours de trouver un moyen de copier les structures de dossiers croisés: Jenkins ajoute le "travail" littéral pour chaque nouvel élément qui est un dossier, par exemple j'ai un travail chez localhost: 8080 / job / x / job / y / job_1 , où x et y sont des dossiers. job_1 est le vrai travail. Comment puis-je copier ce travail sur localhost: 8080 / job / x / job / z / job_1 ? J'ai essayé toutes les références au travail source sans succès.
Heinz
1
Allez à localhost:8080/job/x/job/y/job_1. Sur cette page, vous devriez voir Full project name. Essayez de l'utiliser lorsque vous spécifiez la source.
Bhushan
Si vous avez 2 dossiers folder1et folder2au même niveau et que vous voulez copier folder1\job1à folder2\job1, vous pouvez créer un nouvel élément dans le dossier , folder2puis utiliser ..pour revenir dans la structure du dossier et copier ../folder1/job1.
DRz
10

Vous pouvez également utiliser le plugin Copier le lien du projet .

Cela ajoutera un lien sur le panneau de gauche de votre projet:

entrez la description de l'image ici

L'écran suivant demandera le nouveau nom du travail:

entrez la description de l'image ici

lkisac
la source
10

Dans mon cas, j'ai dû copier un travail d'une instance jenkins à une autre.

J'ai donc d'abord regardé sous la structure de répertoire de l'ancien Jenkins (le nom du travail / répertoire; également noté le config.xml), puis sous la structure de répertoire du nouveau jenkins où j'ai ensuite créé un répertoire avec le même nom / travail et copié le config.xml sous ce répertoire nouvellement créé.

Ensuite, sous "Gérer Jenkins", je clique sur "Recharger la configuration à partir du disque". C'est tout.

Rohit Kataria
la source
merci pour le conseil "Recharger la configuration à partir du disque"!
Aliza
1
Ouais, faire comme ça quand je dois copier en vrac plusieurs éléments, avant de "recharger à partir du disque", vous pouvez également faire la magie manuelle requise dans la CLI telle que rechercher / remplacer certains paramètres, morceaux de texte, etc. dans config.xml . Notez que le nom du répertoire où se trouve config.xml est le nom de votre Job (ainsi, si contrairement à Rohit vous devez créer un nouveau Job, donnez-lui simplement un nom différent).
RAM237
À mon avis, lorsque vous avez plusieurs niveaux de dossiers avec de nombreux travaux à l'intérieur, c'est la meilleure option.
cabreracanal
3

Créez un nouvel élément et passez à la dernière option que vous trouverez pour copier à partir de l'existant, écrivez simplement le nom de votre travail actuel et vous aurez un clone de ce projet avec lequel travailler.

yug
la source
1

Je n'ai pas pu copier le travail Jenkins du sous-dossier. copy fromL'option n'a pas montré la suggestion que je cherchais. Sans utiliser la suggestion, la copie du nom du travail n'a pas fonctionné.

Donc, si vous souhaitez créer un travail à partir du dossier externe, vous devez d'abord créer le travail dans le sous-dossier, puis le déplacer dans un dossier différent où vous devez le placer.

priyanka_rao
la source
0

Toutes les réponses ici sont super utiles mais manquez un bug très bizarre à propos de Jenkins. Après avoir modifié les nouvelles configurations de travail, parfois si votre niveau de zoom est trop élevé, vous ne verrez peut-être pas le saveouapply option de bouton . Le bouton est présent sur la page et masqué par votre niveau de zoom, vous devez effectuer un zoom arrière jusqu'à ce que vous voyiez le bouton en bas à gauche de votre page.

Étrange, je sais!

avp
la source