Software Review: Pulp Artifact Repository
tl;dr
Pulp is open source and self-hostable.
It also provides generic artifact support.
Setup Using Docker-Compose
- add db encryption key
- make dirs
- add mounts into docker-compose
- startup using the development method. most important is probably PULP_TEST=1 .
Install pulp-cli
I needed to set base_url = “http://localhost:24817”.
pip install pulp-cli
pulp config add -e
pulp status
Interact Using pulp-cli
Workflow seems to be in general:
1. Artifact Upload
Uploads the file and creates an artifact; I think for managing duplicate data.
pulp artifact upload --file $file
2. File Creation
Actually creates the file object in the server.
pulp file content create --sha256 $sha256 --relative-path $file
3. Adding File To A Repository
Actually stores the file in a specific repository.
pulp file repository content add --repository $repo --sha256 $sha256 --relative-path $file
Generic Notes
Can make distributions that are like “example/release/4.0” “example/release/4.1”
Does a dist comprise of an entire repo? yes
- artifacts are at root of repo
- dist.base_path=example/release/4.1
Tried to flip it around and have the base path be nothing and the rel_path for artifacts have the “example/release/5.0”. Not great. base_path is required and MANIFEST winds up at root of base_path.
I do not think Pulp intends that you be able to easily publish lots of individual files that are pointing to a “latest” version.
Conclusion
I think the workflow that I want it just not what the Pulp project expects. Also I either do not correctly understand how to have a rolling ‘latest’ tag (or something similar) or Pulp does not support that easily (or maybe at all).