gitlab搭建_【环境搭建】gitlab-ci(持续集成)

fe7716da5d56464c8e258e45eac32fd5.png

背景

服务和服务器开始多起来了,一个个搞效率太低,所以准备用持续集成来提高效率

原理

d0778dd044c83133d728ba83ff51d488.png
gitlab-ci与ci-runner的关系

push到gitlab之后,触发GitLab-CI,GitLab-CI根据注册信息依次让GitLab-Runner执行对应的任务

步骤

  • Step 0:GitLab-CI是gitlab自带的,无需额外安装
  • Step 1:安装GitLab-Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash # 添加源
sudo apt-get install gitlab-runner # ubuntu
  • Step 2: 注册runner,在此之前需要准备token,根据如下的官网提示操作(我这里选择了shared runner,需要管理员权限)

1fee5f9a3c51ada0891c1781dc58a273.png

0907f1070e4096e702700384429e091d.png

fc29695358c128e11089b8ab8bb3792b.png
  • 注册成功后长这样

ab4b2f9d32292a45b9349eaa61b41346.png
  • 关于注册runner的tips:
    • 注意 tag可以有多个,各 tag之间用逗号隔开。如果你使用了多个 tag,那么当你想用这个 Runner时,在.gitlab-ci.yml的 tag字段里也必须明确指明这些 tags
    • 如果你选择Docker作为Runner的executor,你还要选择默认的docker image来运行job(当然,你也可以在.gitlab-ci.yml里指明你需要用的image)
    • 注册完成后你可以在/etc/gitlab-runner里发现config.toml文件,该文件是Runner的配置文件
  • Step 3:启动runner
    • 直接启动:
sudo gitlab-runner run
    • 启动为服务:
sudo gitlab-runner install -n "<service-name>" -u <user-name>
sudo gitlab-runner start -n "<service-name>"

user-name就是运行该命令的用户,必须指定,否者会报如下的错误,建议用一个单独的用户(比如:gitlab-runner)进行隔离

591cd0378b25afbcddaf5f64c140e33d.png

启动之后,用service命令check服务运行状态

e3f5513eb764d6b7150fe7bd1cfae8c5.png
  • Step 4:配置ci任务
    • 任务:将一个thrift服务每次push之后进行自动部署
    • 编写:部署脚本
#!/bin/bash
if [ $# -ne 2 ]; then
    echo "arguments error!<repo-name> and <deploy-path> were required"
    echo "example $0 gitlab-username/repo-name /deploy/path/"
    exit 1
else
    deploy_path=$2
    if [ ! -d "$deploy_path" ]; then
        project_path="git@git.shengtang.ai:"$1".git"
        git clone $project_path $deploy_path
    else
        cd $deploy_path && git pull
    fi
    supervisorctl restart service-name
fi
    • 关于如何使用supervisor部署服务,可以参看:
CZMan95:【环境搭建】Supervisor for Linux实操​zhuanlan.zhihu.com
45f48050326e57608f0320b2cd3aea81.png
    • 编写.gitlab-ci.yml: 在项目的根目录下添加.gitlab-ci.yml内容如下:
stages:
  - deploy
deploy:
    stage: deploy
    script:
      - ~/scripts/gitlab-runner/script.sh gitlab-user/repo-name /deploy/path/
    only:
      - master # 只有在mash push的时候才会触发部署
    tags:
      - global # gitlab-runner的tag,可以用来区分不同机器上的runner
    • push上去之后就会自动执行第一次任务,可以在gitlab的对应项目下的piplines中看到(注意:如果名字写的不对的话:如写成了.gitlab-ci.yaml的话是看不到任务的,我因为这个问题找了好久的bug(有的地方说可以用yaml,但是我这里是不可以的)

450813f16ead72fcf5baf2d41f4a8d4a.png

058616af2ca963674e6c4d095f5ef929.png
  • Step 5:多台机器部署
    • 方案一:利用上面提到的tag,进行多台机器的部署,但是这里有个问题是:一旦有bug,所有的机器都会同时挂掉,即便没有bug,所有机器同时restart也是个问题
    • 方案二(推荐):runner只在一台机器上,其它机器通过ssh命令进行触发(需要配置免密登录),该方法还能自己控制替换的步骤(这对于需要灰度的系统非常重要)

参考资料

gitlab-runner官网:https://docs.gitlab.com/runner/

关于runner的跟多细节:https://www.jianshu.com/p/19fe0ce7ecec

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值