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


一、首先要到https://gitee.com/注冊一個賬號,並創建一個項目。

  

二、把本地和服務器公鑰添加到碼雲公鑰管理

 

三、到webHooks下添加webHooks設置

  

  然后添加一個觸發鈎子的url,當開發者提交主分支的時候,首先是把版本信息提交到碼雲,然后碼雲主動請求該url,並攜帶版本信息及密碼過去,進行驗證后觸發鈎子,鈎子再執行版本更新

  

四、分別在客戶端和服務器端克隆項目下來

git clone git@gitee.com:timelink/project.git

 

五、搭建鈎子

  創建第三步配置的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用戶的特點是無密碼,不能登錄,無環境變量等。

  解決方法:

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

六、在客戶端提交版本即可實現項目的自動化部署了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM