Release Bundle block utilizes the atomic release cycle from JFrog to deploy your entire application to your edge devices.
Release Bundles group together the contents that are part of your release, providing the bill of materials for your software releases. For example, you can group together the different build artifacts, such as Docker images, that make up your software release that can then be pushed to your point of sale devices.
A Release Bundle plays a central role in the distribution flow. It specifies the different files and packages that comprise a release, along with their metadata, and is created and managed in JFrog Distribution. Release Bundles are generally distributed from a source Artifactory instance to an Artifactory Edge node. Since all the files specified in a release bundle are required to keep the release coherent, a release bundle is immutable. Effectively, this means that once a file has been included in a release bundle, it cannot be deleted from the Edge node where it is hosted.
Release Bundle block allows you to select a Release Bundle version so its content (artifacts) will be downloaded to your edge devices during the update deployment. Optionally, if the Release Bundle contains Docker images, containers can be executed using docker-compose.
As Release Bundles are immutable, an atomic version of your software release, it is important to follow the best practice in order to properly version your releases and keep control over your artifacts.
Upon bundling, your files get signed and become immutable, therefore, it's important to divide your software into versioned directories as you update your artifacts.
The versioned structure is a user-created hierarchy of directories that is divided into different folders.
For example, an application that is stored inside the
app-filesrepository will be divided into version directories as follows:
- 1.Before creating the Release Bundle, create a directory under
app-filesthat contains all of your applications, and name it with a version that represents the entire application as a whole.
2. By using this structure, you may create a Release Bundle over your
V1application, which will make them immutable.
3. When a binary needs to be updated, a new versioned directory will be used to store the new files that will eventually be bound together with another Release Bundle.
In order to ensure your application reliability on your edge devices, upon the deployment of the Release Bundle, keep in mind the following:
These items allow the device to be oblivious of your software in terms of Repository, Version and Dependency.
For example, When deploying
app-files/V1hierarchy will be removed and the application will be stored as follows:
By removing the previous versions together with the Repository & V1 directories, the device will always run the latest release bundle version without relying on a dependency such as the version directory name.
Select the name of your Release Bundle.
Select the version of the Release Bundle you want to deploy.
The device path is the directory on the device that the Release Bundle will be pulled into.
Custom paths let you choose specific artifacts from the Release Bundle that will be pulled into a different location than the chosen "Destination path". This might be useful when you have certain artifacts from the Release Bundle that must be placed in a specific location on the device.
Select the path in Artifactory where the file or directory is located.
The path can be either a directory or a specific file.
You may select multiple directories or files by pressing the Add Custom Path button.
The device path is the directory on the device that the selected custom artifact will be pulled into.
If the Release Bundle contains Docker Images, JFrog Connect provides an option to deploy containers from them using docker-compose.
- Docker images are stored in JFrog Container Registry which is part of the Release Bundle.
dockerinstalled on your devices.
docker-composeinstalled on your devices.
- A docker-compose configuration file located inside the Release Bundle.
Select the path in JFrog Artifactory where the docker-compose file is located.
The directory on the device that the docker-compose file will be pulled into.
Allows you to define the occurrences upon failure of the JFrog Release Bundle block.
By default, when the block fails, all downloaded artifacts from the Release Bundle will be automatically reverted. You can disable this option in the On Fail tab.
By default, when the block fails, the docker-compose file automatically reverted to the previous state.
In order to allow a Rollback functionality, deployments require your device's free memory to be higher than the update size.
To calculate how much free memory is required, follow the equation below