配置gitlab伺服器的git hooks 鉤子

2021-08-29 16:02:30 字數 1331 閱讀 7986

需求是本地開發分支develop推到遠端倉庫後自動部署測試伺服器。

看很多文章,講的非常複雜。都沒講清楚架構情況。

我們的架構是,多台本地開發機器,一台伺服器,伺服器上跑著測試程式和gitlab。

這邊文章解決的是測試端和git遠端倉庫在一台機器上的情況,如果是測試程式和gitlab各自一台伺服器,那比較麻煩了。

1.找到專案對應的hooks資料夾

/var/opt/gitlab/git-data/repositories/root/***.git/hooks/

2.修改post-receive檔案

#!/bin/bash

git_work_tree=/www/***

branch=develop

while read oldrev newrev ref

do if [[ $ref =~ .*/$$ ]];

then

echo "$branch ref received. deploying $branch branch to testserver..."

git --work-tree=$ checkout $ -f

else

echo "ref $ref successfully received. doing nothing: only the $branch branch may be deployed on this server."

fidone

branch 是分支名

git_work_tree 是測試程式目錄

修改完儲存。

3.設定git賬戶對post-receive檔案執行許可權。

/www/***目錄許可權也一樣。

貪圖省事就chmod 777。

4.測試

git push origin develop

能看到develop ref received. deploying develop branch to testserver…

再看/www/***目錄下檔案都已經更新了。

2018.11.5 更新

這個方法其實是有問題的。

目錄/var/opt/gitlab/git-data/repositories/root/***.git/hooks/

是乙個連線指向/opt/gitlab/embedded/service/gitlab-shell/hooks/

正確的做法是到

目錄/var/opt/gitlab/git-data/repositories/root/***.git/下

新建 custom_hooks目錄 把post-receive放在該目錄下。

詳見:

Git伺服器 GitLab搭建

1 很簡單,按照官方文件操作即可 gogs 是乙個輕量級的 易於設定 跨平台的git託管服務,不遜色於 gitlab 和 github。雖然不比這二者成熟,但它有很大的潛力。git 是一種版本控制系統,是乙個命令,是一種工具。github gitlab 不同點 1 github如果使用私有倉庫,是需...

配置gitlab伺服器的git hooks 鉤子

root是某個gitlab使用者 git是 專案的git倉庫根目錄 在gitlab裡 目錄 var opt gitlab git data repositories root git hooks 是乙個連線指向 opt gitlab embedded service gitlab shell hoo...

GitLab 配置伺服器 SSH 許可權

公司的專案使用 gitlab 管理遠端 git 庫,為了實現 ci cd 需要在伺服器上對 git 庫進行 clone pull 甚至是 push 操作,公司 gitlab 通過 ssh 的方式實現認證,就需要把伺服器的 ssh 公鑰配置到 gitlab 中,實踐過程中遇到的一些坑在這分享一下 找到...