美文网首页
gitlab+自动化部署(gitlab基于内网)

gitlab+自动化部署(gitlab基于内网)

作者: Stargazes | 来源:发表于2020-01-02 10:08 被阅读0次

    情景

    假如你在本地的虚拟机或者内网服务器下部署了gitlab,将版本控制本地化或内网化,那如何实现将本地的gitlab仓代码部署到线上的服务器呢?

    实现步骤

    1.本地搭建gitlab版本控制器
    2.将项目部署到本地的gitlab仓库上
    3.开发人员正常在内网下上传,克隆代码
    4.通过配置gitlab的远程登录服务器,将本地代码推送到远程服务器

    实现过程

    建立仓库
    • 在gitlab上建立项目,(将本地项目初始化到gitlab上)
    • 在远程服务器上建立裸仓库
    部署ssh-keys
    • 生成 ssh-keygen -t rsa -C "your_email@example.com"
    • 在gitlab部署本地的ssh-key
    • 在远程服务器部署gitlab的ssh-key(对应公钥)


      image.png
    部署钩子
    • 在gitlab的.ssh文件的config文件配置相关信息


      image.png
    • 在gitlab的仓库的下创建custom_hooks文件夹,并在custom_hook下创建post-receive,编辑
    #!/bin/sh
    # example hook script for the "post-receive" event.
    #
    # The "post-receive" script is run after receive-pack has accepted a pack
    # and the repository has been updated.  It is passed arguments in through
    # stdin in the form
    #  <oldrev> <newrev> <refname>
    # For example:
    #  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
    #
    # see contrib/hooks/ for a sample, or uncomment the next line and
    # rename the file to "post-receive".
    
    #. /usr/share/git-core/contrib/hooks/post-receive-email
    while read oldrev newrev ref
    do
        branch=$(git rev-parse --symbolic --abbrev-ref $ref)
        if [ "$branch" = "1.0" ]
        then
            git push -f test:/var/www/html/test.git $branch
        fi
    done
    
    • 在远程仓库下创建hooks文件夹,并在hooks下创建post-receive,编辑
    #!/bin/sh
    #
    # An example hook script for the "post-receive" event.
    #
    # The "post-receive" script is run after receive-pack has accepted a pack
    # and the repository has been updated.  It is passed arguments in through
    # stdin in the form
    #  <oldrev> <newrev> <refname>
    # For example:
    #  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
    #
    # see contrib/hooks/ for a sample, or uncomment the next line and
    # rename the file to "post-receive".
    
    #. /usr/share/git-core/contrib/hooks/post-receive-email
    while read oldrev newrev ref
    do
        if [[ $ref =~ .*/1.0$ ]];
        then
            echo "1.0 ref received.  Deploying 1.0 branch to test server..."
            git --work-tree=/var/www/html/test--git-dir=$GIT_DIR checkout -f $ref
        fi
    done
    
    • 添加host到本地gitlab服务器的kown_hosts
     ssh-keyscan -t rsa ip>> ~/.ssh/known_hosts
    
    测试完成

    相关文章

      网友评论

          本文标题:gitlab+自动化部署(gitlab基于内网)

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