Commettre un fichier à partir de l'espace de travail de Jenkins pour SVN
J'ai un projet enregistré dans le dépôt Subversion et le compile avec Jenkins. Quand je lance la compilation, Jenkins tire de projet dans le répertoire d'espace de travail. J'ai besoin de commettre un fichier modifié à partir de Jenkins de l'espace de travail dans la Subversion.
Comment puis-je le faire??
Merci pour les réponses...
Dans le cadre de votre travail, vous pouvez exécuter une (bash) script qui pourrait fonctionner
svn commit <yourfile>
.OriginalL'auteur h0nzan | 2015-01-23
Vous devez vous connecter pour publier un commentaire.
Pouvez-vous donner un peu plus de détails? Exactement ce qu'est ce fichier, et pourquoi a-t-il besoin d'être commis dans le cadre de votre Jenkins construire? De quoi êtes-vous la construction (Java? C++? .NET?) et comment allez-vous construire?
Normalement, vous ne devriez pas mettre n'importe quoi sous contrôle de version, sauf source fichiers. C'est, si vous pouvez la construire, il ne faut pas mettre dans le contrôle de version. Beaucoup de gens aiment à s'engager leurs construite code dans leur système de contrôle de version, mais c'est généralement une grosse erreur. les fichiers binaires sont beaucoup plus grandes et rarement diff. Il en résulte une source référentiel de 90% du code compilé-presque tous qu'il est obsolète. Cela est particulièrement problématique avec Subversion qui n'ont pas un moyen de (facilement) supprimer du code obsolète.
Jenkins a une fonctionnalité qui vous permet de archive vos fichiers construits pour un accès facile. Nous utilisons tout le temps. Nous construisons notre code, et le programme est disponible dans Jenkins pour les téléchargements. Encore mieux, Jenkins va supprimer les anciennes versions (vous pouvez enregistrer la dernière X construit ou enregistrer ne construit plus jeune de plus de X jours). Et si vous avez une version release candidate de construire, vous pouvez de verrouillage à l'empêcher d'être supprimé.
Encore, si vous insistez sur le fait de faire cela, il ya plusieurs choses que vous pouvez faire et les choses que vous avez à regarder dehors pour:
Lorsque vous avez Jenkins installation de construire automatiquement à chaque changement, et que vous commettez un changement dans votre système de contrôle de version, Jenkins allons voir que, et de commencer une nouvelle construction. Ensuite, Jenkins enregistre le changement, voit le changement, et un autre de construction. Assurez-vous d'exclure les fichiers ou les répertoires de Jenkins considération quand il doit faire un build. Vous pouvez spécifier cette option lorsque vous spécifiez l'URL de la caisse.
Contrairement à la plupart des systèmes de contrôle de version Subversion a été conçu pour être client indépendant. Il y a un API pour les clients. Le standard de la Subversion en ligne de commande client n'est pas nécessaire dans Jenkins, alors assurez-vous qu'il est installé. Assurez-vous d'installer un client compatible avec le Jenkins construit en SVNKit client. Cela est particulièrement vrai depuis la Subversion 1.6, 1.7 et 1.8 prendre un client différent format.
Vous pouvez ajouter plusieurs étapes de génération de votre construction dans Jenkins. Il suffit d'ajouter un nouveau script shell ou le lot de script, et ajouter dans une
svn commit -m "comment of some sort"
étape. C'est assez simple à faire une fois que vous avez pris soin de les deux premiers points. Toutefois, s'il vous plaît réfléchissez soigneusement pourquoi vous faites cela.Comme je l'ai dit avant, 99.9999% du temps, vous ne devriez pas être à l'aide de Jenkins pour valider les modifications qu'il construit. Je suis sûr que 0.0001% raison existe quelque part, mais je ne l'ai jamais vu. Si vous souhaitez faire créer des fichiers accessibles à tous pour vos autres projets, d'utiliser Jenkin la capacité d'archiver les fichiers construits.
Si un produit Jenkins est des capacités est nécessaire pour construire un autre, vous pouvez utiliser le Copie Artefact Plugin pour copier construire un artefact à un autre poste, puis de déclencher le travail. Encore mieux, utilisez une version du système de stockage définitif. En Java, vous pouvez utiliser un Maven release référentiel comme Nexus ou Artifactory. À utiliser et à déployer des artefacts de ce référentiel, vous pouvez utiliser le Lierre ou Maven ou Gradle. Si vous êtes à la construction .NET, regarder Nuget.
Il n'y a pas de raison de vérifier en quoi que ce soit dans ce cas. Vous avez un fichier qui contient une chaîne de modèle qui obtient remplacé par un numéro de version. Dans Subversion, vous pouvez utiliser le numéro de révision Subversion. Mieux encore, nous utilisons le Jenkins emploi nom et le numéro de build, de sorte que nous pouvons revenir à l'Jenkins construire qui nous montre les choses comme données de test, et nous permet de retracer l'histoire. Sinon, tout ce que vous faites est de créer des milliers de Subversion des révisions qui contiennent absolument pas de l'histoire de l'information. Vous faites un
svn log
, et 50% de la liste des modifications sont dues à l'accumulation.Je ne suis certainement pas ce qui suggère commettre avec chaque IC à construire. Clairement, nous sommes en utilisant une terminologie différente, la libération de construire != construire. Dans le cas que je décris, il y a un public "marketing" numéro de version qui s'incrémente à chaque libération construire.
OriginalL'auteur David W.
Veuillez jeter un oeil à cette réponse: Jenkins, svn commit de post-construction
Il devrait être possible de s'engager dans une nouvelle étape de génération (ou un post étape de génération).
Mais être prudent avec le SVN de mise en page de l'espace de travail de Jenkins. La subversion plugin est à l'aide de la SVNKit pour traiter les commandes SVN. Votre espace de travail peut-être utiliser le SVN de mise en page 1.6.
Si le client SVN est plus récente sur votre ordinateur, votre SVN commit va échouer avec l'erreur suivante:
org.apache.la subversion.javahl.ClientException: La copie de travail doit être mis à niveau
svn: copie de Travail " C:.... est trop vieux (format 10, créé par la Subversion 1.6)
OriginalL'auteur Bruno Lavit
Vous pourriez utiliser avec prudence:
à injecter mot de passe dans
Build Environment
, cette commande injecte des mots de passe pour les construire comme des variables d'environnementAttention: ce mot de passe peut être visible dans le travail de déclenchement lot.
OriginalL'auteur Ato