摘要:簡介我們在部署我們的應用時我們一般會尋求一些云平臺服務器部署當然也可以直接在服務器里拉取遠程倉庫的代碼當然我們也可以實現通過鉤子來實現服務器與遠程倉庫代碼的同步這樣一來我們在本地提交功能分支到倉庫中倉庫也會同步到服務器這樣我們就無需自己手動
簡介
我們在部署我們的web應用時 我們一般會尋求一些云平臺服務器部署 當然也可以直接在服務器里拉取遠程倉庫的代碼
當然我們也可以實現通過Webhooks(鉤子)來實現服務器與遠程倉庫代碼的同步
這樣一來我們在本地提交功能分支到倉庫中 倉庫也會同步到服務器 這樣我們就無需自己手動去同步項目代碼
選擇我們的項目大都托管在Github 當然Github在建立私有倉庫時是需要付費的 那么在自己的網站部署時 我們完全可以選擇其他的平臺
目前來說我們需要試下Webhooks自動化部署 那么我們可以選擇自己合適的平臺 這里我選擇GitLab
當然國內的話還可以選擇 Coding 和 碼云
這些在國內都是不錯的代碼托管平臺 你都可以創建自己的私有項目倉庫
之前我的網站項目是托管在Coding 但是近期我重寫我的網站項目 因為GitLab本身可以建立自己的私有倉庫并且沒有限制
同樣的也可以設置成員的權限 分支的工作流也十分清晰強大 現在很多的公司也都選擇了GitLab so 我還是會去嘗試一下新的服務
前期準備和Github一樣 我們都要去生成一個ssh key這樣我們以后在提交項目和項目分支時就可以免去身份驗證
在本地終端執行
$ ssh-keygen -t rsa -C "youremail@example.com"
這里填寫你GitLLab注冊的郵箱即可(最好保持一致)
你可以一直默認下去 當然為了和之前的發生沖突 你可以自己在生成的時候重新命名
我這里生成的是gitlab_rsa和gitlab_rsa.pub
接著在命令行執行(添加剛生成的公鑰和私鑰)
eval $(ssh-agent -s) ssh-add ~/.ssh/gitlab_rsa
查看我們的公鑰內容
cat ~/.ssh/gitlab_rsa.pub
拿到我們的公鑰內容 我們就可以去GitLab添加我們的sh key
添加完畢之后當然是測試本地連接
$ ssh -T git@gitlab.com
如果沒有問題的話 會回饋給我們正確的歡迎信息
具體的生成信息可以看官方的 ssh文檔
我們在此之前在GitLab已經上傳了我們的項目 在項目中的Setting->Integrations里添加腳本鉤子
比如這邊我添加的url是http://kobeman.com/hook/index.php
然后填入的token是ispace
現在可以去服務器的站點目錄下克隆遠程倉庫的項目 這里我的站點目錄是/data/www
那么在這個目錄下克隆我們遠程的項目 克隆完畢后 當然這里以Laravel項目為例 完成一些權限 這些可自行查閱
能夠成功跑起來我們的項目就ok 這里我訪問的網址是www.kobeman.com 下面就需要添加鉤子文件
這里我們項目的根目錄 這里可以是public目錄下新建hook目錄 添加一個index.php 具體內容如下
具體代碼我已經放在我的gist上 如果有什么問題歡迎提出issue
這里的鉤子文件需要注意以下幾點
php配置里需要注釋掉shell_exec這些被禁用的函數 詳見 shell_exec
執行命令時切換到管理員用戶最好
查看是否進入你的項目目錄 這里我是通過chdir進入項目目錄 因為cd命令是沒有用的 詳見 Can"t "cd" with PHP shell_exec()
git pull不能執行 這應該就是權限的問題 詳見 shell 腳本中調用 git pull 命令無法執行
這里為什么我們需要獲取這個$_SERVER的參數呢 因為GitLab是通過post請求這個地址 所以為了驗證之前填入的token
我們這里是去驗證他的請求頭部 因為他是以請求頭部傳遞給我們的 如圖所示
為了了解他的頭部到底包含了什么信息 我們可以都打印出來看下
所以說如果我們驗證這個token成功的話再去進入到項目目錄 執行git pull拉取我們最新的代碼
這樣也就實現了 自動化的代碼部署 在驗證過程中我打印了下這個 $_SERVER["HTTP_X_GITLAB_TOKEN"]
這樣一來下次再去提交我們的最新的功能代碼時就可以哦同步到我們的服務器
相關鏈接Gist 地址
GitLab 官網
Coding 官網
碼云 官網
GitLab key生成
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25653.html
摘要:自動部署基礎實踐熟悉的基本操作實現本地后自動構建部署服務此實踐用于優化自己在實際工作中的工作流在本地開發到服務器登錄云服務器或者簡化流程后本地開發云服務器自動構建部署本實踐將結合技術來實現云服務器對各種環境的切換與部署。 Docker + Jenkins + webhooks 自動部署基礎實踐 熟悉 jenkins 的基本操作 ?? 實現本地 git push 后 jenkins 自...
摘要:為了看起來清晰,我寫了一個文件,將這個文件和之前的放在同一個目錄中,可以用以下命令快速啟動,啟動之后新構建的鏡像和容器都名為。 showImg(https://segmentfault.com/img/remote/1460000014924499?w=883&h=515); 在軟件開發過程中,如果我們每一次提交的代碼都能夠進行一次完整的編譯、測試、打包、發布,就能及早發現問題、及早修...
閱讀 1710·2021-11-11 10:58
閱讀 4183·2021-09-09 09:33
閱讀 1256·2021-08-18 10:23
閱讀 1547·2019-08-30 15:52
閱讀 1623·2019-08-30 11:06
閱讀 1866·2019-08-29 14:03
閱讀 1506·2019-08-26 14:06
閱讀 2942·2019-08-26 10:39