Creating Release Bundles
JFrog Distribution enables creating and distributing Release Bundles from the Artifactory service. Each Release Bundle may only contain artifacts from a single Artifactory service.
To create a release bundle, Distribution runs queries against the JPD in order to retrieve the required artefact references and their properties. Fetching the artifacts are performed according to the security privileges of the user who made the request.
To prevent tampering with the Release Bundle, it is signed by JFrog Distribution using a GPG key. The same GPG key is then used by the Artifactory Edge to validate the Release Bundle before it is accepted.
A Release Bundle version can include up to 3,000 artifacts. This number is not limited in the product, but exceeding it is highly unrecommended.
Release Bundles can be created using the REST API or through the JFrog UI. In either case, you define the artifacts to be included in the Release Bundle through a set of queries you can define.
In the final stages of creating a Release Bundle in the JFrog UI, you can option to save the Release Bundle in the following modes:
- Draft version: You can create a draft version that can be edited by clicking Create.
- Signed version (Unmodifiable): You can skip the draft phase by clicking Create & Sign to sign and finalize the process without a draft phase.
Creating a Release Bundle requires the Release Bundle 'Write' permissions.
Creating a New Release Bundle
- Click New Release Bundle from the Application module | Distribution | Distributable.
- Enter the Release Bundle and create a query. Refer to the field descriptions below.
The Release Bundle page is divided into three panels: General Details, Spec and Release Notes.
|The Release Bundle name. The Release Bundle name must start with an alphanumeric character followed by an alphanumeric or one of the following characters: |
|The Release Bundle version.|
|The Release Bundle description.|
This section specifies the Artifactory service from which the Release Bundle will be assembled (remember, a Release Bundle can only be assembled from a single Artifactory service), and the different queries that will be used to assemble the artifacts. For more details on how to define the queries, please refer to Adding a Query.
|The query name.|
|The query details.|
This section specifies release notes for the Release Bundle.
|The release notes format. Supported types include: Markdown, Asciidoc and plain text.|
Edit | Preview
|Use these links to edit the release notes in your selected format and then preview how they will look once rendered.|
Adding a Query
There are two ways to build a query: Using a simple query builder or using AQL (Artifactory Query Language) for advanced users.
To select the way you want to build your query, hover over Create Query.
Using the Query Builder
The query builder lets you build your query by filling a simple form. The parameters you enter are eventually translated into an AQL query which you can view by setting the Show AQL checkbox at the end of the form.
To use the query builder, under Create Query, select Add Query
This will launch a 3-step wizard.
In the Query Details step, start by giving your query a name. You can then specify different search criteria including:
- Repository names
- Build names and numbers
- Properties with specific values
- Include and Exclude patterns
Note that you can specify multiple values for each of these parameters by clicking the '+' button to the right of the parameter.
Using the And | Or options you can add multiple properties in a single click of a button.
To add an AQL query, under Create Query, select Add AQL Query.
This will launch a 3-step wizard.
In the Query Details step, give your query a name and provide the AQL expression to use for assembling the artifacts.
After specifying your query details (whether using an AQL query or the query builder), you can view the artifacts that will be included in your Release Bundle under the Preview Artifacts tab.
Note that if the source or target Artifactory service specified for the Release Bundle does not have a correct and valid license, Distribution will display an error.
The Additional Details tab lets you specify two more parameters for your Release Bundle:
|Specify a list of properties that will be attached to all artifacts in your Release Bundle during the distribution process, in addition to those that they already have.|
|Specify a list of mappings to govern where artifacts will be placed in your target Artifactory service according to their location in your source Artifactory service. You may use any of the Path Mapping Templates provided, or set up custom mappings of your own.|
Path Mapping Templates
As a convenience, JFrog Distribution provides a set of commonly used templates you can use to set up your path mappings. Simply select one of the templates listed under Use Template, and then modify the placeholders to correspond with your setup.
The templates provided are:
|All files in a specific repository on the source Artifactory service are mapped to a different repository on the target.|
|All files are moved to a specific folder in the target.|
|All files in a specific folder on the source Artifactory service are mapped to a different folder on the target.|
Alternatively, you can skip the draft phase by clicking Create & Sign to sign and finalize the process without a draft phase.
Create the Release Notes to be assigned to the Release Bundle and click Create & Sign.
A signed Release Bundle cannot be edited.
Including Docker Images in a Release Bundle
In order to include Docker image in the Release Bundle, it is sufficient to specify query criteria that will match the manifest.json of the desired docker image. Distribution will include all the Docker layers of the Docker image associated with that manifest.json file.
For example, we have a Docker image of a PostgreSql version 11.1 in a Docker repository called
The content of the repository has the following hierarchy:
manifest.json file includes the following property:
All the other files under
docker-local/postgres/11.1 are the layers composing this specific image.
The “digest” parameter is designed as an opaque parameter to support verification of a successful transfer. For example, an HTTP URI parameter might be as follows:
Given this parameter, the registry will verify that the provided content does match this digest.
To include all the artifacts in the image (manifest and layers) it is sufficient to specify a query criteria that will match the
manifest.json of the desired Docker image:
Signing a Release Bundle
Signing a Release Bundle finalizes the process of creating a Release Bundle. This sets the Release Bundle status to Signed and the Release Bundle can no longer be edited.
Signing a Release Bundle will trigger the Artifactory to clone the contents of the signed Release Bundle into an isolated Release Bundle Repository.
- You can sign a Release Bundle from the Edit Release Bundle page or from the New Release Bundle page.
Click Sign Version.
If the GPG key was created with a passphrase, JFrog Distribution will prompt you to enter the passphrase when user click on sign.
- Continue to distributing your Release Bundle when ready.
Creating a Dynamic Release Bundle
You can distribute a dynamic Release Bundle, which is a Release Bundle you can create, sign, and distribute on the fly using the Dynamic Release Bundle REST API. The temporary Release Bundle version is created instantly and distributed to the selected Distribution Nodes. The distribution process for a Dynamic Release Bundle is the same as a regular Release Bundle.
Distributing a Release Bundle
Once you have created your Release Bundle, you can distribute it to the Artifactory Edge Nodes that you are privileged to distribute to.
Circle of Trust
Distribution can only distribute Release Bundles from an Artifactory service to an Artifactory Edge Node if they are both within the same circle of trust. To learn how to establish a circle of trust, please refer to Access Tokens in the JFrog Access User Guide.
The workflow for distributing Release Bundles contains the following steps:
- On the Artifactory source node, users with the appropriate permissions can create and manage the Release Bundle distribution process in the Release Bundles Distributable tab.
- Artifacts that have been created and signed are automatically copied and saved into this separate repository where their contents cannot be edited or removed. The Release Bundle Repository protects your artifacts as part of the distribution flow.
- On the Artifactory Edge, users can track Release Bundles received by an Artifactory Edge.
Distribution is responsible for triggering the replication process that happens from the source Artifactory to the Edge Nodes. First, it replicates the Release Bundle info to each Edge Node, and then initiates the replication process in the source Artifactory.
To distribute your Release Bundle, click Distribute from the Release Bundle module, or use the Distribute Release Bundle REST API.
Distribution fetches the available Edge Nodes from Mission Control, and displays a list of the available Edge Nodes according to the specific user permissions.
To distribute an older version of your Release Bundle, click on it from the Release Bundle module, select on the version you want to distribute, and click Distribute.
Target Repository Auto-Creation
Please note that this feature requires JFrog Artifactory version 7.21.0 or higher
Starting from JFrog Distribution version 2.8.1, this feature enables you to automatically create missing target repositories on the target edges or Artifactory when distributing Release Bundles. When the target edge or Artifactory does not contain any repositories, the distribution fails, and the creation is required to be done manually. If this feature is enabled, the target repositories are automatically created expediting the Distribution flow.
To enable this feature, select the Target Repository Auto-Creation checkbox:
The feature will work according to the path mapping that exists from the source to the target. If advanced path mapping was detected, the target repository cannot be auto-created. To enable this, set the
distribute.auto-create-target-repo-advance flag to true in the Distribution Application Config YAML File.
|Repositories||Without Path Mapping||With Advanced Path Mapping|
|One Repository||If the target repository name and type are the same as the source repository, the repository is created automatically.||If there is a one-to-one path mapping between the source repository and target repository, the target repository type is the same as the source repository type.|
|Multiple Repositories||If the target repositories names and types are the same as the source repositories, the repositories are created automatically.|
Example 1: From source to target repository without path mapping
A Docker image from a Docker repository in the source, the Docker image will be mapped to the Docker repository in the target.
Example 2: From source to target repository with path mapping
A Docker image from a Docker repository named
docker-local in the source will be mapped to Docker repository named
mapped-docker-local in the target.
Example 3: Multiple repositories on the source to one target repository with path mapping
Multiple Docker images from multiple Docker repositories in the source, the Docker images are mapped to a single Docker repository in the target.
Example 4: Multiple repository types on the source to one target repository with path mapping
A Docker image from Docker repository and Helm chart from Help repository in the source will be mapped to one generic repository.
Managing Release Bundles
You can perform the following tasks on Release Bundles.
Viewing Release Bundles
The UI provides Release Bundle information is displayed across multiple views providing users information depending on their needs and tasks.
Viewing Release Bundles on the Source Node
|The Release Bundle name.|
|The Release Bundle latest version.|
|The sequential number of the distribution job. Only the last 3 distribution jobs are displayed.|
|The distribution job status.|
|The edge nodes distribution progress percentage.|
Viewing Release Bundle Version Details
To view a version of a Release Bundle, select a Release Bundle and select the required version.
The Release Bundle versions page displays three panels of information:
Versions: The list of versions of this Release Bundle. Select any version to view its details.
General Info: The panel along the top of the screen displays general information such as the version, description, creation date, status and size of the Release Bundle
Details: This panel displays details about the selected Release Bundle version in a series of tabs: Content, Release Notes, Actions Tracking, Spec, Xray Data and Effective Permissions.
Viewing Release Bundle Properties
When creating a Release Bundle, the artifact properties are fetched from the Properties in Deployment and Resolution into the Release Bundle. Additional custom properties can be added during the initial Release Bundle version creation using the Create Release Bundle REST API. These properties are transferred over to the Edge Node as part of the distribution process.
The Distribution page contains these information tabs:
The Content tab displays the artifacts, builds and metadata that comprise the Release Bundle.
Click on any artifact or build to view details about it in the right panel in the tab.
Click for direct access
Click on an artifact's source path to be redirected to the right location in the tree browser of the corresponding Artifactory service.
If the artifact has been blocked for download by JFrog Xray (in which case, you will not be able to distribute the Release Bundle), this will be indicated in the Xray Status field for the selected artifact in the Content tab.
Release Notes Tab
The Release Notes tab displays release notes for the bundle. These can be written in markdown, ascii doc or plain text.
Actions Tracking Tab
The Actions Tracking tab provides a history for this Release Bundle version.
The ID of the distribution action.
Multiple rows with the same ID
You may see multiple rows in this table with the same ID because a single distribution action may distribute a Release Bundle to several target nodes
|The action that was performed|
|The date and time at which the action started|
The distribution target
Click for direct access
Click on the distribution target name to be redirected directly to its UI
The status of the action
|The percent completion of the action and number of attempts at completion|
Summary of some details about the action.
Click for details
Click on this field to get full details of the action. This is where you can get more details in case of an error.
Redistributing a Release Bundle
Distributing a Release Bundle may fail for different reasons such as network issues or outage of a target Artifactory service. Once you have remediated the problem preventing distribution, you can redistribute the Release Bundles to the services where distribution failed. To redistribute release bundles, first select them. Distribution presents a Redistribute icon for each distribution selected. You can now click that icon to redistribute each Release Bundle individually to the specified target service, or select the Redistribute button at the top of the list to redistribute the Release Bundle to all target services selected in a batch process.
Use the Filter to display only those distributions that have failed.
The Spec tab displays the source Artifactory service from which the artifacts of this Release Bundle were assembled as well as the list of queries that assembled the artifacts.
Click the Artifactory service
Clicking on the Artifactory service opens a new tab on the home screen of that service
Clicking on any of the queries expands it displaying the details of the query that governed the assembly of the Release Bundle artifacts.
You can even check the AQL checkbox to see the final AQL query that was used to assemble the artifacts.
Effective Permissions Tab
The Effective Permissions tab displays the effective permissions assigned for the selected Release Bundle. For more information, see Permissions.
Editing a Release Bundle
You can edit Release Bundles that have been saved with 'Create' as a draft and have not yet been signed.
From the Application module under Distribution, go to Distributable | [Bundle_Name] | [Bundle_Version], click Actions and select Edit Version.
Searching for Release Bundles
The Platform supports searching for Release Bundles using the:
- Dedicated Platform Release Bundle Search: You can search for distributable and received Release Bundles within a specified time page. For more information, see the Application Search.
- AQL Search for Release Bundles: To search for release bundles in an Artifactory Edge node, you can use the release and release_artifact domains introduced to AQL. For details, please refer to Entities and Fields.
Cloning a Release Bundle
To clone an existing release bundle version, select Clone Version from the Actions drop down menu.
This will copy the release bundle spec, including its name and queries, into a new release bundle page. Details on the page can then be adjusted and saved accordingly.
Deleting a Release Bundle
To delete an existing release bundle version, select Delete Version from the Actions drop down menu.
There are 2 types of delete options:
Xray Scanning of Release Bundles
Xray scanning requires Pro X, Enterprise with Xray, or an Enterprise+ license.
JFrog Xray supports scanning of Release Bundles as well as setting Policies and Watches on Release Bundles.
Prior to scanning your Release Bundles, ensure to:
- Add the Release Bundles to the Xray indexed resources. For more information, see Configuring Indexing Resources.
- Create a Policy containing a Block Release Bundle Distribution action to prevent distributing a Release Bundle to Edge nodes. For more information, see Creating Xray Policies and Rules.
- Configure a Watch containing the Release Bundles and apply the relevant Policy. For more information, see Configuring Xray Watches.
The Release Bundle scanning results are displayed in Xray data tab of the Release Bundle.
Viewing Xray Data
In the Release Bundles version list, you can view the status of your scanned Release Bundle versions in the Xray Status column.
Click on the Release Bundle version to view detailed information in the Xray Data tab. This tab displays any violations, security issues, license that may have been detected on the distributed version. You can run the following Xray related actions on the version: Scan for Violations, Assign Custom issues, Assign Custom License or Export Data. For detailed information on each tab, see Analyzing Scan Results.
Blocking Distribution of Signed Release Bundles
You can set the Block Release Bundle Distribution action in an Xray Policy to prevent signed Release Bundles containing security vulnerabilities from being distributed. For more information, see Creating Xray Policies and Rules.
Note: The blocked Release Bundle appears with status failed.
Viewing Release Bundles on Edge Nodes
The Release Bundles Received tab allows you to view all the received release bundles in one place.
These are the main Release Bundle REST APIs:
- Create Release Bundle Version
- Update Release Bundle Version
- Sign Release Bundle Version
- Distribute Release Bundle Version to Artifactory Instances
For the full list of Release Bundle commands, see the Distribution REST API.