Overview
A Smart Remote repository is a Remote repository that proxies a Local, Remote, and Federated repository from another instance of Artifactory. In addition to the usual benefits of Remote Repositories, Smart Remote repositories offer several additional benefits:
Reported download statistics
Artifactory maintains download statistics for repositories so you are able to evaluate if artifacts are still being used and manage your cleanup policies. When you proxy a repository in another instance of Artifactory, and cache an artifact downloaded from the other instance, the distant Artifactory is not aware if users on your end continue to use the artifact (downloading it from your local cache), and may end up cleaning up the original artifact. An Artifactory Smart Remote Repository lets you notify the distant instance whenever a cached artifact is downloaded, so it can update an internal counter for remote downloads.
Download statistics may vary between Artifactory instances
Downloads are only reported through the proxy chain from the time this option is set, so the actual download statistics reported for an artifact may be different in the local Artifactory instance compared to the numbers reported in the remote Artifactory instance.
Synchronized properties
When you proxy a repository in another instance of Artifactory and cache an artifact downloaded from it, you may not be aware of changes that may have been made to the original artifact’s properties if they are done after you cache it. By synchronizing properties, any changes to artifact properties in the remote instance are propagated to your cached instance of the artifact.
Remote repository browsing
You can browse the contents of the repository in the remote Artifactory instance for all package types, even if none have been cached in your instance of Artifactory.
Source absence detection
When viewing a cached artifact, Artifactory will indicate if the original artifact in the remote instance has been deleted. This gives you an opportunity to copy the artifact over from your remote repository cache to a local repository in case you need to maintain access to it.
Note
When configuring a Smart Remote Repository, only use a Local or Remote Artifactory repository as an endpoint.
Configuration
To create a Smart Remote Repository, set the repository URL to point to a repository in another instance of Artifactory.
Repository URL must be prefixed with api/<type>
To accommodate different packaging format clients, for several repository types, when accessing the repository through Artifactory, the repository URL must be prefixed with api/<type> in the path.
For example,
http://<JFrog URL>/artifactory/api/<package type>/<repository key>
Or, if you are using Artifactory Cloud the URL would be:
https://<server name>.jfrog.io/artifactory/api/<package type>/<repository key>
The prefix is required for the following repository types:
Type | Prefix |
---|---|
Bower |
|
Chef |
|
CocoaPods |
|
Conan |
|
Docker |
|
Go |
|
NuGet |
|
Npm |
|
PHP Composer |
|
Puppet |
|
PyPI |
|
RubyGems |
|
PyPI Settings
PyPi repositories also require a registry URL which depends on whether the target is a local, remote or virtual repository on the target Artifactory instance. For example,
For a local repository:
URL: http://<JFROG_URL>/artifactory/pypi-local/
Registry URL: http://<JFROG_URL>/artifactory/api/pypi/pypi-local/
For a remote repository:
URL: http://<JFROG_URL>/artifactory/pypi-remote/
Registry URL: h
ttp://<JFROG_URL>/artifactory/api/pypi/pypi-remote/
Once you have finished entering the URL and move to another field, Artifactory automatically detects that the remote URL is on another instance of Artifactory and displays a dialog where you can configure the behavior of your smart remote repository.
Note also that the package type icon is overlaid with an Artifactory logo to indicate a smart remote repository.
Field | Description |
---|---|
Report Statistics | If set, Artifactory will notify the remote instance whenever an artifact in the Smart Remote Repository is downloaded locally so that it can update its download counter. Note that if this option is not set, there may be a discrepancy between the number of artifacts reported to have been downloaded in the different Artifactory instances of the proxy chain. |
Sync Properties | If set, properties for artifacts that have been cached in this repository will be updated if they are modified in the artifact hosted at the remote Artifactory instance. The trigger to synchronize the properties is a download of the artifact from the remote repository cache of the local Artifactory instance. |
List Remote Folder Items | If set, enables Remote List Browsing. |
Source Absence Detection | If set, Artifactory displays an indication on cached items if they have been deleted from the corresponding repository in the remote Artifactory instance. |
You can modify these settings at any time from the Edit Repository screen.
Smart Remote NuGet Repositories
When configuring a Smart Remote NuGet repository, make sure to set Nuget Download Context Path to Download
and NuGet Feed Context Path should remain blank.
Remote List Browsing
When List Remote Folder Items is checked for a repository, Artifactory lets you navigate the contents of the repository at the remote Artifactory instance, for all package types, even if the artifacts have not been cached in the repository defined in your instance of Artifactory. If the remote server discloses its files in a simple HTML index, Artifactory will try to list them.
REST API
For a repository to be identified as a Smart Remote Repository, you need to set the “enabled” flag to true under “contentSynchronisation” (under Repository Configuration JSON).