1、首先要到https://gitee.com/註冊一個帳號,並建立一個項目。php
2、把本地和服務器公鑰添加到碼雲公鑰管理nginx
3、到webHooks下添加webHooks設置git
而後添加一個觸發鉤子的url,當開發者提交主分支的時候,首先是把版本信息提交到碼雲,而後碼雲主動請求該url,並攜帶版本信息及密碼過去,進行驗證後觸發鉤子,鉤子再執行版本更新web
4、分別在客戶端和服務器端克隆項目下來apache
git clone git@gitee.com:timelink/project.git
5、搭建鉤子json
建立第三步配置的url訪問的php文件,我在此命名爲gitCode.php文件,編輯數組
<?php $post=file_get_contents('php://input');//獲取請求攜帶的參數 $post=json_decode($post ,true);//將json轉換成數組 //驗證密碼 保證請求安全性 if($get['password'] == '12345'){ exec('sudo -u root git pull origin master 2<&1', $output); echo json_encode($output); }else{ echo '失敗'; }
而後再webhooks管理能夠進行測試,出現相關成功信息,即說明配置成功安全
注意:在此處有個小坑服務器
(1)若是出現報錯:sudo no tty present and no askpass program specified,則由於對於apache,因爲其執行權限通常爲apache:apache,用戶和組都是apache, apache用戶的特色是無密碼,不能登陸,無環境變量等。post
解決方法:
1. 爲sudoer文件開啓w權限
chmod u+w /etc/sudoers
2. 執行visudo命令, 給apache用戶分配sudo權限
visudo
a. 註釋掉1行:
#Defaults requiretty
b. 增長2行:
Defaults visiblepw
apache ALL=(ALL) NOPASSWD:/usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg
我這裏容許在cgi中調用 /usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg三個命令,您能夠根據須要修改
注意上面這2行的做用相當重要,不可隨意修改其格式
c. 保存退出visudo,退出跟vi命令同樣
:wq
3. 關閉sudoer文件w權限
chmod -w /etc/sudoers
4.重啓nginx
nginx -s reload
6、在客戶端提交版本便可實現項目的自動化部署了