Beeper
Beeper is a tool for Python that simplified distribution on Unix servers. It defines a compact and self-contained way for offline installation. The aim of beeper is to pre-download all dependencies and pre-compile all assets before deployment.
The principles of Beeper are:
- No build infrastructure on production server;
- No network call on production server;
- No vague version of dependencies.
Beeper need you to have:
wheel
,virtualenv
,pip
installed;- normally seen Unix command:
unzip
,tar
,grep
; requirements.txt
in root of your project.
You can get the tool directly from PyPI:
$ pip install beeper
To create a beeper distribution, you need to define build information and run build command.
Beeper parse a YAML file, default beeper.yml
, to read build information. For example, a Flask example might be like this:
application: example
manifest:
- app.py
Running build command is simple::
$ beeper build --version 1
If you build project from a git repo, you can always get version from a git log command::
$ beeper build --version `git log -1 --format=%h`
Once build done, it will have created a tar file generated in dist
folder with all dependencies and an installation script.
You can then distribute this file to remote servers and install it::
$ scp dist/example-1.tgz deploy@server:/var/www/example/example-1.tgz
$ ssh deploy@server
deploy $ cd /var/www/example/
deploy $ tar -xzf example-1.tgz
deploy $ ./install.sh