2008-12-11 7 views
4

J'ai besoin de récupérer l'état de construction de TeamCity sous la forme de XML, le format RSS serait idéal. Je connais le fil RSS de Teamcity, mais cela ne sert à rien car il s'agit plutôt d'une vue historique. Je cherche quelque chose de plus comme la page générée par le Status Widget mais sous forme XML. (FYI, la page du widget d'état n'est pas XHTML - essayé cela!)Comment faire pour récupérer l'état de construction en XML à partir de TeamCity

Je me demande si quelqu'un a à travers quelque chose qui pourrait aider?

Cordialement, David Christiansen

Répondre

2

Vous pouvez utiliser l'outil Syndication Feed sous My Settings And Tools pour générer une URL RSS (Documentation here) et le suivi des changements par rapport à la construction des résultats pour déterminer l'état (c'est à direbâtiment, et précédemment réussi/échoué)

À titre d'exemple, je viens de créer cette URL pour afficher les derniers résultats 5 de construction:

http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5 

Où:

  • buildTypeId est l'ID de la configuration (l'obtenir en inspectant l'URL de la construction)
  • itemsType pourrait être « construit » ou « changements », ou les deux

Vous pouvez utiliser le type « changements » pour déterminer si une construction est en cours ...

Il y a des options d'URL supplémentaires pour TeamCity RSS here, comme buildStatus et sinceDate.

Remarque: Selon que vous avez activé l'accès invité, vous devrez peut-être utiliser des contextes différents, tels que /httpAuth/feed.html ou /guestAuth/feed.html.

1

Edit: comme vous le soulignez, le flux RSS de TeamCity ne comprend terminé builds.

Une possibilité serait de récupérer le code HTML du projet qui vous intéresse dans la page des détails, puis de tirer le statut actuel de l'entrée supérieure dans la table des builds.

Autre option: avez-vous envisagé d'utiliser le système de notification Jabber ou par e-mail? Il a plus notification d'événements à grains fins:

  • build commence
  • build réussit ou échoue

deux générer des notifications, à partir de laquelle vous pouvez déduire construire le statut. L'automatisation du courrier électronique est simple et Jabber est un standard ouvert, donc j'imagine que c'est assez facile aussi.

N'importe laquelle de ces options nécessiterait un petit code de retour pour convertir en RSS.

+0

Merci pour votre réponse, cependant, l'option RSS dans « Mes réglages et outils » affiche des informations historiques - pas « actuel Statut » qui est ce que Je cherche. –

0

Est-ce que this summary of a standard XML status format décrit ce que vous voulez dire? Je suis assez sûr que TeamCity peut produire ce format, mais pas exactement comment. Hudson le fait avec une URL comme http://my.hudson.server.example.com:3030/cc.xml.

+0

Ce lien hudson ne fonctionne pas ... – pauloya

+0

Le premier lien fonctionne pour moi. Le deuxième lien est un exemple pour vous montrer la forme des liens d'état. Ce n'est pas censé fonctionner. (Les URL se terminant par example.com sont toujours des exemples. Il suffit d'en visiter une, par exemple http://example.com, pour plus d'explications.) –

2

Je travaille sur ce problème pour un peu de temps maintenant

Here's a post showing you how to login to teamcity in code in c#

alors juste une question d'utiliser HTMLAgilityPack à regarder la table.

Si vous activez l'accès invité, c'est encore plus facile. Je nettoie le code pour la publication sous peu si cela aide. Si votre développement dans une autre langue, je peux aider là aussi.

1

Probablement il est préférable d'écrire votre propre plugin. Si vous connaissez Java bien sûr. Vous pouvez créer un contrôleur Web personnalisé et le lier à l'URL que vous aimez, ce contrôleur peut accepter le paramètre buildId, rechercher une construction (SBuildServer.findBuildInstanceById()) et sortir le XML.

Jetez un oeil à HelloUserController.java qui est dans le samplePlugin.zip fourni avec TeamCity (TeamCity/devPackage).

également sa valeur à vérifier les sources de quelques-uns des plugins TeamCity: http://www.jetbrains.net/confluence/display/TW/TeamCity+Plugins

0

je l'ai fait en utilisant l'API par buildtype:

curl -k "https://${SERVER}/guestAuth/app/rest/buildTypes/${BUILDTYPE}/builds/?locator=lookupLimit:1"|xpath -q -e //build/@status