Skip to content

Generic Repositories in JFrog Artifactory

โ† Back to JFrog Tutorials


Generic repositories in JFrog Artifactory are the most flexible storage type. They store any binary file without package format constraints โ€” making them perfect for build artifacts, scripts, config files, database dumps, infrastructure binaries, and more.

All steps use JFrog SaaS at https://<company>.jfrog.io.


When to Use Generic Repositories

Use a Generic repository when:

  • The artifact is not tied to a specific package manager (e.g., not Maven, npm, PyPI)
  • You need to store build outputs (e.g., compiled binaries, *.tar.gz distributions)
  • You want to store scripts and configuration files with versioning
  • You are storing ML models (.pkl, .onnx, .gguf, safetensors)
  • You have custom tools or CLI binaries to share across teams

Step 1: Create a Local Generic Repository

  1. Go to Administration โ†’ Repositories โ†’ + New Repository
  2. Select Local
  3. Choose Generic
  4. Set Repository Key: binaries-local
  5. Click Create Local Repository

Step 2: Create a Remote Generic Repository

You can proxy any HTTP-accessible binary store via a Generic Remote:

  1. Go to Administration โ†’ Repositories โ†’ + New Repository
  2. Select Remote
  3. Choose Generic
  4. Set Repository Key: github-releases-remote
  5. Set URL: https://github.com (This caches GitHub Release downloads through Artifactory)
  6. Click Create Remote Repository

Step 3: Upload a File via the JFrog UI

  1. Go to Application โ†’ Artifactory โ†’ Artifacts
  2. Select binaries-local
  3. Click Deploy (top right)
  4. Drag and drop your file or select it
  5. Set the Target Path (e.g., my-app/1.0.0/my-app-1.0.0.tar.gz)
  6. Click Deploy

Step 4: Upload via JFrog CLI

# Upload a single file
jf rt upload my-app-1.0.0.tar.gz binaries-local/my-app/1.0.0/

# Upload with properties (key-value metadata)
jf rt upload my-app-1.0.0.tar.gz binaries-local/my-app/1.0.0/ \
  --props "version=1.0.0;env=production;team=platform"

# Upload all files matching a pattern
jf rt upload "dist/*.tar.gz" binaries-local/my-app/2.0.0/

Step 5: Download via JFrog CLI

# Download a specific file
jf rt download binaries-local/my-app/1.0.0/my-app-1.0.0.tar.gz ./

# Download files matching a pattern
jf rt download "binaries-local/my-app/1.0.0/*" ./downloads/

Step 6: Download via curl

curl -u your-username:your-access-token \
  -O "https://<company>.jfrog.io/artifactory/binaries-local/my-app/1.0.0/my-app-1.0.0.tar.gz"

Step 7: Search Artifacts by Properties

Once you upload with properties (key-value metadata), you can search by them:

# Find all production artifacts at version 1.0.0
jf rt search \
  --props "version=1.0.0;env=production" \
  binaries-local/

Organizing Your Generic Repo

A consistent folder structure makes generic repos easy to navigate:

binaries-local/
โ”œโ”€โ”€ my-app/
โ”‚   โ”œโ”€โ”€ 1.0.0/
โ”‚   โ”‚   โ”œโ”€โ”€ my-app-1.0.0.tar.gz
โ”‚   โ”‚   โ””โ”€โ”€ my-app-1.0.0-sha256.txt
โ”‚   โ””โ”€โ”€ 2.0.0/
โ”‚       โ””โ”€โ”€ my-app-2.0.0.tar.gz
โ”œโ”€โ”€ scripts/
โ”‚   โ””โ”€โ”€ deploy.sh
โ””โ”€โ”€ configs/
    โ””โ”€โ”€ nginx-prod.conf

Use Cases

Scenario Solution
Store compiled binaries from CI Upload dist/*.tar.gz to binaries-local
Share scripts across teams Upload to binaries-local/scripts/ with version paths
Store trained ML models Upload .pkl, .onnx to binaries-local/models/
Cache GitHub Release downloads Set up github-releases-remote as proxy
Attach metadata to artifacts Use --props for build number, branch, environment

Next Steps

๐Ÿ‘‰ JFrog CLI Basics ๐Ÿ‘‰ ML Model Repositories


๐Ÿง  Quick Quiz

#

Which JFrog Artifactory repository type should you use to store compiled binaries that don't belong to any package manager format?


๐Ÿ“ฌ DevopsPilot Weekly โ€” Learn DevOps, Cloud & Gen AI the simple way.
๐Ÿ‘‰ Subscribe here