TeamCity Ivy support and transitive dependencies

One of the really compelling use cases for Ivy is it's management of transitive dependencies. Right now, we are using TeamCity and Ivy together, using TeamCity as our artefact respository, which is great. One thing I want to do, but I can't see any documentation on, is to use Ivy to resolve our transitive dependencies via TeamCity.

Does TeamCity support this? The Ivy docs seem to suggest that if you are in project 'a' with a dependency on 'b' which then has a dependency on 'c', you just need to have an ivy.xml available in the same place as your 'b' artefacts, and it will automatically resolve them. However, since TeamCity generates it's own ivy.xml files, I can't seem to get Ivy it to pull 'b''s ivy files to resolve...

Is this possible? I tried all sort of things, but I guess I'll ask before I continue trying
We don't really want to set up our own artefact repository right now, but I guess we will have to if TeamCity doesn't support this.

Thanks in advance for any info!

7 comments

http://devnet.jetbrains.net/people/fiathKieron,

TeamCity does not support this type of information about dependencies. Actually, all the dependnecy information currently handled in TeamCity is considered to be compile-time dependency and to start supporting run-time dependency, more options should added/handled/etc.

For now the only option you can use is probably generating proper ivy.xml inside your build script, publishing it with the build's artifact and then pointing Ivy from the using build to the build artifacts URL to download dependencies, but this way the only Teamcity feature used is availabilty of artifacts via http...

Anyway, feel free to file a feature request into our tracker detailing your use case.

0

Hi Yegor,

Yes, I think you're right. I think what we want to do (now, but especially in the future) is really beyond the scope of TeamCity. So we'll just publish using the Ivy filesystem repository support for now. I see that in the latest version you can create triggers using dependency information in maven repositories, that is very neat. Hopefully we can make use of that functionality if we bring in a fully-fledged Artifactory-like product, as it is a shame to have to duplicate it.

Thanks very much for the reply,
Kieron

0

It looks like there are two issues already, TW-3667 and TW-7418, that both have something to do with this topic.  I was preparing to use the Ivy exposure for the first time myself, until I discovered that TC doesn't include the proper dependencies in its ivy.xml. In my case, it's already an Ivy-based build process so Ivy will generate the file for me, but I would hope that Teamcity would pick up on that and publish those dependencies automatically.

That makes me think of something else: if I create an artifact named teamcity-ivy.xml, will it override the one generated by Teamcity?

0

> if I create an artifact named teamcity-ivy.xml, will it override the one generated by Teamcity?

No. Generated teamcity-ivy.xml cannot be modified and this is "as designed" behavior.

I am not sure I fully understand your needs, but you might be interested in Ivy support provided by Artifactory plugin.

0

Thank you for your reply.  In essence, my need would be for teamcity-ivy.xml to contain the same information regarding dependencies that I get in the ivy.xml which is generated when I call ivy:publish at the end of my build, instead of just providing the list of artifacts.

Leaving that aside, in order to work around this issue I have another question: is the buildConfId (e.g., bt99) available as an Ant property during a build?  If so, what is it called?

Thanks,
Mark

0

> is the buildConfId (e.g., bt99) available as an Ant property during a build?
Yes. "teamcity.buildType.id"

0

Found a feature request to vote for teamcity ivy trigger support:
http://youtrack.jetbrains.com/issue/TW-17635

0

Please sign in to leave a comment.