* Release worker: provide full env + remove worker.
This change improves the release task pseudo-worker.
* Provides the full environment (both app env and config env) to the
release task.
* Uses a non-zero return value to bail early if release
phase fails.
* Make ENV_ROOT (venv) accessible to release scripts.
* Add Let's Encrypt SSL cert support.
This patch has piku use the acme.sh script to request and maintain Let's
Encrypt SSL certs rather than generate self-signed certs. For it to
work you must install acme.sh as the user piku. Installation
instructions here: https://github.com/Neilpang/acme.sh#1-how-to-install
The next commit updates piku-bootstrap to install acme.sh by default.
If acme.sh is not installed piku continues to default to a self-signed
certificate.
* Install acme.sh SSL cert wrangler in bootstrap.
The previous commit contains details about usage.
* Bootstrap script initial working version.
* Bootstrap: more verbose messaging.
* Bootstrap: working up to piku over SSH.
* Bootstrap: full bootstrap minus nginx.
* Bootstrap: ensure py2 for Ansible.
* Bootstrap: more deps.
* Bootstrap: piku user Ansible tmp to avoid err.
* Bootstrap: local venv source in ~/.piku-bootstrap
* Bootstrap: nginx + incron install.
* Bootstrap: self-install logging and less verbose.
* Bootstrap: special permissions for --pi mode.
* Improved usage + self-install text.
Allows the user to run arbitrary release commands (such as running Django collectstatic and/or migrations). The 'release' command runs before workers are spawned.
Kind of works like this: https://devcenter.heroku.com/articles/release-phase
This runs the 'restart' command after pushing if AUTO_RESTART is set in ENV. This addresses the concern raised in #27 and allows the user to optionally push-and-forget similar to other PaaS systems.
Before this change if you tried to `git push -f` it broke the update.
Git would output an error saying branches have diverged.
With this change piku basically assumes whatever you pushed into
origin/master is the thing you actually want to deploy, and uses that.
(even if it's a commit --amend or a reset to some previous point in
history etc.)
Git submodules can be a convenient way of including some 3rd party dependency/repo in your app. With this change piku automatically checks out any submodules included in the repository.