1. 程式人生 > >利用webhook 實現自動化部署 【PHP版本】

利用webhook 實現自動化部署 【PHP版本】

1、先git clone 程式碼

2、配置nginx,域名繫結到程式碼目錄

3、在程式碼目錄建立 webhook.php (隨意命名)

<?php
  $pwd = getcwd();
  $command = 'cd ' . $pwd . ' && git pull 2>&1'; // 2>&1 是輸出錯誤,有利於除錯
  $output = shell_exec($command);
  file_put_contents('./webhook.log', $output);// 輸出內容儲存到日誌,需要注意日誌檔案要有足夠的許可權
  print $output;
?>

4、配置碼雲webhook,url為 http://yourdomain/webhook.php

5、碰到問題了:git pull 需要輸入賬號密碼

解決辦法:

執行git config --global credential.helper store命令
然後git push origin your-branch       // your-branch就是分支的名字
//會讓你輸入使用者名稱和密碼,就會儲存起來,下次就不需要了

6、建立金鑰

$ ssh-keygen -t rsa -b 4096 -C "[email protected]
"
Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter] // 這裡填寫 /home/www/.ssh/id_rsa,因為nginx使用者組是www,之後一路回車
$ eval $(ssh-agent -s)
$ ssh-add /home/www/.ssh/id_rsa

之後就複製 /home/www/.ssh/id_rsa_pub裡面的內容,新增到碼雲->設定->SSH公鑰裡面

注意:/home/www/.ssh 目錄使用者組:使用者需要設定為, chown -R www:www /home/www/.ssh

Git 常見問題解決

Your local changes to the following files would be overwritten by merge: index1.html Please, commit your changes or stash them before you can merge

因為是自動部署,伺服器上的程式碼與git倉庫的保持一致,因此可以直接退回上一個版本,再拉取程式碼

git reset --hard 
git pull origin your-branch