成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

GitLab [Webhooks] 實現(xiàn)自動化服務(wù)器部署

roadtogeek / 545人閱讀

摘要:簡介我們在部署我們的應(yīng)用時我們一般會尋求一些云平臺服務(wù)器部署當(dāng)然也可以直接在服務(wù)器里拉取遠程倉庫的代碼當(dāng)然我們也可以實現(xiàn)通過鉤子來實現(xiàn)服務(wù)器與遠程倉庫代碼的同步這樣一來我們在本地提交功能分支到倉庫中倉庫也會同步到服務(wù)器這樣我們就無需自己手動

簡介

我們在部署我們的web應(yīng)用時 我們一般會尋求一些云平臺服務(wù)器部署 當(dāng)然也可以直接在服務(wù)器里拉取遠程倉庫的代碼

當(dāng)然我們也可以實現(xiàn)通過Webhooks(鉤子)來實現(xiàn)服務(wù)器與遠程倉庫代碼的同步

這樣一來我們在本地提交功能分支到倉庫中 倉庫也會同步到服務(wù)器 這樣我們就無需自己手動去同步項目代碼

選擇

我們的項目大都托管在Github 當(dāng)然Github在建立私有倉庫時是需要付費的 那么在自己的網(wǎng)站部署時 我們完全可以選擇其他的平臺

目前來說我們需要試下Webhooks自動化部署 那么我們可以選擇自己合適的平臺 這里我選擇GitLab

當(dāng)然國內(nèi)的話還可以選擇 Coding 和 碼云

這些在國內(nèi)都是不錯的代碼托管平臺 你都可以創(chuàng)建自己的私有項目倉庫

之前我的網(wǎng)站項目是托管在Coding 但是近期我重寫我的網(wǎng)站項目 因為GitLab本身可以建立自己的私有倉庫并且沒有限制

同樣的也可以設(shè)置成員的權(quán)限 分支的工作流也十分清晰強大 現(xiàn)在很多的公司也都選擇了GitLab so 我還是會去嘗試一下新的服務(wù)

前期準(zhǔn)備

Github一樣 我們都要去生成一個ssh key這樣我們以后在提交項目和項目分支時就可以免去身份驗證

在本地終端執(zhí)行

$ ssh-keygen -t rsa -C "[email protected]"

這里填寫你GitLLab注冊的郵箱即可(最好保持一致)

你可以一直默認下去 當(dāng)然為了和之前的發(fā)生沖突 你可以自己在生成的時候重新命名

我這里生成的是gitlab_rsagitlab_rsa.pub

接著在命令行執(zhí)行(添加剛生成的公鑰和私鑰)

eval $(ssh-agent -s)
ssh-add ~/.ssh/gitlab_rsa

查看我們的公鑰內(nèi)容

cat ~/.ssh/gitlab_rsa.pub

拿到我們的公鑰內(nèi)容 我們就可以去GitLab添加我們的sh key

添加完畢之后當(dāng)然是測試本地連接

$ ssh -T [email protected]

如果沒有問題的話 會回饋給我們正確的歡迎信息

具體的生成信息可以看官方的 ssh文檔

我們在此之前在GitLab已經(jīng)上傳了我們的項目 在項目中的Setting->Integrations里添加腳本鉤子

比如這邊我添加的url是http://kobeman.com/hook/index.php

然后填入的tokenispace

現(xiàn)在可以去服務(wù)器的站點目錄下克隆遠程倉庫的項目 這里我的站點目錄是/data/www

那么在這個目錄下克隆我們遠程的項目 克隆完畢后 當(dāng)然這里以Laravel項目為例 完成一些權(quán)限 這些可自行查閱

能夠成功跑起來我們的項目就ok 這里我訪問的網(wǎng)址是www.kobeman.com 下面就需要添加鉤子文件

這里我們項目的根目錄 這里可以是public目錄下新建hook目錄 添加一個index.php 具體內(nèi)容如下

具體代碼我已經(jīng)放在我的gist上 如果有什么問題歡迎提出issue


這里的鉤子文件需要注意以下幾點

php配置里需要注釋掉shell_exec這些被禁用的函數(shù) 詳見 shell_exec

執(zhí)行命令時切換到管理員用戶最好

查看是否進入你的項目目錄 這里我是通過chdir進入項目目錄 因為cd命令是沒有用的 詳見 Can"t "cd" with PHP shell_exec()

git pull不能執(zhí)行 這應(yīng)該就是權(quán)限的問題 詳見 shell 腳本中調(diào)用 git pull 命令無法執(zhí)行

這里為什么我們需要獲取這個$_SERVER的參數(shù)呢 因為GitLab是通過post請求這個地址 所以為了驗證之前填入的token

我們這里是去驗證他的請求頭部 因為他是以請求頭部傳遞給我們的 如圖所示

為了了解他的頭部到底包含了什么信息 我們可以都打印出來看下

所以說如果我們驗證這個token成功的話再去進入到項目目錄 執(zhí)行git pull拉取我們最新的代碼

這樣也就實現(xiàn)了 自動化的代碼部署 在驗證過程中我打印了下這個 $_SERVER["HTTP_X_GITLAB_TOKEN"]

這樣一來下次再去提交我們的最新的功能代碼時就可以哦同步到我們的服務(wù)器

相關(guān)鏈接

Gist 地址

GitLab 官網(wǎng)

Coding 官網(wǎng)

碼云 官網(wǎng)

GitLab key生成

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25653.html

相關(guān)文章

  • Docker + Jenkins + webhooks 自動部署基礎(chǔ)實踐

    摘要:自動部署基礎(chǔ)實踐熟悉的基本操作實現(xiàn)本地后自動構(gòu)建部署服務(wù)此實踐用于優(yōu)化自己在實際工作中的工作流在本地開發(fā)到服務(wù)器登錄云服務(wù)器或者簡化流程后本地開發(fā)云服務(wù)器自動構(gòu)建部署本實踐將結(jié)合技術(shù)來實現(xiàn)云服務(wù)器對各種環(huán)境的切換與部署。 Docker + Jenkins + webhooks 自動部署基礎(chǔ)實踐 熟悉 jenkins 的基本操作 ?? 實現(xiàn)本地 git push 后 jenkins 自...

    Charlie_Jade 評論0 收藏0
  • Docker 入門(三):持續(xù)集成、持續(xù)部署

    摘要:為了看起來清晰,我寫了一個文件,將這個文件和之前的放在同一個目錄中,可以用以下命令快速啟動,啟動之后新構(gòu)建的鏡像和容器都名為。 showImg(https://segmentfault.com/img/remote/1460000014924499?w=883&h=515); 在軟件開發(fā)過程中,如果我們每一次提交的代碼都能夠進行一次完整的編譯、測試、打包、發(fā)布,就能及早發(fā)現(xiàn)問題、及早修...

    newtrek 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<