Git自动化部署项目
Contents
操作步骤
创建一个裸仓库
mkdir /home/sky/auto/git
cd /home/sky/auto/git
git init --bare .
添加一个git勾子(就是执行提交代码后的脚本, 这里可以用来执行你部署的脚本就完成自动部署啦.)
创建完裸仓库后, 里有一个hooks
的目录.
cd /home/sky/auto/git/hooks
创建一个文件名为post-receive
, 并且添加一个可执行的权限给它, 内容如下:
#!/bin/sh
export PATH=自定义的命令行PATH:$PATH
# 这个是用来部署的仓库目录
DEPLOY_PATH="/home/sky/auto/deploy"
cd /home/sky/auto/deploy
ls -lah
echo "before pull, pwd = " $( pwd ) ", whoiam" $( whoami)
#这行不能删除哈,不然会报. fatal: Not a git repository (or any of the parent directories): .git 这样类似的错误.
unset GIT_DIR
git pull origin master || exit 1
${DEPLOY_PATH}/deploy.sh
echo "deploy done" >> /tmp/auto-deploy.log
为项目添加一个远程仓库指向 裸仓库
假设原项目仓库在/home/sky/git/myproject
cd /home/sky/git/myproject
git add remote auto-deploy 你的用户名@你的IP:/home/sky/auto/git
提交代码时,自动部署
git push auto-deploy 本地要部署的分支:master --force
这样子提交到裸仓库的远程地址时,就会触发post-receive
脚本,然后在该脚本里进行自动化部署即可了.