美文网首页金鹏堡
通过Git Hooks实现自动部署

通过Git Hooks实现自动部署

作者: 沐青之枫 | 来源:发表于2018-02-27 14:17 被阅读1247次

    以前尝试部署代码到服务器的方式有用到Github Hook或者ftp,但使用起来都有各自的缺陷,然后就发现了git hooks这个方法,查了一些资料再自己尝试过后,觉得还不错,记录下简单流程。

    在服务器初始化一个远程git仓库

    git initgit init --bare 的区别

    初始化出来的仓库是不一样的,前者初始化的是一个普通的仓库,其中 .git 文件夹是隐藏的,并且能看见该仓库下所有的源码。而后者初始化出来的仓库中的文件,就是 .git 中的文件夹,但不能像前者那样直接浏览或修改仓库中的代码。

    使用 git init --bare 初始化一个远程仓库。

    该仓库是用于项目部署的。在我们本地开发完成后,将项目push至该仓库后,将自动部署网站。

    root@iZbp1cc04oqq: mkdir -p /git/laravle-vue.git
    root@iZbp1cc04oqq: cd /git/laravle-vue.git
    root@iZbp1cc04oqq: git init --bare
    
    网站的根目录git clone服务器仓库
    root@iZbp1cc04oqq: cd /var/www/html
    root@iZbp1cc04oqq: git init
    root@iZbp1cc04oqq: git clone /git/laravel-vue.git
    root@iZbp1cc04oqq: chmod -R 777 ../laravel-vue
    
    为远程仓库设置一个 hook
    root@iZbp1cc04oqq: cd /git/laravel-vue.git/hooks
    root@iZbp1cc04oqq: vim post-receive 
    

    vim编辑post-receive

    
    #!/bin/sh
    unset GIT_DIR
    NowPath=`pwd`
    DeployPath="/var/www/html/laravel-vue"
    cd $DeployPath
    git add . -A && git stash
    git pull origin master
    composer install --ignore-platform-reqs
    #下面两步是我同步vue代码
    #npm install #安装npm包
    #npm run production
    
    cd $NowPath
    echo "同步完成"
    exit 0
    

    该脚本添加可执行权限

    root@iZbp1cc04oqq: chmod +x post-receive
    

    为本地仓库添加remote源

    这个客户端本地仓库,即开发的机子的本地仓库,添加remote源,以后往这个remote push代码时,就会自动触发上面的脚本。

    $   git remote add deploy root@ip:/git/laravel-vue.git   //服务器上我用的root用户
    $   git push deploy master
    

    如图


    image.png

    相关文章

      网友评论

      • po戈:git remote add deploy root@ip 这里不需要端口号吗? 默认是22, 但是我服务器端口号 不是这个:sweat:
        po戈:应该是授权的问题,ssh-key怎么设置啊?
      • 41194e60bf72:有windown的吗?
        沐青之枫:抱歉,没有研究过windows的,原理类似,您可以尝试下

      本文标题:通过Git Hooks实现自动部署

      本文链接:https://www.haomeiwen.com/subject/tqapxftx.html