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. Sharing artifacts between jobsYou 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:
| Atlassian Blogs: |
Screenshot: Creating an artifact dependency
Sharing artifacts between Maven jobs (Beta)
Before you begin:
- Maven artifact sharing is currently in beta. We recommend that you do not use it with any critical production systems.
- Maven artifact sharing is not supported for Maven 1.
About Maven artifact sharing
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
|
Configuring Maven artifact sharing
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.
Before you begin:
- Your Bamboo URL must be specified correctly for Maven artifact sharing to work correctly. For example, do not use localhost as part of your Bamboo URL. For more information, see Specifying Bamboo's URL.
To share an artifact between two Maven jobs in different stages:
Edit your
pom.xml
file 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>
- Note, the version number specified above (
<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.
- Note, the version number specified above (
- Navigate to the plan that you want to enable artifact sharing for, and click the Miscellaneous tab (see screenshot below).
- Select the Enabled checkbox.
- If you don't want to keep the Maven artifact once the plan build has completed, select Expire Maven Repository Artifacts.
Note that each plan builds may result in hundreds of megabytes of Maven artifacts. Ensure that you have sufficient disk space to accommodate this. - Configure artifact sharing between the desired jobs. That is,
- If a job needs to deploy an artifact (i.e. produce the artifact), mark the artifact as shared in the relevant artifact definition.
- If a job needs to resolve an artifact (i.e. consume the artifact), create an artifact dependency for the artifact as described above.
Screenshot: Enabling Maven artifact sharing on the Miscellaneous tab for a plan
Notes
Artifacts are copied to a subdirectory (/JOB_KEY/download-data/
) under your 'Build Directory' folder (see Locating important directories and files). Artifacts which you define in the plan are listed in each build result as artifacts (see Viewing a build's artifacts).
Attachments:






