日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用码云git的webhook实现生产环境代码的自动pull

發(fā)布時(shí)間:2024/8/26 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用码云git的webhook实现生产环境代码的自动pull 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

普通公司小項(xiàng)目,傳統(tǒng)更新線上代碼是每次ftp/sftp上傳,或提交到svn/git后再ssh到線上環(huán)境中去手動(dòng)拉取代碼,十分麻煩,雖然用上了版本控制,逼格還是不夠高啊!
現(xiàn)在的線上倉(cāng)庫(kù)都支持hook技術(shù),可以很方便的實(shí)現(xiàn)代碼的自動(dòng)化管理。比如我現(xiàn)在使用gitee.com倉(cāng)庫(kù)的webhook功能,監(jiān)聽master分支有push動(dòng)作時(shí),可以自動(dòng)通過(guò)設(shè)置的hook通知生產(chǎn)環(huán)境中的腳本執(zhí)行g(shù)it pull拉取代碼,自動(dòng)更新,非常方便。

1. 設(shè)置并使用公鑰實(shí)現(xiàn)免密碼
目標(biāo)環(huán)境中使用

ssh-keygen -t rsa -C "xxxxx@zh30.com"
#cat ~/.ssh/id_rsa.pub 查看公鑰信息

一路回車生成公鑰,在碼云項(xiàng)目管理-部署公鑰管理中,提交這個(gè)公鑰串。
修改項(xiàng)目.git/config文件的url為如下格式

[remote "origin"]
url = git@gitee.com:xxxxx/xxx.git

git pull 測(cè)試

2. 根目錄或其它位置放一個(gè)php文作用webhook的通知接口,內(nèi)容如下:

// 本地倉(cāng)庫(kù)路徑 項(xiàng)目目錄
$local?=?'/home/wwwroot/your_project';

// 密碼 gitee項(xiàng)目管理webhook中設(shè)置
$password?=?'654321';

//如果請(qǐng)求體內(nèi)容為空,返回錯(cuò)誤
$payload?=?file_get_contents('php://input');
if?(!$payload)?{
? ??header('HTTP/1.1 400 Bad Request');
? ??die('HTTP HEADER or POST is missing.');
}

// 如果啟用驗(yàn)證,并且驗(yàn)證買QQ平臺(tái)失敗,返回錯(cuò)誤
// gitee默認(rèn)返回json,解析json后驗(yàn)證密碼
$data?=?json_decode($payload,?true);
if(empty($data)?||?$data['password']?!=?$password)?{
? ??header('HTTP/1.1 403 Permission Denied');
? ??die('Permission denied.');
}

// 如果倉(cāng)庫(kù)目錄不存在,返回錯(cuò)誤
if?(!is_dir($local))?{
? ??header('HTTP/1.1 500 Internal Server Error');
? ??die('Local directory is missing')}

//輸出執(zhí)行結(jié)果 包括錯(cuò)誤信息,在gitee webhook中可以查看和測(cè)試
echo?shell_exec("cd?{$local}?&& git pull 2>&1");
die("done "?.?date('Y-m-d H:i:s',?time()));

3. 碼云項(xiàng)目管理中,webhooks管理,添加,配置這個(gè)php的地址和對(duì)應(yīng)的明文密碼。保存測(cè)試,頁(yè)面下方會(huì)顯示最后一次的腳本執(zhí)行信息。

4. 執(zhí)行出錯(cuò)的話,很多時(shí)候是權(quán)限問(wèn)題。php腳本一般是由www或www-data等帳戶權(quán)限來(lái)執(zhí)行,所以整個(gè)項(xiàng)目目錄對(duì)此帳戶要有權(quán)限讀寫,比如全局chown -R www:www .。
可能需要把/root/.ssh和/root/.gitconfig 拷貝到/home/www中。

真的非常好用,現(xiàn)在就不需要再登錄到ssh上手動(dòng)git pull更新了,本地開發(fā)完測(cè)試完成后,直接push到git后,線上就自動(dòng)更新了~~

總結(jié)

以上是生活随笔為你收集整理的使用码云git的webhook实现生产环境代码的自动pull的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。