Gitlab配置webhooks實現自動化部署

2022-09-06 16:39:08 字數 1279 閱讀 3782

gitlab 自動化部署

原理介紹

配置gitlab當push動作的時候,訪問伺服器上的乙個鏈結比如www.shenke.group/hook.php

hook.php裡面寫著一行**,會讓伺服器git pull相應專案的**到web目錄。

pull結束,**就在web目錄了,我們只要重新訪問**就可以了。

核心就是push的時候,gitlab會呼叫伺服器上的指令碼,伺服器上的指令碼就會從git重新拉取專案檔案。同時還需要加入安全性的設計。

配置ssh秘鑰

首先檢視nginx和php的預設執行使用者,分別檢視對應的檔案nginx.conf和php-fpm.conf即可,一般是www使用者,以www使用者為例。修改/etc/passwd檔案,使www使用者具有可登入許可權,如下:

由上圖中的配置改為:

當自動化部署完成後,要該回到原來的配置,因為www使用者預設是不允許登入伺服器的。

按以下步驟操作:

執行 su www 命令切換為www使用者。

執行 ssh-keygen 命令,將生成的公鑰(位置在/home/www目錄下),新增到gitlab中的專案中

注意:1. 這裡一定要是www使用者的秘鑰!

2. 進入到專案根目錄所在目錄,cd /var/www  ,更改專案目錄web所屬使用者和使用者組,執行命令

chown -r www:www web

伺服器指令碼

編寫hook.sh 內容如下(這是簡單版本):

使用www使用者進行測試,執行 bash hook.sh 命令,測試能否進行拉取**。如果成功,下一步就是通過鉤子執行此指令碼。

php執行指令碼

hook.php:

接下來通過瀏覽器訪問測試:

訪問後,如果能返回git執行的資訊,就表示成功了。接下來就是配置gitlab的webhooks。

為支援多個專案 配置了project引數,可以部署多個專案。只需要在gitlab鉤子中配置時,使用不同的project引數。

gitlab配置鉤子

觸發一般選擇合併請求事件

部署完成後,修改/etc/passwd檔案,將www使用者修改為nologin即可!

說說配置gitlab的webhook時踩過的坑

之前把公司的版本管理從svn換到了gitlab,用的各種舒適,但是,我的上線屬於手動上線,先在本地git push到主分支,再到線上環境去執行git pull命令把 拉取下來。如何能做到自動部署呢?答案是webhook。有關如何配置webhook,推薦文章 那麼webhook是如何做到自動部署的呢?...

寶塔webhook配置gogs鉤子

倉庫設定 web鉤子 webhook shell bin bash echo 輸出當前時間 date date 0 days ago y m d h m s echo start 判斷寶塔webhook引數是否存在 if n 1 then echo param引數錯誤 echo end exit f...

Gitlab 郵件配置

git郵件配置vim etc gitlab gitlab.rb 找到 gitlab email server settings 在其中新增下如配置 external url 這裡可採用ip訪問也可採用網域名稱訪問 gitlab rails gitlab email from soarpatriot ...