Skip to end of metadata
Go to start of metadata
Table of Contents

Artifactory Build Server Integration

Introduction

Assimilating Artifactory into a continuous integration build process is very straightforward.  

Treat the CI server as a regular build client and, as such, the CI server resolves dependencies from Artifactory and deploys artifacts into a dedicated repository within Artifactory.

The Build Integration feature of Artifactory takes this integration one step further, by closely integrating your Artifactory and your CI server to provide fully-reproducible builds and full visibility of deployed artifacts, used dependencies and information regarding the build environment.

By using the Build Integration Add-on you are able to:

  • See all the builds that are published and their build results in Artifactory.
  • Explore each build's modules, including published artifacts and dependencies with their scope.
  • Obtain information about the original build environment.
  • Check if a specific artifact is required/a result of a build, including alerting if such an artifact should be targeted for removal.
  • Manipulate all the artifacts and/or dependencies from a specific build as a single unit (move, copy, export etc.).
  • Receive bidirectional links between build and artifact information inside the build server and Artifactory pages.

Jenkins/Hudson, Team City and Bamboo Integrations

The Build Integration currently supports Jenkins/Hudson, TeamCity and Bamboo. Similar integration with other build technologies stacks, are currently being worked-on - stay tuned.

(info) The build technologies supported are: Maven 3 and 2, Gradle, Ivy/Ant, .Net and Generic builds (look under each CI server to see the technologies supported by the plugin for this server).

To learn more about installation and usage instructions specific to your CI server, follow these links:

(star) The Jenkins/Hudson Artifactory Plug-in
(star) The TeamCity Artifactory Plug-in
(star) The Bamboo Artifactory Plug-in

 

The difference between the open source and the commercial version of Build Integration

When using the OSS version of Artifactory, Build Integration includes the Generic BuildInfo View and the ability to traverse and view build information using Artifactory's REST APIs.

Module Artifacts and Dependencies View, Repository View of Builds and the ability to export and manipulate build items require the Artifactory Power Pack.

Inspecting and Managing Builds

Builds and Per-Build History

Once you have run a build in your your CI server that deployed to Artifactory, you can immediately see the corresponding build results inside Artifactory. A new 'Builds' menu item lists all known CI server projects that published their build results:

Each build corresponds to its CI server project (job) counterpart and contains a build history of all runs, that reflect the build history in the CI server:

For each build item in the history you can drill down and obtain more fine details about it, as explained in the next section.

You can also view the build in the CI server by selecting 'Show in CI Server'.  In addition, you can also navigate back to Artifactory from the CI server UI.

To view build information users must have a 'deployer' permission on some repository path (at minimum).

Build-level Information

Drilling-down into the single build level, each build contains three sections of information:

  1. Visual general build information about the build and its environment.
  2. Visual display for modules with their artifacts and dependencies.
  3. Generic view of the build information in JSON format.

General Build Information

This section contains general information about the build.

From here, you can save the build's artifacts and/or dependencies as a Smart Search Result to further manipulate the search, as explained below.

Build Modules

Each build publishes module(s) into Artifactory, displayed in this view, together with the number of artifacts and dependencies which they contain.

Module Artifacts and Dependencies

If you drill down even further, you can inspect each module's published artifacts and dependencies.

NOTE! the deployed artifacts are collected with their types and dependencies contain the scope(s) that the dependencies used in during the build.

You can also go from each item to its tree view in Artifactory and view other details about it.

Build Environment

In the Environment tab, you can view build properties and other environmental details that are otherwise lost if you want to replay the build at a later point in time (e.g. JDK used, system architecture etc.).

Licenses

In the Licenses tab, you receive a centralized view of all the artifacts and dependencies involved and their license analysis.

See the License Control Documentation to learn more about this feature.

Governance

The Governance tab displays the integration status of this build with a Black Duck Code Center application. In this tab you can also find the components approval statuses, licenses and security vulnerabilities.

See the Black Duck Code Center Integration to learn more about this feature.

Build Diff

In the Diff tab, you can compare the current build artifacts/dependencies/environment with an older build to see what has changed (new artifacts added, old dependencies deleted etc).

Release History

The Release History tab displays a timeline of the selected build's release landmarks.

Generic BuildInfo View

The generic BuildInfo view displays a JSON representation of the data used to form the visual build information in Artifactory.

This can be used by REST or for debugging and is also exposed in the basic OSS version of Artifactory.

Exporting and Manipulating Build Items

From the build's general information panel, you can save the build's artifacts and/or dependencies as a Smart Search Result and then manipulate it in order to promote it to another repository, copy it or export all the items to disk to have an external distributable unit of the build with all its dependencies and artifacts.

Repository View of Builds

Artifacts inside Artifactory are also aware of their possible association to builds. When an artifact is associated with a build, either as a published artifact or as a dependency it is visible on a new Builds tab (when selecting the artifact in the tree view).

Moreover, you also receive warnings when trying to remove from the user interface, an artifact that is associated with one or more builds and which without, build reproducibility is affected.

You can navigate directly from the Builds view to the build information in Artifactory or to the build page in your CI Server:

Artifacts association with builds is retained regardless if you move or copy the artifact inside Artifactory, since this association is maintained by the artifact's checksum which remains constant, regardless of the artifact's location.

Behind the Scenes

Behind the scenes the Artifactory plug-in for your CI server performs two major tasks:

  1. It deploys all the artifacts in one go to Artifactory. This is performed in an optimized and expedient manner and only at the end of the build, guaranteeing a more coherent deployment when building multi-module projects (Maven's and Ivy's methods deploy at the end of each sub-module cycle, which can result in partial deployments if the build fails in a later module).
  2. It sends a BuildInfo data object to Artifactory via REST at the end of deployment. BuildInfois a structured JSON object containing all the data about the build environment, artifacts and dependencies, in a standard and open manner.

    You can find the latest BuildInfo Java-bindings artifacts here and the source here.

  • No labels