Question

Je configure le travail Jenkins pour télécharger des fichiers de Subversion vers SFTP. Publier sur SSH va assez bien, mais il télécharge tous les fichiers sur chaque version.

Pour certains projets, nous avons des milliers de fichiers et le téléchargement coûte plus d'une heure, ce n'est donc pas une option.

Quelqu'un peut-il suggérer un moyen de télécharger uniquement des fichiers modifiés lors de la dernière révision?

Était-ce utile?

La solution

Vous pouvez utiliser Plugin de subversion Pour interroger pour les modifications SVN et exécuter un travail qui ne fait rien en particulier. Appelons ça Votre PollingJob. Ensuite, appelez l'API Jenkins via HTTP comme ceci:

http://[jenkins_server]/api/xml?depth=2&xpath=/hudson/job[name='YourPollingJob']/build[id='BUILD_ID']/changeSet

BUILD_ID est l'identifiant de construction réel du travail que vous venez de gérer (le format habituel est quelque chose comme 2012-02-21_16-15-49). Examiner le résultat. Notez que toutes les informations sur les fichiers qui ont changé depuis la construction précédente sont là - il vous suffit de l'analyser.

Alors maintenant, vous pouvez faire ce qui suit: Votre PollingJob appellera un autre emploi - appelons-le Copier - et passez-lui c'est BUILD_ID comme paramètre (via le Plugin de déclenchement paramétré; Assurez-vous d'appeler Copier comme étape post-construction, pas comme une étape de construction). Copier Interrogera ensuite Jenkins via HTTP (comme ci-dessus, la meilleure façon est de le faire via wget), analyser les résultats et faire la copie.

Vous pouvez tout faire dans un seul travail, mais c'est un peu plus compliqué et difficile à déboguer.

De plus, il est probablement prudent de copier tout le référentiel une fois par jour (tous les soirs).

Autres conseils

Vous pouvez conserver ces fichiers dans un référentiel séparé. Il semble que des VC distribués comme Mercurial ou Git seraient les meilleurs pour cela dans votre cas. Vous pouvez soit le configurer dans l'espace de travail et ajouter une étape de build pour commettre des fichiers modifiés et pousser l'engagement sur le serveur où vous souhaitez le publier (ce qui devrait fonctionner tant que vous n'éloignez pas l'espace de travail ou ne construisez pas sur plusieurs machines) ou ajouter des étapes supplémentaires pour cloner / tirer le dépôt avec les artefacts du serveur sur lequel vous les gardez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top