ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From opatry <>
Subject Ivy artifacts promotion using publish + delivertarget
Date Fri, 17 Jan 2014 13:40:16 GMT

I try to handle artifacts promotion through Ivy.
I know that the best way to achieve it is to have reproducible builds that
can be invoked twice, a first time with status=integration and the second
time with status=milestone for instance.

For internal reasons, it's hard for now to use such strategy. My idea was to
split repositories by status:

team1-integration, team1-milestone, team1-release
team2-integration, team2-milestone, team2-release

It allow me to easily backup/cleanup my repositories according to artifacts
status and to expose them to other team (not necessarily needed to expose
integration repository but only milestone for QA team, and no need to expose
anything else but release for sales/services teams).

The workflow is the following:
developers work, build, publish using CI in the integration repository
once, the features are implemented and frozen and unit tests pass, the
artifact can be flagged as a milestone for QA team. The QA team test it and
validate (or not). The artifact can be flagged as a release (this step may
be done by sales/service team instead of QA team).

To help those people to promote the artifacts, I aim to provide them an Ant
set of scripts whose main purpose will be to retrieve a given module in a
given version (the accepted/tested one) in a given status and to promote
this module (moving from integration to milestone and milestone to
integration) by republishing it changing the status and choosing the right
resolver and delivertarget to recursively promote dependent modules.

I have two main concerns:
- how to deal with the various status of dependencies (a module may rely on
integration module, released one, …)
- how the delivertarget handle multiple resolvers for dependencies?
-> I a module1 from a team1 (will be published in repository
team1-milestone) depend on a module2 from a team2 (retrieved from
team2-release for instance), the repository used by team2 may be different
(repository layout differs, geographical/network sites differs, …), so how
will the recursive publishing work? the team2/module2 will be published in
the team1 repository? promoted to the team2 one? If the status is already
greater than the targeted one, will it be kept?

Can I use (it seems that not) the status attribute in <module> rules of
ivysettings.xml to handle it? will it be used for publishing or only for
retrieval? (It is mandatory to set the resolver to be used when using the
publish task). 
I was hoping that combining module rule may work but I'm not sure at all:

<module organisation="team1" status="integration"
<module organisation="team2" status="milestone" resolver="team2-milestone"/>
<module organisation="team2" status="integration"


View this message in context:
Sent from the ivy-user mailing list archive at

View raw message