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
- [GitLab]:Webhooks 實現自動化伺服器專案部署GitlabWebHook伺服器
- Github webhooks 自動部署部落格文章,使用總結【含視訊】GithubWebHook
- 使用 git 自動部署程式碼Git
- git利用post-receive自動化部署Git
- [原] php + Laravel 實現部署自動化PHPLaravel
- 使用Jenkins實現前端自動化打包部署(Linux版本)Jenkins前端Linux
- Docker 之 Jenkins自動化部署DockerJenkins
- Jenkins自動化部署伺服器及git 提交及git tag標籤版本更新流程,超詳細!Jenkins伺服器Git
- Git Webhook自動部署專案GitWebHook
- 初試 Git hooks 自動部署GitHook
- 利用gitHub的webhooks實現前端專案自動化部署---個人摸索的一次學習總結GithubWebHook前端
- Docker 之 Spring Boot 自動化部署DockerSpring Boot
- 前端之路: 用github的webhooks實現專案自動化構建前端GithubWebHook
- 使用JulieOps管理Kafka自動化部署?Kafka
- 基於Jenkins實現php專案的自動化測試、自動打包和自動部署JenkinsPHP
- Beego 自動化部署Go
- 使用 git hook 實現伺服器程式碼自動部署GitHook伺服器
- 小米便籤AS部署之Git的基本使用Git
- GO 使用Webhook 實現github 自動化部署GoWebHookGithub
- 使用Jenkins自動化部署Java專案JenkinsJava
- 使用mina自動化部署Rails應用AI
- Centos 從安裝到部署之 自動化構建及部署(三)CentOS
- 使用pm2自動化部署node專案
- 自動化測試之:Jenkins安裝與部署Jenkins
- Windows+.NetCore+git+IIS在Jenkins上的自動化部署入門WindowsNetCoreGitJenkins
- 陷入jenkins自動化部署的坑Jenkins
- Mysql5.6 自動化部署MySql
- .NET網站自動化部署網站
- vue自動化部署指令碼Vue指令碼
- [譯] 用 git flow 來讓 git workflow 自動化Git
- 使用 Jenkins + Ansible 實現自動化部署 NginxJenkinsNginx
- Jenkins持續部署-自動生成版本號Jenkins
- 利用 webhook 實現 Git 自動部署 Laravel 程式碼WebHookGitLaravel
- Git 伺服器 利用 hook 實現自動部署Git伺服器Hook