Repository Management

JFrog CLI offers a set of commands for managing Artifactory repositories. You can create, update and delete repositories. To make it easier to manage repositories, the commands which create and update the repositories accept a pre-defined configuration template file. This template file can also include variables, which can be later replaced with values, when creating or updating the repositories. The configuration template file is created using the jf rt repo-template command.

Creating Repository Configuration Template

The jf rt repo-template (or jf rt rpt) command provides interactive prompts for building a JSON configuration template.

On running jf rt repo-template <filename>.json, the CLI prompts as follows:

Template Type

Select the template type. Following are the possible options:

  • create: Template for creating a new repository
  • update: Template for updating an existing repository
Select the template type (press Tab for options):

For example:

Select the template type (press Tab for options): create

Repository Key

Enter a unique identifier for the repository key. This is the key field in the final JSON.

Insert the repository key >

For example:

Insert the repository key > npm-local

Note

If you want to reuse the template for creating multiple repositories, use a variable as follows:

Insert the repository key > ${repo-key-var}

Repository Class

Select the repository class. Following are the possible options:

  • local: A physical, locally-managed repository into which you can deploy artifacts.
  • remote: A caching proxy for a repository managed at a remote URL. For remote repositories you need to enter a remote repository URL.
  • virtual: An aggregation of several repositories with the same package type under a common URL.
  • federated: A Federation is a collection of Federated repositories in different JPDs that are automatically configured for full bi-directional mirroring.
Select the repository class (press Tab for options):

For example:

Select the repository class (press Tab for options): local

Repository Package Type

Select the repository package type. Following are the possible options:

  • alpine
  • bower
  • cargo
  • chef
  • cocoapods
  • composer
  • conan
  • cran
  • debian
  • docker
  • gems
  • generic
  • gitlfs
  • go
  • gradle
  • helm
  • ivy
  • maven
  • npm
  • nuget
  • opkg
  • pypi
  • puppet
  • rpm
  • sbt
  • swift
  • terraform
  • vagrant
  • yum

Note

After selecting the repository package type, you can exit by entering :x or proceed to make advanced configurations.

Optional Repository Configurations

This table explains the optional keys available for configuring your desired repository in JFrog Artifactory.

Configuration KeyDescriptionLocalRemoteVirtualFederated
allowAnyHostAuthAllows sending credentials to any host upon redirection.✔️
archiveBrowseEnabledEnables viewing archive contents (e.g., ZIPs) in the UI.✔️✔️
artifactoryRequestsCanRetrieveRemoteArtifactsAllows the virtual repository to resolve artifacts from its remote members.✔️
assumedOfflinePeriodSecsSets the time (in seconds) to consider a remote repository offline after a connection failure.✔️
blackedOutTemporarily disables the repository, blocking all traffic.✔️✔️✔️
blockMismatchingMimeTypesBlocks caching of remote files if their MIME type is incorrect.✔️
blockPushingSchema1Blocks pushes from older Docker v1 clients, enforcing the v2 schema.✔️✔️✔️
bypassHeadRequestsSkips initial HEAD requests and sends GET requests directly to the remote repository.✔️
cdnRedirectRedirects client download requests to a configured Content Delivery Network (CDN).✔️✔️✔️
checksumPolicyTypeDefines how the server handles artifact checksums during deployment.✔️✔️
clientTlsCertificateSpecifies a client-side TLS certificate to use for authenticating to the remote repository.✔️
contentSynchronisationConfigures properties for synchronizing content from a remote Artifactory instance.✔️
defaultDeploymentRepoSets the default local repository for artifacts deployed to this virtual repository.✔️
descriptionProvides a short, human-readable summary of the repository's purpose.✔️✔️✔️✔️
downloadRedirectRedirects client downloads directly to the source URL instead of proxying through Artifactory.✔️✔️✔️
enableCookieManagementEnables stateful cookie handling for requests to the remote repository.✔️
environmentAdds a tag to classify the repository for a specific lifecycle stage (e.g., dev, qa, prod).✔️✔️✔️✔️
excludesPatternDefines a list of file path patterns to block from deployment.✔️✔️✔️✔️
failedRetrievalCachePeriodSecsSets the time (in seconds) to cache a "not found" response for a failed artifact download.✔️
fetchJarsEagerlyFor remote Maven repositories, proactively fetches JAR files when the index is updated.✔️
fetchSourcesEagerlyFor remote Maven repositories, proactively fetches source JARs when the index is updated.✔️
forceMavenAuthenticationFor virtual Maven repositories, requires authentication for all requests.✔️
handleReleasesDetermines if the repository can host stable, final release versions of packages.✔️✔️✔️
handleSnapshotsDetermines if the repository can host development or pre-release versions of packages.✔️✔️✔️
hardFailCauses requests to fail immediately upon any network error with the remote repository.✔️
includesPatternDefines a list of file path patterns that are allowed for deployment.✔️✔️✔️✔️
keyPairAssigns a GPG key pair to the virtual repository for signing metadata files.✔️
localAddressBinds outgoing connections to the remote repository to a specific local IP address.✔️
maxUniqueSnapshotsLimits the number of unique snapshot or pre-release versions stored for an artifact.✔️✔️
missedRetrievalCachePeriodSecsSets the time (in seconds) to cache a "not found" response for remote repository metadata.✔️
notesOffers a space for longer, more detailed information about the repository.✔️✔️✔️✔️
offlinePrevents Artifactory from making any network connections to the remote repository.✔️
optionalIndexCompressionFormatsDefines additional compression formats for repository index files to support various clients.✔️✔️✔️
passwordSets the password for authenticating to the remote repository.✔️
pomRepositoryReferencesCleanupPolicyFor virtual Maven repositories, controls how to handle repository references in POM files.✔️
primaryKeyPairRefSpecifies the primary GPG key pair to use for signing metadata.✔️
priorityResolutionGives a repository priority during package resolution within a virtual repository.✔️✔️✔️
projectKeyLinks the repository to a specific Project for organization and permission management.✔️✔️✔️✔️
propertySetsAssociates required metadata fields (properties) with the repository to enforce governance.✔️✔️✔️
proxySpecifies a pre-configured network proxy to use for requests to the remote repository.✔️
rejectInvalidJarsFor remote Java-based repositories, rejects and does not cache invalid or corrupt JAR files.✔️
remoteRepoChecksumPolicyTypeDefines how to handle checksums for artifacts downloaded from the remote repository.✔️
repoLayoutRefAssigns a folder structure layout to the repository, enabling metadata parsing.✔️✔️✔️✔️
repositoriesDefines the list of underlying repositories aggregated by the virtual repository.✔️
retrievalCachePeriodSecsSets the time (in seconds) to cache metadata for successfully downloaded remote artifacts.✔️
shareConfigurationShares the remote repository's configuration with other federated Artifactory instances.✔️
snapshotVersionBehaviorDefines how the server stores and manages snapshot versions.✔️✔️
socketTimeoutMillisSets the timeout (in milliseconds) for network connections to the remote repository.✔️
storeArtifactsLocallyControls whether artifacts downloaded from the remote repository are cached locally.✔️
suppressPomConsistencyChecksFor Maven repositories, disables validation checks on deployed POM files.✔️✔️✔️
synchronizePropertiesSynchronizes artifact properties from a remote Artifactory instance.✔️
unusedArtifactsCleanupEnabledEnables the automatic cleanup of unused cached artifacts from the remote repository.✔️
unusedArtifactsCleanupPeriodHoursSets the time (in hours) an unused cached artifact must wait before cleanup.✔️

After adding your desired configurations, enter :x to save the template file. Creates and saves a json template and exits the interactive terminal.

The sample json template is as follows:

{
  "description": "my npm local repository",
  "key": "my-npm-local",
  "packageType": "npm",
  "rclass": "local"
}

Reuse Template with Variables

Reuse the template by adding variables to the keys and provide value explicitly while executing the jf rt repo-create command.

For example:

jf rt repo-create repotemplate.json --vars "repo-name=my-npm-local"

If you want to pass multiple vars, enter the list of semicolon-separated(;) variables in the form of "key1=value1;key2=value2;..." (wrapped by quotes) to be replaced in the template. In the template, the variables should be used as follows: ${key1}.

jf rt repo-create repotemplate.json --vars "repo-name=my-npm-local;package-type=npm;repo-type=local"

Create / Update Repositories

These two commands create a new repository and updates an existing a repository. Both commands accept as an argument a configuration template, which can be created by the jf rt repo-template command. The template also supports variables, which can be replaced with values, provided when it is used.

Commands Params

CommandParameter / Description
Command-namert repo-create / rt repo-update
Abbreviationrt rc / rt ru
Command options:
--server-id[Optional] Artifactory Server ID configured using the 'jf config' command.
--vars[Optional] List of semicolon-separated(;) variables in the form of "key1=value1;key2=value2;..." to be replaced in the template. In the template, the variables should be used as follows: ${key1}.
Command arguments:
template pathSpecifies the local file system path for the template file to be used for the repository creation. The template can be created using the jf rt rpt command.

Create / Update Repositories Examples

Create a Repository Example

Create a repository, using the template.json file previously generated by the repo-template command.

jf rt repo-create template.json

Update a Repository Example 1

Update a repository, using the template.json file previously generated by the repo-template command.

jf rt repo-update template.json

Update a Repository Example 2

Update a repository, using the template.json file previously generated by the repo-template command. Replace the repo-name variable inside the template with a name for the updated repository.

jf rt repo-update template.json --vars "repo-name=my-repo"

Delete Repositories

This command permanently deletes a repository, including all of its content.

Commands Params

ParameterCommand / Description
Command namert repo-delete
Abbreviationrt rdel
Command options:
--server-id[Optional] Artifactory Server ID configured using the jf config command.
--quiet[Default: $CI] Set to true to skip the delete confirmation message.
Command arguments:
repository keySpecifies the repositories that should be removed. You can use wildcards to specify multiple repositories.

Delete Repositories Example

Delete a repository from Artifactory.

jf rt repo-delete generic-local

Manage Replications

JFrog CLI offers commands creating and deleting replication jobs in Artifactory. To make it easier to create replication jobs, the commands which creates the replication job accepts a pre-defined configuration template file. This template file can also include variables, which can be later replaced with values, when creating the replication job. The configuration template file is created using the jf rt replication-template command.

Create a Configuration Template

This command creates a configuration template file, which will be used as an argument for the jf rt replication-create command.

When using this command to create the template, you can also provide replaceable variable, instead of fixes values. Then, when the template is used to create replication jobs, values can be provided to replace the variables in the template.

Commands Params

ParameterCommand / Description
Command-namert replication-template
Abbreviationrt rplt
Command options:The command has no options.
Command arguments:
template pathSpecifies the local file system path for the template file created by the command. The file should not exist.

Manage Replications Example

Create a configuration template, with two variables for the source and target repositories. Then, create a replication job using this template, and provide source and target repository names to replace the variables.

$ jf rt rplt template.json
Select replication job type (press Tab for options): push
Enter source repo key > ${source}
Enter target repo key > ${target}
Enter target server id (press Tab for options): my-server-id
Enter cron expression for frequency (for example: 0 0 12 * * ? will replicate daily) > 0 0 12 * * ?
You can type ":x" at any time to save and exit.
Select the next property > :x
[Info] Replication creation config template successfully created at template.json.
$
$ jf rt rplc template.json --vars "source=generic-local;target=generic-local"
[Info] Done creating replication job.

Create Replication Jobs

This command creates a new replication job for a repository. The command accepts as an argument a configuration template, which can be created by the jf rt replication-template command. The template also supports variables, which can be replaced with values, provided when it is used.

Commands Params

ParameterCommand / Description
Command-namereplication-create
Abbreviationrt rplc
Command options:
--server-id[Optional] Artifactory Server ID configured using the 'jf config' command.
--vars[Optional] List of semicolon-separated(;) variables in the form of "key1=value1;key2=value2;..." to be replaced in the template. In the template, the variables should be used as follows: ${key1}.
Command arguments:
template pathSpecifies the local file system path for the template file to be used for the replication job creation. The template can be created using the jf rt rplt command.

Create Replication Jobs Examples

Create a Replication Job Example 1

Create a replication job, using the template.json file previously generated by the replication-template command.

jf rt rplc template.json

Update a Replication Job Example

Update a replication job, using the template.json file previously generated by the replication-template command. Replace the source and target variables inside the template with the names of the replication source and target repositories.

jf rt rplc template.json --vars "source=my-source-repo;target=my-target-repo"

Delete Replication Jobs

This command permanently deletes a replication jobs from a repository.

Commands Params

ParameterCommand / Description
Command namert replication-delete
Abbreviationrt rpldel
Command options:
--server-id[Optional] Artifactory Server ID configured using the jf config command.
--quiet[Default: $CI] Set to true to skip the delete confirmation message.
Command arguments:
repository keyThe repository from which the replications will be deleted.

Delete Replication Jobs Example

Delete a replication job from a repository.

jf rt rpldel my-repo-name


JFrog CLI offers a set of commands for managing Artifactory configuration entities.


When to Use These Commands

TaskTarget AudienceCommand(s)
Set up access control for a new team or projectPlatform Adminpermission-target-template then permission-target-create
Onboard users in bulk during org migrationPlatform Adminusers-create (CSV), group-create, group-add-users
Create a single user for testing or service accountsDevOps Engineeruser-create
Clean up stale users or groupsPlatform Adminusers-delete, group-delete
Manage repository configurations in CI/CDDevOps Engineerrepo-template then repo-create / repo-update
Set up replication between instancesPlatform Adminreplication-create

Create Users

This command allows creating a bulk of users. The details of the users are provided in a CSV format file.

For full CSV format, options, and examples, see jf rt users-create.


Delete Users

This command allows deleting a bulk of users. The command accepts a list of usernames to delete, either as a comma-separated argument or as a CSV file.

For full options and examples, see jf rt users-delete.


Create Groups

This command creates a new users group.

For full options and examples, see jf rt group-create.


Add Users to Groups

This command adds a list of existing users to a group.

For full options and examples, see jf rt group-add-users.


Delete Groups

This command deletes a group.

For full options and examples, see jf rt group-delete.




Manage Permission Targets

JFrog CLI offers commands creating, updating and deleting permission targets in Artifactory. To make it easier to create and update permission targets, the commands accept a pre-defined configuration template file.

For the full command reference for permission target management, see the individual command pages:



What’s Next

Start by managing users in your Artifactory instance.