Generic Repositories in JFrog Artifactory¶
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.gzdistributions) - 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¶
- Go to Administration โ Repositories โ + New Repository
- Select Local
- Choose Generic
- Set Repository Key:
binaries-local - Click Create Local Repository
Step 2: Create a Remote Generic Repository¶
You can proxy any HTTP-accessible binary store via a Generic Remote:
- Go to Administration โ Repositories โ + New Repository
- Select Remote
- Choose Generic
- Set Repository Key:
github-releases-remote - Set URL:
https://github.com(This caches GitHub Release downloads through Artifactory) - Click Create Remote Repository
Step 3: Upload a File via the JFrog UI¶
- Go to Application โ Artifactory โ Artifacts
- Select
binaries-local - Click Deploy (top right)
- Drag and drop your file or select it
- Set the Target Path (e.g.,
my-app/1.0.0/my-app-1.0.0.tar.gz) - 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