web-dev-qa-db-fra.com

Fichier de validation de l'espace de travail Jenkins vers le SVN

J'ai un projet enregistré dans le référentiel Subversion et le compile avec Jenkins. Lorsque j'exécute la construction, Jenkins extrait le projet dans le répertoire de l'espace de travail. J'ai besoin de valider un fichier modifié de l'espace de travail Jenkins dans Subversion. Comment puis-je le faire?

Merci pour les réponses ...

7
h0nzan

Pouvez-vous donner quelques détails supplémentaires? En quoi consiste exactement ce fichier et pourquoi doit-il être engagé dans le cadre de votre construction Jenkins? Que construisez-vous (Java? C++? .NET?) Et comment le construisez-vous?

Normalement, vous ne devez rien mettre sous contrôle de version à l'exception de source files. Autrement dit, si vous pouvez le construire, vous ne devriez pas le placer dans le contrôle de version. Beaucoup de gens aiment intégrer leur code construit dans leur système de contrôle de version, mais c'est généralement une grosse erreur. les fichiers binaires sont beaucoup plus gros et rarement diff. Cela se traduit par un référentiel source composé à 90% de code, ce qui est presque entièrement obsolète. Cela est particulièrement problématique avec Subversion qui n’a pas la possibilité de supprimer (facilement) du code obsolète.

Jenkins a une fonctionnalité qui vous permet de archiver vos fichiers construits pour un accès facile. Nous l'utilisons tout le temps. Nous construisons notre code, et le programme est disponible en téléchargement à Jenkins. Mieux encore, Jenkins supprimera les versions plus anciennes (vous pouvez sauvegarder les dernières versions de X ou seulement celles de moins de X jours). Et si vous avez une version validée, vous pouvez lock cette version pour empêcher sa suppression.


Néanmoins, si vous insistez pour cela, vous pouvez faire plusieurs choses et vous devez faire attention:

  1. Lorsque Jenkins est configuré pour créer automatiquement chaque modification et que vous validez une modification dans votre système de contrôle de version, Jenkins le détecte et lance une nouvelle version. Ensuite, Jenkins enregistre le changement, voit le changement et effectue une nouvelle construction. Assurez-vous d’exclure les fichiers ou les répertoires de la considération de Jenkins au moment de la compilation. Vous pouvez spécifier cela lorsque vous spécifiez l'URL de la caisse.

  2. Contrairement à la plupart des systèmes de contrôle de version, Subversion a été conçu pour être indépendant du client. Il y a une API réelle pour les clients. Le client de ligne de commande Subversion standard n’est pas nécessaire dans Jenkins, assurez-vous qu’il est installé. Assurez-vous d’installer un client compatible avec le client SVNKit intégré à Jenkins. Cela est d'autant plus vrai que Subversion 1.6, 1.7 et 1.8 prennent tous un format de client différent.

  3. Vous pouvez ajouter plusieurs étapes de construction à votre construction dans Jenkins. Ajoutez simplement une nouvelle action de script de script ou de commande en mode batch, puis ajoutez une étape svn commit -m "comment of some sort". C'est assez simple à faire une fois que vous avez pris en charge les deux premiers points. Cependant, réfléchissez bien pourquoi vous faites cela.

Comme je l'ai déjà dit, 99,9999% du temps, vous ne devriez pas utiliser Jenkins pour valider les modifications qu'il a créées. Je suis sûr que 0,0001% raison existe quelque part , mais je ne l'ai jamais vu. Si vous souhaitez rendre les fichiers construits universellement accessibles à vos autres projets, utilisez la capacité de Jenkin d’archiver des fichiers construits. 

Si un produit que Jenkins est en train de construire est nécessaire pour une autre construction, vous pouvez utiliser le Copier le plug-in d'artefact pour copier un artefact de construction dans un autre travail, puis le désactiver. Mieux encore, utilisez un système de référentiels de versions. En Java, vous pouvez utiliser un référentiel de versions Maven tel que Nexus ou Artifactory. Pour utiliser et déployer des artefacts dans ce référentiel, vous pouvez utiliser Ivy, Maven ou Gradle. Si vous construisez .NET, regardez Nuget.

5
David W.

Regardez cette réponse: Jenkins svn commit post-build

Il devrait être possible de s’engager avec une nouvelle étape de construction (ou une étape post-construction).

Mais soyez prudent avec la disposition SVN de l'espace de travail Jenkins. Le plugin Subversion utilise SVNKit pour gérer les commandes SVN. Votre espace de travail utilise peut-être la mise en page SVN 1.6.

Si le client SVN est plus récent sur votre ordinateur, votre validation SVN échouera avec l'erreur suivante: Org.Apache.Subversion.javahl.ClientException: la copie de travail doit être mise à niveau Svn: La copie de travail 'C: .... est trop ancienne (format 10, créé par Subversion 1.6)

2
Bruno Lavit

Vous pouvez utiliser avec précaution: 

svn commit -username someuser -password %injected_password% 

pour injecter un mot de passe dans Build Environment, cette commande injecte des mots de passe dans la construction en tant que variables d'environnement

Attention : ce mot de passe est peut-être visible dans le lot de déclenchement du travail.

0
Ato