gitlab PHP 自動部署設計方案

2022-03-13 12:22:58 字數 1186 閱讀 7864

2018-9-26 14:00:39 星期三

場景: 

由於某種情況, 不能使用jenkins, so......只有自己實現了

看圖: webui

設計方案,

- 資料夾a, 用來存放git分支

- 資料夾b, 執行**的**目錄

- 資料夾c, 部署用的指令碼目錄, c裡邊的指令碼用來把a裡邊的**更新同步到b裡邊

- 入口1 gitlab, 新增push hook, hook中指定的url可以執行c中的**

- 入口2 linux命令列, 執行c中的指令碼進行部署

- 入口3 網頁, 在頁面中點選按鈕進行部署

注意點: 

1. 指令碼由乙個入口指令碼和多個附屬指令碼組成,  附屬指令碼用來部署不同的專案

2. 附屬指令碼由很多共同點, 比如拉取最新**, 找到差異, 覆蓋到目標目錄, 刪除快取等, 不同的是各種路徑資訊. 因此將這些共同的功能抽出來做乙個類, 附屬指令碼傳遞不同的引數去實現部署

3. 指令碼入口有三種: 一種是命令列, 一種是接收gitlab push hook, 還有就是網頁互動

4. gitlab傳送的是一串json, php接收的時候用 file_get_contents('php://input', 'r'); 內容如下(注意 object_kind, ref, repository->url, 他三個可以確認是哪個專案的哪個分支被push了**)

1

,21 "commits":[

2231

}32 ],

33 "total_commits_count":1

34 }

view code

5. git diff 的時候會把中文路徑重新編碼, 可以設定一下 sudo git config --global core.quotepath false

//==== 2021-4-8 15:21:07 更新

最新版去掉了頁面部署功能, 去掉了根據commit id部署的功能

增加了全量部署+自動備份的功能

增加了部署後執行指令碼的功能, 比如可以在**部署後, 建立靜態檔案目錄的軟連線, 將等靜態檔案跟主**分開

增加了支援指定tag部署的功能

Tomcat自動部署

在tomcat中設定自動部署,可以簡化工程的修改操作。有兩種方法 方法1 開啟tomcat home conf server.xml檔案,在標籤內輸入以下內容 xml context path 虛擬目錄名 docbase 目標目錄名 reloadable true path 表示在瀏覽器中輸入htt...

自動部署指令碼

author wangyang buildtime 12 06 05 desc 自動部署指令碼 currentdir pwd 判斷命令是否成功執行 isok 依次執行命令 rm rf sessionserver tradecore tradeweb isok deploy.log tar xzvf ...

tomcat自動部署

1.可以在test meta inf目錄下面放置乙個context.xml檔案,內容如下 2.也可以在conf catalina localhost目錄下放置乙個test.xml檔案,內容如下 3.如果想讓localhost下的所有web應用都自動reload,那麼可以在conf catalina ...