node-link / cakephp-git-deploy
Plugin to operate automatic git-pull server with CakePHP 3 (Using WebHook from GitHub, GitLab and Bitbucket)
Installs: 51
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Type:cakephp-plugin
Requires
- cakephp/cakephp: ^3.5
Requires (Dev)
- phpunit/phpunit: ^5.7.14|^6.0
This package is auto-updated.
Last update: 2025-03-10 00:59:56 UTC
README
Plugin to operate automatic git-pull server with CakePHP 3 (Using WebHook from GitHub, GitLab and Bitbucket)
Requirements
- CakePHP 3.5 or later
- PHP 5.6 or later
Installation
1. Install plugin
You can install this plugin into your CakePHP application using composer.
The recommended way to install composer packages is:
composer require node-link/cakephp-git-deploy
2. Load plugin
Please load the plugin manually as follows:
<?php // In src/Application.php. Requires at least 3.6.0 use Cake\Http\BaseApplication; class Application extends BaseApplication { public function bootstrap() { parent::bootstrap(); // Load the plugin $this->addPlugin('NodeLink/GitDeploy'); } }
Prior to 3.6.0, you should use Plugin::load()
:
<?php // In config/bootstrap.php use Cake\Core\Plugin; Plugin::load('NodeLink/GitDeploy', ['bootstrap' => true, 'routes' => true]);
Or, use bin/cake
to load the plugin as follows:
bin/cake plugin load -b -r NodeLink/GitDeploy
Configuration
Edit config/.env
or config/app.php
.
The full default configuration is as follows:
<?php return [ 'GitDeploy' => [ 'enable' => filter_var(env('GIT_DEPLOY_ENABLE', false), FILTER_VALIDATE_BOOLEAN), 'token' => env('GIT_DEPLOY_TOKEN', 'secret'), 'branch' => env('GIT_DEPLOY_BRANCH', 'master'), 'git_path' => env('GIT_DEPLOY_GIT_PATH', '/usr/bin/git'), 'composer_path' => env('GIT_DEPLOY_COMPOSER_PATH', '/usr/local/bin/composer') ], ];
It is recommended to add following items to config/.env
.
export GIT_DEPLOY_ENABLE="true" export GIT_DEPLOY_TOKEN="__TOKEN__" export GIT_DEPLOY_BRANCH="master" export GIT_DEPLOY_GIT_PATH="/usr/bin/git" export GIT_DEPLOY_COMPOSER_PATH="/usr/local/bin/composer" export COMPOSER_HOME="/var/www"
It may not work unless COMPOSER_HOME
is set correctly.
Settings
GitHub
In your repository, navigate to Settings → Webhooks → Add webhook, and use the following settings:
- Payload URL: https://example.com/git-deploy
- Content type: application/json
- Secret: The value of
GIT_DEPLOY_TOKEN
inconfig/.env
- Which events would you like to trigger this webhook?: 🔘 Just the push event
- Active: ☑️
Click "Add webhook" to save your settings, and the script should start working.
GitLab
In your repository, navigate to Settings → Integrations, and use the following settings:
- URL: https://example.com/git-deploy
- Secret Token: The value of
GIT_DEPLOY_TOKEN
inconfig/.env
- Trigger: ☑️ Push events
- Enable SSL verification: ☑️ (only if using SSL, see GitLab's documentation for more details)
Click "Add webhook" to save your settings, and the script should start working.
Bitbucket
In your repository, navigate to Settings → Webhooks → Add webhook, and use the following settings:
- Title: Git Deploy
- URL: https://example.com/git-deploy?token=
GIT_DEPLOY_TOKEN
- Active: ☑️
- SSL / TLS: ⬜ Skip certificate verification (only if using SSL, see Bitbucket's documentation for more details)
- Triggers: 🔘 Repository push
Click "Save" to save your settings, and the script should start working.
Trouble Shooting
If execution is not successful, please refer to logs/error.log
and logs/debug.log
.
Details of the error at the time of execution may be listed in some cases.
Permissions
When it does not work well, in many cases, there is a problem with permissions.
Please set so that the web server user (www
, www-data
, apache
, etc...) can git pull
and composer install
.
It is suggested this be accomplished by changing the repository group to the web server user's and giving the group write permissions:
- Open a terminal to the directory containing the repository on the server.
- run
sudo chown -R yourusername:webserverusername project-dir/
to change the group of the repo. - run
sudo chmod -R g+s project-dir/
to make the group assignment inherited for new files/dirs. - run
sudo chmod -R 775 project-dir/
to set read & write for both owner and group.
SSH
Generate an SSH key and add it to your account so that git pull can be run without a password.
Reporting Issues
If you have a problem with the GitDeploy plugin, please send a pull request or open an issue on GitHub.
Also, I would appreciate it if you contribute to updating README.md
file.