git-deploy is a deployment tool to allow for quick and easy deployments based on
the changes in a git repository, from git server on git push
command, by adding as remote hook in github/gitlab or manualy from git repo :
git-deploy supports deployment over SSH and FTP/S
Add new repository and install by running this commands:
wget -O - https://repository.salamek.cz/deb/salamek.gpg.key|sudo apt-key add -
echo "deb https://repository.salamek.cz/deb/pub all main" | sudo tee /etc/apt/sources.list.d/salamek.cz.list
sudo apt-get update && sudo apt-get install git-deploy
For archlinux you can install package from AUR https://aur.archlinux.org/packages/git-deploy/
Just run git-deploy
in your git repo root
Just simlink /usr/bin/git-deploy
AS post-receive
in hooks dir in repo you want to deploy
You must run git-deploy as daemon, first please edit file in /etc/git-deploy/config.py
(git-deploy.cfg is deprecated and will be migrated to new version) and make it suits your needs (config values should be Self-explanatory)
Then just start git-deploy
service and add it to your init if you want (for autostart on boot)
To deploy on git push
to GitHub repo add a new webhook (Repo detail->Settings->Webhooks & Service->Add webhook) with this format of url : http://[servername]:[port]/deploy.json
triggered on push
It's same as GitHub ;-)
In the root directory of your source code, create a deploy.py
file (deploy.ini is deprecated and its support will be removed in next release).
Here is a sample code for FTP acces (port can be omitted):
CONFIG = {
# Configure target or multiple targets
'targets': [
{
# Target uri, supported protocols are sftp, ftp, ftps format is standard URI
'uri': 'ftp://user:password@example.com/',
# Web hook to run remote hook after deploy is done, optional
'web_hook': 'http://example.com/your_hook',
# Enables disables this target
'enabled': True
}
],
# Set special file rights to deployed files, relative to GIT root
'file_rights': {
'dir/file/*': 777,
'dir/file': 775
}
}
git-deploy
stores file called REVISION
on your server inside the root path to your application.
This file stores the current revision of your application residing on your server.
When you run a git deploy
, git-deploy
downloads the REVISION
file, and checks to see what
files are different between revisions and either upload the changed files or delete them from the server.