Downloads (PDF, HTML & XML formats)
[Bamboo OnDemand Docs]
[Bamboo Knowledge Base Home]
This page describes how to configure artifact sharing between jobs in a plan. Artifact sharing allows you to pass an artifact from one job to a job in a subsequent stage. That is, the artifact is copied to the subsequent job's agent. Note, you cannot pass artifacts between jobs in the same stage.
For example, you may want to run acceptance tests on a build, sharing the same WAR from one job to another without rebuilding it each time.
This page also describes how to configure artifact sharing when you are using a Maven builder. In this case, the artifact is deployed to, and resolved from, a Maven repository by jobs, rather than being copied from agent to agent.
You can share artifacts between jobs in different stages using artifact dependencies. Each time the artifact is shared with a subsequent job, it is copied to the job's agent.
To share an artifact between two jobs in different stages:
On this page:
Atlassian Blogs:
Screenshot: Creating an artifact dependency
Before you begin:
Maven artifact sharing works by producing new remote repositories when you run a plan. These are temporary equivalents of the deployment repositories configured within the project's pom.xml files. For example, if the project deploys its repository to the 'mycorp-private' repository at http://repository.example.com/ then Bamboo will create a 'mycorp-private' repository for each Plan result hosted on the Bamboo server.
When a job produces a Maven artifact, it is deployed to this repository. A subsequent job that consumes an artifact created by this process will resolve it from the repository within Bamboo. This process of deploying and resolving artifacts can then be repeated, as necessary across subsequent jobs in later stages. Once a build has completed, the temporary repositories are removed to conserve disk space, unless specified otherwise (see configuration instructions below).
The diagram below shows an example of how artifact sharing works. Two jobs, Job A and Job B, share an artifact in the plan, MyPlan. Job A builds the artifact then deploys it to the temporary remote Maven repository. Job A triggers Job B. Job B resolves the artifact, builds, then deploys the artifact back to the repository.
Diagram: Maven artifact sharing example
Artifact sharing is configured differently when using Maven 2 or 3 as a builder for your jobs. Artifacts are deployed to and resolved from a Maven repository, rather than copied from agent to agent. You will need to change your pom.xml file, as well as configure the relevant jobs to set up artifact sharing.
To share an artifact between two Maven jobs in different stages:
Edit your pom.xmlfile and add the following plugin definition:
<build> <plugins> <plugin> <groupId>com.atlassian.bamboo.maven.sharing</groupId> <artifactId>bamboo-artifact-sharing-maven-plugin</artifactId> <version>3.0-i5</version> <executions> <execution> <id>sharing</id> <goals> <goal>share</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
<version>) must match the version of Bamboo you are using. This version number number will be compatible across minor releases of Bamboo, unless specified otherwise in the relevant upgrade.Screenshot: Enabling Maven artifact sharing on the Miscellaneous tab for a plan