玩转git之webhook应用初探
生活随笔
收集整理的這篇文章主要介紹了
玩转git之webhook应用初探
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.通過gitlab的webhook來進行測試項目的自動部署;
2.php程序以www用戶來執行,當執行exec("sh update.sh")時,update.sh腳本也是以www用戶執行的
注:exec("sh update.sh >& error.log");可以將文件重定向到error.log文件中
3.結果發現,之前設置的ssh密鑰是以root用戶來設置的,php以www用戶執行腳本中的git pull 命令時就沒有權限
4.通過設置www下的ssh密鑰, sudo -u www ssh-keygen ... ?以www用戶執行生成密鑰的操作
5.gitlab的deploy keys 可以設置ssh密鑰只能針對指定的項目,所以,針對項目的,我們將rsa.pub貼到指定項目的deploy keys中去,而針對用戶的,我們將ssh密鑰貼到gitlab的用戶信息的ssh keys中去;
======================================================================
在百度搜索了一下 git webhook 這個關鍵字,沒有看到有相關的詳細的應用教程。
所以決定把 自己這段時間以來的摸索 寫成文字 分享給大家 。
最近碰到這樣的一個需求,就是?本地提交代碼 到 git倉庫以后 需要 網站 遠程自動同步代碼?。
git 的 webhook ?正好能 滿足 這個需求。
?
具體步驟:
服務器端:
1. 服務器端 生成 apache 的 deploy key
sudo -u apache ssh-keygen -t rsa -C “jianl@example.com”
2.給apache 操作目錄的權限
第一種方法 直接給 目錄 777 權限 簡單粗暴
第二種方法 建立用戶組 ?把 ftp用戶 和 apache 添加到該組別里面 , 給予該組權限
groupadd gitwriters adduser [yourusername] gitwriters adduser apache gitwriters chgrp -R gitwriters /path/to/your/repo chmod -R g+rw /path/to/your/repo ?3.在需要自動同步的倉庫打開hook cd /項目/.git/ cp hooks/post-receive.sample hooks/post-receive vim hooks/post-receive #加入下面代碼 GIT_WORK_TREE=/home/www git checkout -f ?4.加入接收 webhook的 腳本, 在項目 創建 update.php $www_folder = "/2T/ftp/utools/uilib" ;//git倉庫地址 $git_repo = "git@git.dev/.......abc.git" ;//執行指令 echo shell_exec(" cd $www_folder && git pull $git_repo 2>&1 "); gitlab 端的設置: 找到項目的設置 , deploy key項 添加 直接 apache用戶 生成的 ssh key webhook 項 添加 網站地址/update.php (正常能夠訪問的鏈接) , 勾選 Push events 保存完全以上配置 。服務器端自動同步代碼的功能就能夠實現了。
總結
以上是生活随笔為你收集整理的玩转git之webhook应用初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔兽世界私服架设
- 下一篇: java--阿拉伯数字转中文数字