Software Review: Pulp Artifact Repository


Pulp is open source and self-hostable.

It also provides generic artifact support.

This is sorta hand-wavey because I was making some notes after the fact.

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.


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).