We have a lot of Ant projects and in order to get the dependencies in
order, I'm going to implement Ivy with Ant.

After getting some basic configuration setups, I'm beginning to
realize that there might be an issue with Jenkins doing multiple
builds with various Ivy projects.

For example, I thought originally it would be a good idea to do a
<ivy:cleancache> as part of the clean target. I suddenly realized that
this removes the entire user's cache. Imagine Job #1 running, and Job
#2 starts and does an <ivy:cleancache>. Suddenly Job #1 doesn't have
the cache.

I was also looking at the <ivy:resolve> and <ivy:cachepath> and may
have some concurrency issues with those too. When I look at
$HOME/.ivy/cache, I see files with the names of
"com.company.project-compile.xml" and "com.company.project-test.xml".
I assume that Ivy uses these for building the <cachepath> and
<cachefileset> reference IDs. What happens if I have two projects that
share the same company and project name? This is possible if you're
building two different versions of the same project. Imagine Company
VeggieCorp.com has a project "foo" and is working on the next release
3.5 and is working on a bugfix for the last release 3.4.2. There would
be a single "com-veggiecorp.foo-compile.xml" in the Ivy cache for both
of these projects.

How does everyone else use Ivy and avoid these issues? Or, am I
imagining this is a problem?

I was thinking somehow to include the Jenkins Executor Number to
eliminate this conflict. I might end up with multiple local
repositories, but it would eliminate the concurrency issue. If I
somehow incorporate the Executor Number as part of the ivy repository
location, then if Executor #1 is running and does an <ivy:cleancache>,
it won't affect any other job that might be currently running.

-- 
David Weintraub
qazw...@gmail.com

Reply via email to