• 使用 Git Hook 实现网站的自动部署


    自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?

    目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。

    下面是我使用 Git Hook 进行简单的自动化部署,可能还有更高级的做法,大家自己去挖掘。

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

    git init 和 git --bare init 初始化出来的仓库是完全不一样的,具体我 Google 了下,英文倒是理解了,但是要翻译出中文却不知道用什么形容词去称呼这2种仓库。

    这里我们要通过 git --bare init 初始化一个远程仓库

    1
    2
    3
    4
    $ cd ~
    $ mkdir testRepo
    $ cd testRepo
    $ git --bare init

    在服务器初始化一个本地 Git 仓库

    这个仓库就是通过 git init 初始化出来最常见的本地仓库,它的作用是拉去远程仓库(其实就在它旁边)最新的源码,然后在这个仓库里进行编译,把代码编译到 www 目录(网站的根目录)。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ cd ~
    $ mkdir testDeploy
    $ cd testDeploy
    $ git clone ~/testRepo #从远程仓库 clone 出源码
    ```
     
    ### 为远程仓库设置 Hook
     
    ```bash
    $ cd ~/testRepo/hooks
    $ vim post-receive

    post-receive 里面的执行脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
    unset GIT_DIR
    DeployPath=/home/user/testDeploy
    WwwPath=/home/wwwroot/testDeploy
     
    cd $DeployPath
    git add . -A && git stash
    git pull origin master
     
    # 下面这2步都是按照实际你自己添加的bash脚本
    fis release -Dompd $WwwPath # 我使用的FIS,对前端代码进行编译
    qrsync /home/user/qiniutools/config.json # 使用七牛同步工具进行同步

    最后,为 post-receive 添加可执行权限

    1
    chmod +x post-receive

    为本地仓库添加 remote 源

    这次的本地仓库就真的是你开发机上面的本地了。在你原有 Git 项目里面添加一条新的 remote 源,以后往这个 remote 源里面 push 代码就会自动触发上面那 bash 脚本了。

    1
    2
    $ git remote add deploy user@server.ip:/home/user/testRepo
    $ git push deploy master

    https://dearb.me/archive/2015-03-30/automate-deploy-your-websites-with-git-hook/

    https://segmentfault.com/a/1190000003836345?_ea=386770

  • 相关阅读:
    纯awk传参和awk脚本传参
    【转】MySQL 备份和恢复(MyISAM 和 Innodb)
    【z】多线程Java Socket编程示例
    Java,Tomcat,Mysql乱码总结
    mysql备份与同步shell脚本
    【转】Velocity用户手册中文版(学习修改版)
    wml新学的标签
    【原】小心log4j的多进程写入
    【z】Webservice 的设计和模式
    【z】linux面试题参考答案
  • 原文地址:https://www.cnblogs.com/peteremperor/p/7420194.html
Copyright © 2020-2023  润新知