Hi, 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" resolver="team1-integration"/> <module organisation="team2" status="milestone" resolver="team2-milestone"/> <module organisation="team2" status="integration" resolver="team2-integration"/> Thanks, -- View this message in context: http://apache-ivy.996301.n3.nabble.com/Ivy-artifacts-promotion-using-publish-delivertarget-tp9594.html Sent from the ivy-user mailing list archive at Nabble.com.