欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)

发布时间:2024/6/1 编程问答 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 gitlab 目录tag_【环境搭建】gitlab-ci(持续集成) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

背景

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

原理

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,需要管理员权限)

  • 注册成功后长这样

  • 关于注册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)进行隔离

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

  • Step 4:配置ci任务
    • 任务:将一个thrift服务每次push之后进行自动部署
    • 编写:部署脚本
#!/bin/bash if [ $# -ne 2 ]; thenecho "arguments error!<repo-name> and <deploy-path> were required"echo "example $0 gitlab-username/repo-name /deploy/path/"exit 1 elsedeploy_path=$2if [ ! -d "$deploy_path" ]; thenproject_path="git@git.shengtang.ai:"$1".git"git clone $project_path $deploy_pathelsecd $deploy_path && git pullfisupervisorctl restart service-name fi
    • 关于如何使用supervisor部署服务,可以参看:
CZMan95:【环境搭建】Supervisor for Linux实操​zhuanlan.zhihu.com
    • 编写.gitlab-ci.yml: 在项目的根目录下添加.gitlab-ci.yml内容如下:
stages:- deploy deploy:stage: deployscript:- ~/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,但是我这里是不可以的))

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

参考资料

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

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

总结

以上是生活随笔为你收集整理的gitlab 目录tag_【环境搭建】gitlab-ci(持续集成)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。