The Distribution Flow
The high-level distribution flow has two main steps:
- Creating a Release Bundle
A release bundle is created by calling the Create Release Bundle REST API endpoint on JFrog Distribution. This call specifies a variety of parameters including the files comprising the release bundle, and different properties associated with it. Since a release bundle is immutable, any file included in a release bundle cannot be deleted from Artifactory. JFrog Distribution collects the required metadata about the artifacts specified in the request (as an AQL query).
- Distributing a Release Bundle
A release bundle is distributed by calling the Distribute Release Bundle REST API endpoint on JFrog Distribution. The distribution is itself split into three steps:
- Start a distribution transaction
In this step, JFrog Distribution queries JFrog Mission Control for details on the distribution target nodes. It then primes the target nodes to receive the distributed packages by providing information about distributed files such as their checksum, and providing a GPG key to validate the authenticity of the bundle as a whole.
- Transfer files with smart replication
In this step, JFrog Distribution invokes the Replicator on Artifactory which distributes files over to the target node by replicating them.
- End a distribution transaction
In this step, JFrog Distribution notifies the Edge node that the transaction is complete. In turn, the Edge node validates authenticity of the transferred bundle using the GPG key provided when the transaction started. It then validates the integrity of the transferred files by validating their checksum and hosts them in the correct place as specified in the release bundle.