Software repository API
Go to file
dave 2b10e711b4 Add apt repo info screen 2018-10-28 16:47:01 -07:00
repobot Add apt repo info screen 2018-10-28 16:47:01 -07:00
templates initial commit 2018-10-21 16:38:15 -07:00
.dockerignore initial commit 2018-10-21 16:38:15 -07:00
.gitignore initial commit 2018-10-21 16:38:15 -07:00
Dockerfile initial commit 2018-10-21 16:38:15 -07:00
README.md Add basic replication 2018-10-28 16:46:40 -07:00
requirements.txt Add basic replication 2018-10-28 16:46:40 -07:00
setup.py initial commit 2018-10-21 16:38:15 -07:00
start Nest data deeper 2018-10-28 10:07:15 -07:00

README.md

docker-artifact

Software repository server

Artifact provides an HTTP API for repository management. Currently, Python and Apt repositories are supported.

Quickstart

  • Pull or build the image
  • docker run -it --rm -v /some/host/dir:/data -p 80:8080 artifact

Persistent data will be placed in /data. The webserver will listen on port 8080 by default.

Examples

Upload python package:

curl -vv -F 'f=@pyircbot-4.0.0.post3-py3.5.egg' 'http://host/addpkg?provider=pypi&reponame=main&name=pyircbot&version=4.0.0'

Install python packages:

pip3 install -f http://host/repo/pypi/main/ --trusted-host host repobot

Upload apt package:

curl -vv -F 'f=@extpython-python3.7_3.7.0_amd64.deb' 'http://host/addpkg?provider=apt&reponame=main&name=extpython-python3.7&version=3.7.0&dist=bionic'

Install apt packages:

wget -qO- http://host/repo/apt/main/repo.key | apt-key add - && \
echo "deb http://host/repo/apt/main bionic main" | tee -a /etc/apt/sources.list && \
apt-get update && \
apt-get install -y extpython-python3.6

Replication

Repobot can automatically copy packages to neighbor repobot instances. Pass -n with one or more neighbor addresses in the format of http://1.2.3.4:8080. When new packages are submitted, they will be queued for replication. The server will periodically attempt to submit the package to each neighbor.

Notes

  • Repos are created automatically when a package is added to them.
  • Repo URLs are structured as: /repo/<provider>/<name>. Deeper URLs are handled directly by the provider.
  • The apt provider will generate a gpg key per repo upon repo creation

Todo

  • Auth
  • Delete packages
  • Human-readable package listing
  • Support using existing GPG keys