Git自动部署代码到服务器


需求

在开发过程中,会频繁的更新代码,一般操作场景是这样的:

  1. 本地 git push 提交代码至git服务器
  2. 远程登录到网站服务器
  3. 从git服务器上git pull拉取最新代码

我们想要做的是:在本地git push时,能直接部署在网站服务器,自动完成上述的2和3。

解决思路

通过git提供的hook,在代码更新后,执行脚本。首先,将网站服务器同时也作为git服务器。开发人员每次在git push到远程服务器后,服务器git会触发linux post-update脚本,脚本执行git相关命令把代码更新到项目目录。
git自动部署代码到网站服务器

实现

服务器端设置

  1. 进入项目根目录,初始化为git仓库
    cd /var/www/html/myproject
    git init
  2. 让仓库接受代码提交
    git config receive.denyCurrentBranch ignore
  3. 设置更新钩子 post-update
    cd .git/hooks
    mv post-update.sample post-update
  4. 修改post-update内容如下
    #!/bin/sh
    unset GIT_DIR
    cd ..
    git checkout -f
  5. 更新git服务
    git update-server-info

本地仓库

新项目从git服务器克隆开始

git clone ssh://user@ip/var/www/html/myject

或者,已有本地仓库与远程仓库关联

git remote add origin ssh://user@ip/var/www/html/myject

最后,在本地试一下git push命令吧!


评论
  目录