手摸手帶你部署git伺服器實現自動釋出程式碼

Mr李子發表於2018-11-29

前段趁著活動買了個騰訊雲伺服器,一直沒抽時間去折騰,最近才開始部署了一個自己專屬的git倉庫,實現程式碼自動釋出部署功能。(我也想成為努力向上,積極進取的有志青年啊!)文章的內容基本都是參考自谷歌搜尋,然後按我的思路重新整理一遍,既是為了分享也是為了鞏固知識。

手摸手帶你部署git伺服器實現自動釋出程式碼
我也是第一次折騰伺服器,前期部署就不寫太詳細了,裝個git是必須的吧?(滑稽笑)

建立git使用者

# 建立git使用者
adduser git
複製程式碼

新增git許可權成員

# 建立/home/git/.ssh/authorized_keys 檔案(通過這種方式能使擁有公鑰的成員直接訪問倉庫)
mkdir /home/git
mkdir .ssh
touch authorized_keys
# 使用vim命令將公鑰新增到authorized_keys檔案裡面
複製程式碼

生成公鑰的方法可檢視 git官方文件

初始化倉庫

建立一個存放git倉庫的資料夾

mkdir /web/git
cd /web/git
複製程式碼

初始化倉庫

git init --bare website.git
# 注意 這裡有個坑 因為我們初始化的時候是處於root管理員狀態,所以需要將這個倉庫的檔案許可權設定為剛才建立的git使用者
# 否則的話後面push將沒有許可權
chown -R git website.git
複製程式碼

git init正常初始化倉庫會顯示專案檔案結構,裡面存在.git資料夾。而這裡新增--bare引數生成裸倉庫,裡面的專案檔案結構隱藏,將正常方式初始化的.git裡面檔案結構暴露出來。

生成專案倉庫

mkdir /web/www
cd /web/www
# 將剛才初始化的裸倉庫克隆到專案資料夾
git clone /web/git/website.git
# 在這裡,還是別忘了要給專案資料夾加上git使用者操作許可權
chown -R git website
複製程式碼

到這一步的時候程式碼倉庫已經基本初始化完成了,接下來試試將倉庫從線上克隆下來。

克隆倉庫到本地

# 通過ip地址從配置好的線上倉庫拉取下來
git clone git@118.24.217.XXX:/web/git/website.git
# 如果有配置域名的話也可以通過域名拉取
git clone git@www.XXX.XXX:/web/git/website.git
複製程式碼

剛開始的時候因為已經新增了本地的金鑰到線上git伺服器,所以這一步是不需要密碼的,直接能克隆下來。

建立檔案並上傳

# 開啟剛才克隆下來的本地倉庫
cd website
# 建立README.md檔案
touch README.md
git add .
git commit -am"建立README.md檔案"
git push
複製程式碼

嘖嘖 完美 到這一步的時候就上傳成功了! 接下來就開始重頭戲,我們需要設定git的post-receive鉤子,在push成功的時候執行我們設定的一系列命令,進而達到自動編譯更新線上程式碼。

新增post-receive鉤子

回到線上伺服器,我們開啟/web/git/website.git/hooks資料夾。

# 生成post-receive檔案
touch post-receive
# 使用vim編輯
vim post-receive
複製程式碼

在post-receive檔案輸入我們的命令列命令

#!/bin/sh

# 列印輸出
echo '======上傳程式碼到伺服器======'
# 開啟線上專案資料夾
cd /web/www/gd168
# 這個很重要,如果不取消的話將不能在cd的路徑上進行git操作
unset GIT_DIR
git pull origin master
# 自動編譯vue專案
# npm run build
echo $(date) >> hook.log
echo '======程式碼更新完成======'
複製程式碼

儲存後給post-receive檔案加上執行許可權

chmod +x post-receive
複製程式碼

搞定,現在試著修改下README.md檔案,然後釋出上去就能看到部署效果了。沒毛病,妥妥的!

手摸手帶你部署git伺服器實現自動釋出程式碼

結語

大概是第一次寫文章,怕大家看不明白,碼文章的過程中還一步步重新走了遍流程,大概……應該……是寫得很詳細了吧(捂臉)。這些都是我遇到的坑,如果還有啥不妥的地方希望大家能夠諒解,有什麼不對或不夠好的地方希望能聯絡我修改下,最怕耽誤了你們寶貴的青春。帶歪車就不好了,新手上路,嘿嘿。

相關文章