git自动部署代码

ssh root@example.com
##############################################
# 到服务器了
# 增加git用户
useradd git
# 把git用户加进www组
usermod -a -G www git
usermod -a -G git www
# 创建仓库
su git
cd ~
mkdir .gitbase
cd .gitbase
mkdir project
cd project
git init --bare
# 自动部署设置
cd hooks
# 新建post-receive文件,并写入下面代码:
#!/bin/sh
#
# git autodeploy script when it matches the string "[deploy]"
#
# @author    icyleaf <icyleaf.cn@gmail.com>
# @link      http://icyleaf.com
# @version   0.1
#
# Usage:
#       1. 将该脚本放入bare仓库的hooks文件夹,命名为post-receive
#       2. 加入可执行权限: chmod +x post-receive
#       3. 将DEPLOY_DIR改为你要部署的目录(得先将该项目clone到DEPLOY_DIR目录)
#       4. 完成!
DEPLOY_DIR=/home/wwwroot/bestalart.com/web
LOGDIR=$(pwd)/hooks/.post-receive.log
 date -d now +'-------------------%Y-%m-%d %H:%M:%S----------------'  &>> $LOGDIR
# Check the remote git repository whether it is bare
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
        echo "错误: 不是bare仓库! " &>> $LOGDIR
        exit 1
fi

# Get the latest commit subject
SUBJECT=$(git log -1 --pretty=format:"%s")

# Deploy the HEAD sources to publish
IS_PULL=$(echo "$SUBJECT" | grep "\[deploy\]")
if [ -z "$IS_PULL" ]; then
        echo "未部署:提交信息未包含\"[deploy]\"字符串" &>> $LOGDIR
        exit 1
fi

# Check the deploy dir whether it exists
if [ ! -d $DEPLOY_DIR ] ; then
        echo "错误:\"$DEPLOY_DIR\"目录不存在!" &>> $LOGDIR
        exit 1
fi

# Check the deploy dir whether it is git repository
#
#IS_GIT=$(git rev-parse --git-dir 2>/dev/null)
#if [ -z "$IS_GIT" ]; then
#       echo >&2 "fatal: post-receive: IS_NOT_GIT"
#       exit 1
#fi

# Goto the deploy dir and pull the latest sources
cd $DEPLOY_DIR
env -i /usr/bin/git pull &>> $LOGDIR
if [ $? != 0 ] ; then
        echo '部署失败!' &>> $LOGDIR
        exit 1
fi
echo '部署成功!' &>> $LOGDIR

#### 到此代码结束

chmod +x post-receive

cd ~
mkdir .ssh
exit
exit
##############################################
# 到本地了
# 设置git用户免密登录服务器,push代码设置
cd ~
ssh-keygen -t rsa
cd .ssh
scp id_rsa.pub root@example.com:/home/git/.ssh/
ssh root@example.com
##############################################
# 到服务器了
# 设置git用户免密登录服务器,push代码设置
chown git:git /home/git/id_rsa.pub
su git
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
cd ..
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
exit
# 到root用户了
# 编辑 /etc/ssh/sshd_config 文件,进行如下设置:
RSAAuthentication yes
PubkeyAuthentication yes
# 编辑结束

exit
##############################################
# 到本地了
# 本地仓库增加远程仓库地址,以将本地代码及提交记录都推送到服务器仓库
cd ~/project
git remote add project git@example.com:/home/git/.gitbase/project
git push project master
ssh root@example.com
##############################################
# 到服务器了
# 将本地提交的代码部署到站点目录
cd /data/www/web/example.com
mkdir ~/.tmp
mv * ~/.tmp/
mv .* ~/.tmp/
git clone /home/git/.gitbase/project
mv project/* .
mv project/.* .
rmdir project
# 将所有者改为www用户
chown www:www -R .
# 让www的组员git也拥有写权限,git用户好自动更新该文件夹的代码
chmod g+w -R .
exit
##############################################
# 到本地了
# 测试是否成功设置自动部署:
cd ~/project
echo '普通提交' > test.txt
git add .
git commit -m '普通提交'
git push project
# 此时检查服务器的www的project目录,并没有更新
echo '自动部署提交' >> test.txt
git add .
git commit -m '[deploy]自动部署提交'
git push project
# 此时检查服务器的www的project目录,已经自动更新了代码,完成!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容