avertissement: je suis nouveau sur Jenkins.
Je travaille sur un Jenkins qui doit être exécutable localement. Le but est de pouvoir éditer nos jobs et de les tester localement avant de pousser nos modifications vers le «vrai» Jenkins.
Nous travaillons avec Jenkinsfile
et job-DSL (je ne sais pas si cela compte).
Je voudrais pouvoir éditer mon Jenkinsfile
localement, puis aller sur mon hôte local: 8080 et dire à Jenkins de exécuter ce Jenkinsfile
pour mettre à jour nos emplois.
Premièrement, je forcerais Jenkins à lire le nouveau Jenkinsfile
. Je pense que c'est faisable avec une sorte de travail (je suppose).
Ensuite, je voudrais également exécuter un watcher sur les fichiers de travail ( .groovy
, .dsl
et Jenkinsfile
) pour déclencher la mise à jour .
Je sais comment récupérer Jenkinsfile
depuis SCM pour que Jenkins puisse s'occuper de tout mais je ne sais pas comment exécuter un Jenkinsfile
qui est déjà sur le même système de fichiers que Jenkins, à l'intérieur du jenkins_home
(je peux le mettre n'importe où).
Je suis à peu près sûr que cette question est un peu stupide, mais je n'y parviens pas.
Je sais que Jenkinsfile
semble être utilisé uniquement lors de l'utilisation de SCM, comme le dit la documentation. Mais lorsque vous créez un pipeline à l'aide de l'interface utilisateur, vous écrivez un Jenkinsfile
(n'est-ce pas?) Il devrait donc être possible de déclencher les mêmes fonctions que celles utilisées lorsque Jenkins interprète votre pipeline créé via l'interface utilisateur. P >
3 Réponses :
J'ai décidé d'avoir au travail où j'ai un script de pipeline, que je modifie directement. Un deuxième travail qui vérifie ma branche de fonctionnalités. Et un travail de production qui vérifie la branche principale.
Je peux donc expérimenter sans trop gâcher mon dépôt git.
Grâce à JustAProgrammer et Holleoman, je comprends qu'il n'y a aucun moyen de le faire correctement.
Jenkins est conçu pour interagir avec un SCM, faire toutes les choses localement semble absurde ou n'est pas la façon de penser de Jenkins.
Je ferme cette question pour le moment!
Merci.
Utilisez le plugin File Scm pour sélectionner un fichier jenkins local.
L'interface utilisateur ne crée pas de fichier Jenkins pour vous. Habituellement, vous configurez votre pipeline en en créant un dans l'interface utilisateur. Dans la plupart des cas, le pipeline sera lié à un SCM spécifique (ou même à une branche). C'est ici que vous pouvez tester vos différentes versions du Jenkinsfile (dev-branch par exemple). Jenkins utilisera toujours le fichier Jenkins de votre branche afin que vous puissiez le modifier aussi souvent que vous le souhaitez. Je ne pense pas que vous puissiez faire cela sans un SCM.
Merci d'avoir répondu. J'avais peur de cette réponse. Donc, si vous voulez pouvoir exécuter un Jenkins localement, vous devez apporter des modifications à votre travail, pousser vos modifications dans votre SCM, puis récupérer ces modifications via Jenkins? BTW je manque de vocabulaire. Je pensais que les pipelines étaient créés via des
Jenkinsfile
(donc tout le script commençant parpipeline {
était unJenkinsfile
).Oui (au moins je ne connais pas une autre manière d'exécuter un Jenkinsfile). C'est pour cela que Jenkins a été conçu. Vous souhaitez exécuter des actions spécifiques (celles du fichier Jenkins) après que quelqu'un a poussé des modifications dans votre SCM. Vous pouvez essayer de rechercher quelque chose comme 'Jenkins avec la branche git locale' mais je ne peux pas vous dire si vous trouverez malheureusement ce que vous cherchez.
D'accord, cela rend les choses beaucoup plus claires, je trouve toujours que cela semble «inconfortable» de travailler sur nos pipelines parce que nous devons pousser et tirer pour tester tous les changements mais je comprends! Merci beaucoup.
Si vous utilisez 'git commit --amend' et qu'une branche de développement fonctionnant avec un Jenkinsfile est assez bien - pas le meilleur - mais pas très ennuyeux. Amusez-vous avec Jenkins!