• 使用Git的hook实现代码的自动部署


    这个功能非常的好用,可以省去诸多麻烦!我自己也是摸索了好久,才完全掌握的。希望能对大家有所帮助!

    1,首先在我的阿里云服务器上已经创建好了一个代码远程的管理仓库,/srv/cmp.git

    2, 在服务器上建立一个普通Git仓库用于存放网站的源代码。(web服务器上的另一个本地仓库)

    mkdir /var/web
    cd /var/web
    git clone /srv/cmp.git

    这样服务器上的普通仓库便和远程仓库建立的联系,所以说这一步很关键

    3,配置Git Hook

    进入到/srv/cmp.git/hooks文件夹,使用vim  post-receive创建一个脚本,当你在本地仓库执行git push后就会触发post-receive。
    post-receive的内容如下:

    #!/bin/sh
    
    
    #判断是不是远端仓库
    
    IS_BARE=$(git rev-parse --is-bare-repository)
    if [ -z "$IS_BARE" ]; then
    echo >&2 "fatal: post-receive: IS_NOT_BARE"
    exit 1
    fi
    
    unset GIT_DIR
    DeployPath="/var/web"
    
    echo "==============================================="
    cd $DeployPath
    echo "deploying the test web"
    
    #git stash
    
    #git pull origin master
    
    git fetch --all
    git reset --hard origin/master 

    time=`date` echo "web server pull at webserver at time: $time." echo "================================================"

    保存后赋予可执行权限,

    chmod +x /srv/cmp.git/hooks/post-receive
    

    4,这个文件创建好了之后,可以直接运行的,排除运行中出现的问题

    ./post-receive

    确保这个脚本可以正确执行,这一点也非常关键。

    5,配置ssh,注意:这里要先切换到git用户,然后生成公钥和私钥,然后把git用户的公钥粘贴到/home/git/.ssh/authorized中

    6,再次执行./post-receive

     Shell脚本报错:-bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory

    主要原因是switch.sh是我在Windows下通过Sublime Text编辑后,在linux系统里执行的。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。

    我们可以通过vi编辑器来查看文件的format格式。步骤如下:

    1:首先用vi命令打开当前的shell脚本文件

    2:在vi命令模式中使用 :set ff 命令

    3:解决方法有两个

    ①直接当下输入命令

    :set ff=unix

    ②返回文件当下目录执行命令

    dos2unix switch.sh

    如果当前系统没有dos2unix命令,还需要去网上下载安装包解压,到此为止。

  • 相关阅读:
    linux centos 8.2 安装docker
    linux配置jdk环境变量
    msyql查看版本号、最大连接数、当前连接数等
    mysql HikariCP连接池配置
    docker安装mysql
    linux mysql导入导出sql文件
    nginx配置文件
    Vim 中进行文本替换
    关于加密、证书的那些事
    Thread协议栈基础
  • 原文地址:https://www.cnblogs.com/peteremperor/p/7754195.html
Copyright © 2020-2023  润新知