原理
- 客戶端
push
之後會觸發git hook
執行hook
下面的post-receive
- 通過
post-receive
執行shell
指令碼將在 web 目錄下拉取專案實現
s 表示 git 伺服器端,c 表示 git 客戶端
搭建 git 伺服器
新增 git 賬號
$ groupadd git; $ useradd -d /home/git -m git
建立證照 配置 git 賬戶 ssh
ssh 配置檔案在 /etc/ssh/sshd_config裡面,修改裡面內容
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
建立 git 的 .ssh
將允許進行登入的公鑰放在authorized_keys
裡面一個一行
如果失敗,嘗試執行ssh-keygen
重新生成 RSAcd /home/git/ mkdir .ssh chmod 755 .ssh touch .ssh/authorized_keys chmod 644 .ssh/authorized_keys
初始化 Git 倉庫
cd /home/git git init --bare uucheers.git chown -R git:git uucheers.git #克隆 git clone git@ip:uucheers.git git clone git@ip:/home/git/uucheers.git #在專案目錄裡面 git clone 過去 git clone /home/git/uucheers.git #同時 更改許可權 不然 git 使用者沒法寫入
hook
在專案目錄下
cd /home/git/uucheers/hooks
vim post-receive
輸入如下內容
#!/bin/sh
#
#判斷是不是遠端倉庫
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE $IS_BARE"
exit 1
fi
unset GIT_DIR
DeployPath="/usr/local/src/uucheers-docker/app/uucheers"
echo "==============================================="
cd $DeployPath
echo "deploying the project"
#git stash
#git pull origin master
git fetch --all
git reset --hard origin/master
time=`date`
echo "web server pull at webserver at time: $time."
echo "================================================"
chmod +x post-receive
新增執行許可權
本作品採用《CC 協議》,轉載必須註明作者和本文連結