基于GitLab的CI&CD

前言

  gitlab, 我相信大家一定不会陌生,它自带的ci/cd在持续集成,持续交付方面也有一定的能力。有些介绍 比如:gitlab和gitlab-runnber 部署过程咱们就不多说,相信很多文章都介绍的很清楚。

GitLab-Runner

1-1

  • Runner是一个执行任务的进程
  • Runner可以放在不同的用户、服务器,甚至本地机器上

GitLab-Runner 注册

2-2

  在安装gitlab-runner的机器上命令注册runner

gitlab-runner register
  1. 输入gitlab的服务URL,这个使用的是https://xxx.com/
  2. 输入gitlab-ci的Toekn 如图:2-2
  3. 关于集成服务中对于这个runner的描述
  4. 给这个gitlab-runner输入一个标记,这个tag非常重要,在后续的使用过程中需要使用这个tag来指定gitlab-runner
  5. 是否运行在没有tag的build上面。在配置gitlab-ci的时候,会有很多job,每个job可以通过tags属性来选择runner。这里为true表示如果job没有配置tags,也执行
  6. 是否锁定runner到当前项目
  7. 选择执行器,gitlab-runner实现了很多执行器,可用在不同场景中运行构建,我选择Shell模式

编写gitlab-ci.yml文件

配置简单说明:

关键字必要描述
scriptCI/CD 过程需要执行的shell脚本
stage一个job流程,默认test
variables定义变量,GitLab上可配置
only指定当前job适用的git refs(分支、Tag)列表
except与only相反
tags通过标签管理或匹配runner
allow_failure指定当前job是否容错,正常job失败会跳过后续job流程
before_script在当前job执行前执行的shell脚本
after_script在当前job执行后执行的shell脚本
dependencies指定依赖的job列表,默认顺序执行
when依赖的上一个job执行什么状态后执行当前job: on_success on_failure always manual 默认on_success

前端 CICD

  下面涉及到相关服务IP或者涉密内容 用XXX ,这里简单说明一下,单纯的分了三个场景 正式环境 预发布 测试环境 。 这里就不举例子 vue项目打包成镜像了 k8s 部署vue项目 以前里面有重复的内容

  1. 在操作之前先登录docker
  2. 不同分支打不同的前端包,制作镜像 上传镜像
  3. 配置SSH免密登录,触发部署脚本
  4. 结束后,把之前打包的docker镜像清除,避免无限扩张
variables:
  IMAGE_VERSION: v1.0.1
  IMAGE_VERSION_TEST: v1.0.0
  IMAGE_ADDRESS: xxx/k8s/web-sxzz

stages:
  - build
  - staging
  - development

before_script:
  - docker login -u xxx -p xxx xxx

after_script:
  - docker rmi --force `docker images | grep web-sxzz | awk '{print $3}'`

build:
  stage: build
  tags:
    - web-sxzz
  only:
    - master
  cache:
    paths:
      - node_modules/
  script:
    - npm set registry https://registry.npm.taobao.org
    - npm install --progress=false
    - npm run build:prod
    - docker build -t "$IMAGE_ADDRESS:$IMAGE_VERSION.prod" .
    - docker push "$IMAGE_ADDRESS:$IMAGE_VERSION.prod"

staging:
  stage: staging
  tags:
    - web-sxzz
  only:
    - stag
  cache:
    paths:
      - node_modules/
  script:
    - npm set registry https://registry.npm.taobao.org
    - npm install --progress=false
    - npm run build:stage
    - docker build -t "$IMAGE_ADDRESS:$IMAGE_VERSION_TEST.stag" .
    - docker push "$IMAGE_ADDRESS:$IMAGE_VERSION_TEST.stag"

development:
  stage: development
  tags:
    - web-sxzz
  only:
    - dev
  cache:
    paths:
      - node_modules/
  script:
    - npm set registry https://registry.npm.taobao.org
    - npm install --progress=false
    - npm run build:test
    - docker build -t "$IMAGE_ADDRESS:$IMAGE_VERSION_TEST.test" .
    - docker push "$IMAGE_ADDRESS:$IMAGE_VERSION_TEST.test"
     # 需要配置ssh免密登录
    - ssh -t -t root@xxx -p 22 "/root/myDeployment/wfw-test/web-lxc/web-sxzz/deploy.sh"

配置SSH 免密登录

  gitlab-runner安装在: A服务器
  准备部署的服务器是: B服务器

1. 首先在A服务器检查 /home/gitlab-runner/.ssh 下面是否有 id_rsa.pub 文件
2. 如果没有的话 在A服务器上切换成 gitlab-runner 用户 

3. 使用ssh-keygen -t rsa生成ssh的公钥和私钥 // 回车之后3次回车即可
4. /home/gitlab-runner/.ssh 下会生成 id_rsa.pub 和 id_rsa 文件
5. 将id_rsa.pub 上传到 B服务器 
6. cat /id_rsa.pub >>/root/.ssh/authorized_keys
7. 重启 ssh服务 // centos7: systemctl restart sshd
8. 在A服务器上测试 ssh root@B服务地址

总结

   简单的ci/cd,欢迎批评指正~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值