pploy
pploy copied to clipboard
THIS PROJECT IS NO LONGER MAINTAINED IN FAVOR OF https://github.com/edvakf/go-pploy
pploy
The deploy lock manager for pixiv.
With pploy you can;
- deploy any git repository with a deploy script placed at .deploy/bin/deploy
- add a git repository for deploy list easily
- let your project members lock a project between staging check and production deploy
- configure LDAP info to fetch staffs' names
- notify deployments to Slack and idobata
Requirements to a repository to be deployed
It must be a git repo.
It must have an executable file .deploy/bin/deploy at the top level of the repo.
It can optionally have .deploy/config/readme.html which will be displayed at it's deploy page.
The deploy script is run as;
DEPLOY_USER=foo DEPLOY_ENV=staging .deploy/bin/deploy
So you can do pretty much anything there, eg. call a Capistrano command.
Changing the DEPLOY_ENVs
By default, staging and production are the only deploy envs supported. If you want to change them, add a file named .deploy/config/deploy_envs in the repo with one line per env.
preview
staging
production
Config values
Working directory
pploy.dir="/tmp/pploy"
The working directory in which repos are cloned and logs are written.
Deploy user names
pploy.users=["foo", "bar"]
Names of users who can gain lock of projects.
LDAP
pploy.ldap.url="ldap://ldap.example.com:389"
pploy.ldap.login="cn=someone,dc=example,dc=com"
pploy.ldap.password="SomeonesPassword"
pploy.ldap.search="dc=deployers,dc=example,dc=com"
pploy.ldap.cachettl=3600
You can optionally set an LDAP configuration from which to fetch member names.
LDAP's cn (Common Name) values are used.
If pploy.ldap.cachettl is omitted, it caches the names for an hour.
Lock minutes
pploy.lock.gainMinutes=20
pploy.lock.extendMinutes=10
These are for how long a project is locked once someone gained and extended a lock.
Slack
pploy.slack.endpoint="https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/1234567890abcdefghijklmn"
If enabled, deploy logs are posted to Slack through an Incoming WebHook integration.
Idobata
pploy.idobata.endpoint="https://idobata.io/hook/generic/11112222-3333-4444-5555-666677778888"
If enabled, deploy logs are posted to idobata.