碼雲項目託管之自動化部署

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、在客戶端提交版本便可實現項目的自動化部署了

相關文章
相關標籤/搜索