git服务器搭建post-receive 钩子部署服务端代码

今天突然想起要做一个功能, 本地GIT push的时候,服务器端的代码自动更新,不用再做多余的操作。来看下步骤:

环境已有内容: git用户,/home/git目录,和一个已经有的仓库/home/data/git/test.git,git 用户名zhanglong,git的Email:nice5good@126.com

1、使用git用户生成git密钥(把客户端的公钥(id_rsa.pb文件内容)添加到authorized_keys文件,git push,git pull 操作就不需要每次都输入密码了)

$ cd /home/git
$ mkdir .ssh
$ cd .ssh
$ touch authorized_keys  //把用户端公钥加入authorized_keys文件

2、生成代码目录,并clone

$ cd /home/wwwroot
$ mkdir test
$ git clone /home/data/git/test.git   
$ chown -R git:www test    //test目录拥有设为git,所属组改为www(如果不知道git所属组, 使用【groups git 】来查看,可以用【usermod -g www git】来改变git所属组)
$ chmod 775 -R test

3、编写自动更新钩子

$ cd /home/git/test.git/hooks/
$ vim post-receive  

#!/bin/bash
unset GIT_DIR 
DIR_ONE=/home/wwwroot/default/yczx #此目录是项目目录
LogPath=/home/data/git/yczx.git/hooks #这是记录日志目录

echo -e "\n=================  `date +"%Y-%m-%d %H:%M:%S"`  ===============\n" >> $LogPath/gitSync.log 
cd $DIR_ONE
git pull origin master >> $LogPath/gitSync.log 2>&1

echo "================================================"  >> $LogPath/gitSync.log

4、给钩子文件添加执行权限

$ cd /home/data/git/test.git/hooks/
$ chmod +x post-receive  //给钩子文件添加执行权限

以上步骤完成git服务器就已经搭建好了,下面来讲一下客户端的使用操作

1、首先生成客户端密钥,且把公钥复制到authorized_keys文件里

$ ssh-keygen -t rsa -C nice5good@126.com  //生成密钥
$ cat /userdir/.ssh/id_rsa.pub    // 把显示的内容复制到服务端的/home/git/.ssh/authorized_keys文件里

然后把git仓库拷贝下来

$ git clone git@123.456.78.9/home/data/git/test.git

测试操作(git push完成后git自动对web目录做git pull操作)

$ cd test
$ git pull origin master
$ touch test.txt
$ git add .
$ git commit -m'test'
$ git push origin master

 

0

发表评论

电子邮件地址不会被公开。