repobot | ||
templates/pypi | ||
.dockerignore | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
requirements.txt | ||
setup.py | ||
start |
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