git自動化部署之webhooks的使用(php版本)
在github的webhooks中設定對應資訊
- 設定要請求的伺服器命令呼叫地址, 如:
http://fizzday.net/webhooks
- 設定金鑰key, 如: fizzday
在伺服器上編寫對應的命令(純PHP程式碼)
- 編寫
http://fizzday.net/webhooks
請求的方法如下:
<?php
// GitHub Webhook Secret.
// Keep it the same with the 'Secret' field on your Webhooks / Manage webhook page of your respostory.
$secret = "";
// 專案根目錄, 如: "/var/www/fizzday"
$path = "";
// Headers deliveried from GitHub
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
if ($signature) {
$hash = "sha1=" . hash_hmac('sha1', $HTTP_RAW_POST_DATA, $secret);
if (strcmp($signature, $hash) == 0) {
echo shell_exec("cd {$path} && /usr/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1");
exit();
}
}
http_response_code(404);
- 命令說明:
shell_exec("cd {$path} && /usr/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1");
/usr/bin/git reset --hard origin/master
強制恢復版本到前一個穩定版/usr/bin/git clean -f
清理提交的更改/usr/bin/git pull 2>&1
拉取最新的版本到本地
也可以呼叫本地指令碼
建立shell
指令碼檔案webhooks.sh
, 並寫入:
#!/bin/bash
WEB_PATH='/var/www/fizzday'
WEB_USER='nginx'
WEB_USERGROUP='nginx'
echo "Start deployment"
cd $WEB_PATH
echo "pulling source code..."
git reset --hard origin/master
git clean -f
git pull
git checkout master
echo "changing permissions..."
chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH
echo "Finished."
相關文章
- 利用github提供的Webhooks實現自動化部署GithubWebHook
- 使用GitHub的Webhooks實現程式碼的自動部署GithubWebHook
- 使用 Git 實現 專案的自動化部署Git
- 使用 Git 實現 Laravel 專案的自動化部署GitLaravel
- Github webhooks 自動部署部落格文章,使用總結【含視訊】GithubWebHook
- 使用 git 自動部署程式碼Git
- 使用Jenkins實現前端自動化打包部署(Linux版本)Jenkins前端Linux
- [原] php + Laravel 實現部署自動化PHPLaravel
- Docker 之 Jenkins自動化部署DockerJenkins
- Jenkins自動化部署伺服器及git 提交及git tag標籤版本更新流程,超詳細!Jenkins伺服器Git
- Docker 之 Spring Boot 自動化部署DockerSpring Boot
- Git Webhook自動部署專案GitWebHook
- 初試 Git hooks 自動部署GitHook
- 使用JulieOps管理Kafka自動化部署?Kafka
- 前端之路: 用github的webhooks實現專案自動化構建前端GithubWebHook
- 利用gitHub的webhooks實現前端專案自動化部署---個人摸索的一次學習總結GithubWebHook前端
- Windows+.NetCore+git+IIS在Jenkins上的自動化部署入門WindowsNetCoreGitJenkins
- 使用Jenkins自動化部署Java專案JenkinsJava
- 小米便籤AS部署之Git的基本使用Git
- 使用 git hook 實現伺服器程式碼自動部署GitHook伺服器
- Gitlab自動部署之四:使用Gitlab-runner部署Gitlab的專案Gitlab
- Maven 自動化部署Maven
- Maven自動化部署Maven
- GO 使用Webhook 實現github 自動化部署GoWebHookGithub
- 使用 Jenkins + Ansible 實現自動化部署 NginxJenkinsNginx
- [自動化]基於kolla的自動化部署ceph叢集
- 自動化測試之:Jenkins安裝與部署Jenkins
- 陷入jenkins自動化部署的坑Jenkins
- Jenkins持續部署-自動生成版本號Jenkins
- PHP程式碼自動檢測(git/svn整合PHP_CodeSniffer)PHPGit
- Docker+LNMP+Jenkins+ 碼雲實現 PHP 程式碼自動化部署DockerLNMPJenkinsPHP
- python 包之 selenium 自動化使用教程Python
- Git 版本控制工具的使用Git
- vue 自動化部署 jenkins 篇VueJenkins
- Python自動化部署工具-FabricPython
- Mysql5.6 自動化部署MySql
- .NET網站自動化部署網站
- Jenkins 自動化(CI/DI)部署Jenkins
- vue自動化部署指令碼Vue指令碼