This is a guest post by Noam Tenne of JFrog Ltd. This post takes a deep look into the Build Artifactory Plugin, a Bamboo plugin that introduces support for Maven 3 and Ivy/Ant builders while providing improved CI and Build Integration capabilities to Bamboo users.
Where are your build artifacts?
It’s Monday morning; Do you know where your build artifacts are? Most chances – no.
Your build is “out in the wild”, how can you trace any records of its making? Is it reproducible like your SCM history? Is the use of version ranges and dynamic properties documented anywhere? Are different dependency version usages known?
The results of your source code are fully reproducible from the source code management system – checking out code, compiling a tag or a revision – binaries typically lack any traceable, reproducible context. If you need to replay last week’s build, you may end up with different results, due to the dynamic nature of it. Moreover, some of the dependencies used for the build may no longer exist, leading to broken builds. So – how can your builds have a traceable context that can make them reproducible?
Resolved dependencies and other dynamic information is known during build time, so there’s no reason you should lose track of your builds. The Bamboo-Artifactory plug-in does exactly that and thus completes your continuous integration cycle with Build Info that provides a traceable context for builds. This context is stored together with your artifacts in the Artifactory Repository Manager.
Artifactory is a Repository Manager for software artifacts that offers advanced proxying, caching and secure artifacts hosting services for Maven, Ant/Ivy, Gradle or parallel build technologies. The management facilities of Artifactory are accessible via web UI or REST API. A continuous integration server, such as Bamboo, is typically configured to publish build artifacts and to resolve build dependencies to and from Artifactory.
Presently, the Bamboo-Artifactory plug-in provides integration with Maven 3 and Ivy/Ant by introducing new builder capabilities for these build technologies (that can also be used normally with the Build Info disabled).
Bamboo Artifactory plugin
So how does this all work with Bamboo?
By having your Bamboo builds deploy artifacts to Artifactory, you can capture the build’s traceable context in full and have it published to Artifactory. JFrog’s build tool integration plug-in participates in the build-tool’s runtime process to gather the info directly from the source and once the build has completed successfully, it deploys the published artifacts and Build Info to Artifactory.
With minimal configuration, the Bamboo-Artifactory plug-in will record and store information about:
- The Build process.
- Published artifacts.
- Version information.
- Resolved dependencies.
- Build environment details.
When the deployment of the Build Info and the published artifacts has completed, each build is easily accessible through Artifactory’s build browser and accessibility is a breeze through Artifactory’s RESTful URLs.
Once in the build browser, you are able to view a bill of materials (BOM) of your build that contains:
- General information about the build.
- Collected environment variables.
- The Build Info’s JSON representation.
- A breakdown of each module with the artifacts and dependencies it contains.
- Attached metadata properties.
You also get many management facilities, such as (some with Artifactory Pro):
- Promotion of builds artifacts with or without dependencies (can select individual dependency scopes).
- The option to save the published module’s artifacts and dependencies as saved search results for further manipulation.
- Ability to export a repository archive that contains all artifacts and dependencies used in a build.
- The display of warnings prior to removal of artifacts that are known to participate in builds.
- Advanced search abilities.
Options to deploy your builds
The Artifactory plugin offers you additional options over out of the box Bamboo:
- Optimized unique/non-unique snapshots processing.
- Preemptive authentication.
- Frees you from maintaining credentials and distribution management settings in project files.
- Prevents partial deployments by deploying the artifacts only after a completely successful build, and not after the success of each module.
- Add customizable tags to each deployed artifact.
The Bamboo-Artifactory plug-in is released under the Apache v2 license. Visit the JFrog wiki for more details or, you can download the plugin, check compatibility, and find the documentation from on Atlassian’s plugin exchange.
New to Bamboo?
Download Bamboo to get started with a free 30-day trial.