It would be very handy if TeamCity would automatically create output tabs for third-party tools. It is common for third-party reporting tools to create web directories, and to be called from a build script. If TeamCity could detect the existence of such directories and present them "natively", it would make it very easy to increase the value of TeamCity builds.
For instance, if I have an Ant build which creates a <artifact_dir>/javadoc directory, then a "javadoc" tab should be created for the build, and selecting that tab would open <artifact_dir>/javadoc/index.html in the area below the TeamCity banner (similar to the code coverage tab
Tools which could be integrated in this manner include JUnitReport, JavaDoc, Macker, Coberatura, CheckStyle, JDepend, PMD, FindBugs, and almost certainly many others.
Issue wasresolved
Some of the things that come to mind are:
Those are a few off the top of my head. Like I said, this is all just icing. General handling as described by Dave would be a tremendous first step.
I don't think it will be difficult for users to insert some code that will archive report files before uploading them to build server.
I agree with Tim that a little bit of configuration would need to be available. Automatic discovery may work as a default to insure a good "whoa" factor ;-) but customization will make it usable.
I will however push much harder on a summary view than on polished reports views with fancy UI. I have opened a separate issue for that http://www.jetbrains.net/jira/browse/TW-1673
IMHO a summary view with trending will make TC not just a nice CI tool but an indispensable tool to keep medium to large projects under control. But something tells me I am preaching to the choir ;-)
I need to get off cruisecontrol as soon as possible. Right now I am still maintaining it for to the reports. How early do you think you could start on this?
Jacques
BTW we have used the latest TC EAP for 3 weeks now and its quality (stability, user friendliness, power...) impresses me! It reminds me of the pre IDEA 3.5 EAP days ;-) Right Dave?
If another use case is needed (to push the priority beyond "Critical"!) we would like to start doing an automated functional test nightly using TeamCity. This functional test would run for hours, and produces a bunch of log files. We were planning on keeping around in the artifacts directory, where we could then download them and look at them as text files. Wrapping these in a directory and slapping a quick index.html in it would make our flows much easier, and thus make the logs more likely to actually be examined by QA. A major win, for a minor cost.
And Jacques is right. Working with Agra is now giving me the same sort of "this is how software development was supposed to be!" feeling that I got way back in the day working with IDEA 3 for the first time. I was hooked then, and I'm just as hooked now. It may not feel like it as you slog through coding one more damn VCS adapter, but you're changing the way this game is played.
We'll also probably need to rework UI in some way to make many tabs usable.
I'll try to implement something like that on this weekend, but the EAP is planned not earlier than after the next weekend.
Thanks for your help and contribution!
If you need to view some HTML report generated by third-party tool in your own TeamCity tab, you need to do the following:
1. In your build script, add a task which archives your whole report into some zip or jar file. Let's name this file "report.zip"
2. For the build configuration, which produces such a report, add "report.zip" to Artifact paths of this build.
3. In $HOME/.BuildServer/config/main-config.xml add the following line within <server> tag:
<build-tab title="A Report" basePath="report.zip" startPage="index.html" />
In this line, "title" is title of the tab and it should be unique, "startPage" specifies relative path of start page within zip file.
Side note:
In fact, TeamCity allows to obtain a file from any zip/jar archives from build artifacts directory:
Supported URL pattern 1: /repository/archive/coverage.zip/buildId/43/index.html
43 - build ID of the build
coverage.zip - name of file to get content from
index.html - path of the file to obtain from archive
Supported URL pattern 2: /repository/archive/coverage.zip/buildTypeId/bt2/buildId/(lastFinished|lastSuccessful|lastPinned)/index.html
bt2 - build type ID
lastFinished or lastSuccessful or lastPinned - identifier for the build instance
Supported URL pattern 3: /repository/archive/coverage.zip/buildTypeId/bt2/buildNumber/someBuildNumber/index.html
bt2 - build type ID
someBuildNumber - build number
You'll have to use report-tab tag instead of build-tab:
<report-tab title="A Report" basePath="report.zip" startPage="index.html" />
Addition:
You can use directory name in basePath attribute, and startPage will be taken from this directory. Archive-based access is still supported.
This is awesome! I just upgraded and configured the new version. It rocks!
Now we just need a way to do TW-1756
Thanks again!
I would like an additional parameter for the <report-tab> element. I want to be able to specify if the report should be opened in a new window/tab. I have implemented a Sandcastle report, but because of the javascripts for the report, the url is relocated to Index.aspx. If i modify the script to relocate to http, it will flicker because its' trying to reclaim the IFrame (i think).
I've created a new issue to handle the case: TW-2938
Let's comment on it there.