git+gitlab实现git版本控制管理本地化+自动化部署

情景

假如你在本地的虚拟机或者公司内网服务器部署了gitlab,希望版本控制管理本地化或内网化,那如何实现版本控制管理本地化或内网化的同时,能够将项目基于版本控制管理部署在线上服务器,这就是以下要讨论的问题。

上面方案存在的关卡

  • 远程服务器如何同步或克隆本地gitlab的代码

  • gitlab如何项目实现自动化同步部署远程服务器

实现过程

建立仓库

  • 在gitlab建立项目(即在gitlab建立仓库过程)

  • 在远程服务器建立裸仓库

    

  • 本地克隆gitlab仓库

      

部署ssh-keys

  • 生成

ssh-keygen -t rsa -C "your_email@example.com"
  • 在gitlab部署本地ssh-key

    第一步:

    

第二步:

  • 在远程服务器部署gitlab的ssh-key

部署钩子

  • 在gitlab的.ssh文件的config文件配置相关信息

host test
    hostname 0.0.0.0 #你的主机地址
    user root
    port 22
    identityfile ~/.keys/test  #你的私钥地址
  • 在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
  • 在远程裸仓库部署钩子

#!/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

测试

  • 在本地新建文件,提交,如何测试服能自动更新,即部署成功

注意:

(1)出现下面

 

 

原因:gitlab未把host添加进kown_hosts

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spydxk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值