À l'aide d'Hudson pour construire les paquets RPM
J'ai un projet C mis en place dans d'Hudson faire nighly builds, j'ai aussi un .tr /min dans le fichier de spécification utilisé pour la création de rpm à partir de ces sources.
Quelqu'un a une expérience sur la façon de construire des rpm de tout ceci à l'aide d'Hudson ?
Droit maintenant, la seule solution que je vois est de mettre en place un travail en cours d'exécution d'un script qui vérifie svn exportations les sources ,crée une archive et le régime de construire. Cela ne semble pas bien s'intégrer avec Hudson - par exemple, comment puis-je récupérer les artefacts ?
OriginalL'auteur leeeroy | 2010-02-09
Vous devez vous connecter pour publier un commentaire.
Ne sais pas si j'ai une très bonne réponse à votre question.
Ce qui a fonctionné pour moi, mais se sent en surpoids pour vos besoins.
J'ai eu une quantité décente de succès avec cela à l'aide de maven plugin tr /min
http://mojo.codehaus.org/rpm-maven-plugin/
fondamentalement, DSL pour la création de fichiers de spec, portant sur les sources, etc.
L'envers est un artefact maven que hudson peut suivre plus facilement.
J'ai ajouté un peu groovy script dans le maven build (http://docs.codehaus.org/display/GMAVEN/Executing+Groovy+Code) pour mes besoins à la fin de la mise à jour automatique d'un dépôt yum qui héberge le construit, mais dans votre situation, je serais probablement utiliser le script avant de le rpm plugin est utilisé pour faire appel.
Honnêtement, je pense que la solution ci-dessus est un peu lourde, surtout en raison de la verbosité de faire des scripts dans maven, mais il fonctionne, et pour nous, avec un tas de développeurs java qui savent maven, fonctionne bien.
OriginalL'auteur JoshMahowald
Je l'ai fait pour les deux projets. Il n'est pas difficile, mais dépend fortement de votre flux de travail. La question la plus importante est: que voulez-vous faire avec ce paquet après il a été construit? Dans mon précédent projet, le paquet est allé jusqu'à le dépôt, de sorte que je n'ai pas besoin de collecter les artefacts.
De toute façon, un couple de trucs à moi:
.rpmmacros
. Le mien ressemble à%_topdir /srv/build
, mais vous êtes bien sûr libre de définir plusieurs macros.rpmbuild -bb project.spec
sur elle. Depuis ce script téléchargé le Rpm pour le dépôt, je n'ai pas besoin d'autre chose en plus de ce script unique, sens j'ai utilisé Hudson comme une avancée cron (gestionnaire automatique de construire trois fois par jour, le manuel s'appuie sur la souris). Il était encore SVN-déclenché cependant, de sorte que nous n'avons pas construit inutilement.Je voulais avoir nettoyer les paquets et de conserver également la possibilité de construire, à partir de la ligne de commande. Pour cette raison, mon RPM spec a créé sa propre archive automatiquement à partir d'un SVN export. J'ai pris l'exportation de fonctionnalités pour le projet en cours, de sorte qu'il ressemble à ceci maintenant:
et plus tard dans la spec:
Dans mon projet actuel, j'ai partagé le script en plusieurs parties, de sorte que mon actuel Jenkins travail ne se compose que de
rpmbuild ...
de commande. La raison était que je n'ai pas besoin de construire de différentes branches.En conclusion: la construction des Rpm est possible via Jenkins, il est assez facile, puisque la partie la plus difficile est de faire un nettoyage de spécification RPM. Tout le reste dépend de vos besoins, qui peuvent être corrigés avec un peu de script ou un plugin Jenkins.
Comment construire-une-archive du script de fonctionner lorsque le RPM est alors construit de façon indépendante à l'extérieur de la svn scaffoldng ? Alors que c'est un test que trop de ne pas l'exécuter, la capacité de confirmer indépendant de construire est un très précieuse.
OriginalL'auteur Nikolai Prokoschenko
Je suis d'accord avec l'au-dessus - une fois que vous pouvez créer un RPM à partir de n'importe quel répertoire vous pouvez créer un script pour le processus de génération et de le mettre directement dans la baie d'Hudson.
Voici la magie:
Cela définit le répertoire de niveau supérieur pour le processus de construction que le répertoire en cours.
J'ai eu le même problème et a documenté le processus complet à l'
http://www.itforeveryone.co.uk/rpm-build-hudson-jenkins.html
OriginalL'auteur Doug Gibbons
Je ne l'ai pas fait moi-même, mais pense que vous pourriez avoir Hudson construire les rpm mais avec le rpm zone de construction en cours au sein de l'Hudson espace de travail. Alors vous seriez en mesure de relier les rpm comme des artefacts.
Ici est la façon dont vous utilisez une version différente de la zone avec rpm.
OriginalL'auteur Mark
Ce que vous êtes en utilisant comme outil de construction sur l'hudson? Faire?
Vous pouvez créer une structure de répertoire que rpm build utiliser dans l'espace de travail de l'Hudson Travail - ce qui peut déjà être dans la caisse, Hudson ne, ou il peut être créé séparément par votre script de construction. À partir de ce répertoire, vous pouvez créer votre rpm (à l'aide d'un processus externe que vous lancez à partir d'Hudson?). Ensuite, vous pouvez copier le résultant tr /min pour les objets d'annuaire à l'aide de la normale Hudson configurer les paramètres. (Hudson définit un certain nombre de les variables d'environnement que vous pouvez utiliser - l'espace de travail de l'emplacement est l'un d'entre eux)
OriginalL'auteur Simon Groenewolt
Ant peut être utilisé pour générer de la vitesse via le RPM de la tâche.
Vous pouvez compiler les sources C avec Ant avec la CC de la tâche (à partir de Ant-contrib).
Ensuite, vous pouvez utiliser Hudson à construire et le paquet de nos logiciels.
OriginalL'auteur Daniel Voina
À un moment donné, j'ai remplacé le maven dsl je l'ai mentionné ci-dessus avec un plugin Scala, dans la partie juste à apprendre scala. Il n'répondre à certains besoins plus que cela. Mais maintenant, je venais de l'avocat à l'aide de
fpm, qui fait un excellent travail dans 90% des tr /min création (t, deb, et. al)
http://www.semicomplete.com/blog/geekery/fpm.html
projet ici:
https://github.com/jordansissel/fpm
OriginalL'auteur JoshMahowald
Voici un Jenkins script shell que nous utilisons:
(Crédit JT/JWT)
OriginalL'auteur xgMz
après quelques recherches de l'information de nombreuses blogposts et d'autres ressources, j'ai intégré tout cela dans un script, qui pourrait être plus simple utilisé dans jenkins pour la construction des paquets: https://github.com/jhrcz/jenkins-rpm-builder.
il recueille les artefacts (les paquets rpm) int le formulaire de dépôt yum, donc avec un peu de configuration, httpd pourrait être dirigé vers la dernière version stable des pensions.
dans le code que vous pourriez trouver qu'il prend en charge la signature de paquet et essaie de résoudre toutes les différences nécessaires entre el5 et el6.
OriginalL'auteur Jan Horacek