git实现代码提交自动部署到相应的web服务器

来源:互联网 发布:淘宝上的内存条能买吗 编辑:程序博客网 时间:2024/05/16 04:41


现在想实现在本地对web代码push之后就将代码同步到线上的web服务器,这样就可以直观的看到效果了。百度和Google有很多的实现的方法,不过不知道是环境的原因还是别的原因,按照这些方法始终没有成功,经过测试下面简单的将实现方法分享下。

我的做法是先登录到我的gitlab的服务器(我们的代码由gitlab进行统一的管理),找到我自己的一个test的项目。

环境说明:

gitlab(10.212.118.56)

webserver(192.168.1.1)

1、首先在gitlab的server中clone一个项目

gitlab服务器中存放代码的目录为(/git/gitlab/apps/gitlab/repositories/xuejinliang/test.git/),此处是我自己的一个test的项目。

2、在server中的/tmp中

git clone /git/gitlab/apps/gitlab/repositories/xuejinliang/test.git/

之后编写hook函数,找到test.git项目的hook文件所在位置

cd /git/gitlab/apps/gitlab/repositories/xuejinliang/test.git/hooks

cat >post-receive <<EOF

#!/bin/bash

unset GIT_DIR

Deploy_Dir=/tmp/test/

remote_dir=/gago/web/test

cd ${Deploy_Dir}

git pull

#/bin/rsync -auzvP --delete /tmp/test/   serverip:/gago/web/test

#ssh root@42.159.145.166 <<EOF

#chown -R www.www /gago/web/test

EOF

后面的三行代码我加上了注释发现,因为在利用Mac端的工具source-tree进行提交的时候,发现rsync会报错,所以我单独的将此rsync写成了一个脚本然后每分钟执行一次,这样就会将同步好的代码同步到web服务器了。(rsync提前做好了免密码操作,基于ssh)。

下面的是rsync的报错

remote: rsync: connection unexpectedlyclosed (0 bytes received so far) [sender]       

remote: rsync error: unexplained error (code255) at io.c(605) [sender=3.0.9]

百度Google了下没看解决,希望有同样经验的同学分享下。