首页 > 其他分享 >GitLab-CI (自动化集成&部署)

GitLab-CI (自动化集成&部署)

时间:2024-06-13 10:45:00浏览次数:11  
标签:集成 BD CI gitlab runner GitLab 作业 docker dockerfile

Gitlab CI/CD 是一款用于持续集成(CI),持续交付(CD)的工具,相似的工具有Jenkins、Travis CI、GoCD等。 Gitlab的CI/CD算是比较简单的了,只需要依靠一份".gitlab-ci.yml",将该文件随代码上传,Gitlab就会自动执行相应的任务,从而实现CI/CD。 gitlab-runner可实现cicd

1. 安装gitlab-runner

docker run -d --name gitlab-runner --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /BD/dockerfile:/BD/dockerfile -v /data/gitlab_deploy/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest 将/etc/gitlab-runner配置文件夹挂载出来方便更改配置,使用runner使用docker执行器操作宿主机docker则需要将docker.sock挂载

2. gitlab-runner注册

image.png     进入gitlab-runner容器中执行
# 进入容器
[root@dce-10-6-215-10 ~]# docker exec -it gitlab-runner bash
# 注册 runner
root@55c90539459e:/# gitlab-runner register
Runtime platform             arch=amd64 os=linux pid=48 revision=16ae0625 version=14.8.3
Running in system-mode.
# 输入 gitlab 的地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.96.146:58080
# 输入 gitlab 上的 token,就是上面的
Enter the registration token:
osG39dyuvojcxk5xucx
# 输入描述信息
Enter a description for the runner:
[55c90539459e]: build-runner
# 输入标签,这个gitlab-runner输入一个标记,这个 tag 非常重要,在后续的使用过程中需要使用这个 tag 来指定 gitlab-runner
Enter tags for the runner (comma-separated):
build
Enter optional maintenance note for the runner:
Registering runner... succeeded                     runner=osG39v5F
# 选择执行器,选的是docker
Enter an executor: ssh, virtualbox, docker-ssh+machine, kubernetes, custom, parallels, shell, docker, docker-ssh, docker+machine:
docker
# 填一个镜像及版本,前端选node:18.18
docker:24.0.5
    退出容器,查看gitlab-runner配置,注意volumes = ["/var/run/docker.sock:/var/run/docker.sock","/BD/dockerfile:/BD/dockerfile","/cache"]是否挂载,没有则需要添加
/BD/dockerfile:/BD/dockerfile挂载目的是将宿主机部署目录挂载进runner容器中,并且将runner容器中的该路径挂载进docker执行器内,以便保持代码中cicd部署文件与服务器相同
  $ cd /data/gitlab_deploy/gitlab-runner/config $ sudo cat config.toml  
concurrent = 1
check_interval = 0
shutdown_timeout = 0
[session_server]
  session_timeout = 1800
[[runners]]
  name = "build-runner"
  url = "http://58.210.96.146:58080/"
  id = 13
  token = "iJyy5_-a8Hatzp12zmHu"
  token_obtained_at = 2023-10-08T08:20:24Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.cache]
    MaxUploadedArchiveSize = 0
  [runners.docker]
    tls_verify = false
    image = "docker:24.0.5"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock","/BD/dockerfile:/BD/dockerfile","/cache"]
    shm_size = 0
  注意:内网访问gitlab时URL为http://10.0.1.4:80/,需要在config.toml中加上clone_url = "http://10.0.1.4:80/" image.png       在gitlab中查看刚注册的runner image.png    

3.  配置参数  .gitlab-ci.yml 项目代码中

     
  
关键字 描述
script 必须参数,运行器需要执行的脚本
image 使用Docker image镜像
services 使用Docker services镜像
before_script 作业执行前需要执行的命令
after_script 作业执行后需要执行的命令
stages 定义流水线所有的阶段
stage 定义作业所处流水线的阶段(默认test阶段)
only 限制作业在什么时候创建
except 限制作业在什么时候不创建
tags 作用使用的Runner运行器的标签列表
allow_failure 允许作业失败,失败的作业不影响提交的状态
when 什么时候运行作业
environment 作用部署的环境名称
cache 指定需要在job之间缓存的文件或目录
artifacts 归档文件列表,指定成功后应附加到job的文件和目录的列表
dependencies 当前作业依赖的其他作业,你可以使用依赖作业的归档文件
coverage 作业的代码覆盖率
retry 作业失败时,可以自动执行多少次
parallel 指定并行运行的作业实例
trigger 定义下游流水线的触发器
include 作业加载其他YAML文件
extends 控制实体从哪里继承
pages 上传GitLab Pages的结果
retry 作业失败时,可以自动执行多少次
variables 定义环境变量
 

后端cicd配置策略

  1. 代码格式校验
  2. 校验测试用例
  3. 构建镜像并部署-需要在gitlab上流水线中手动点击执行
按照顺序执行,前面某一步失败后续均不执行 新版本号时需要改动代码中version文件中版本号后push代码自动打包生成镜像部署服务
stages:
  - test
  - deploy
​
# 代码格式基本校验和执行测试用例
style-test:
  stage: test
  tags:
      - style-test
  script:
    - pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    - pip3 install -r requirements.txt
    - export PATH=/home/gitlab-runner/.local/bin:$PATH
    - cd detectionAdmin/
    - echo "start lint-style---$PATH"
    - pylint  detectionAdmin/  --fail-under=8
    - echo "end lint-style---"
    - echo "start UnitTest---"
    - python3 manage.py  test --noinput
    - echo "end UnitTest---"
​
​
# 构建镜像与部署web服务
deployweb-job:
  before_script:
    - export version=$(cat version)
  tags:
    - build237
  stage: deploy
  when: manual
  script:
    - echo "start build images..."
    - export PATH=/home/gitlab-runner/.local/bin:$PATH
    - cd docker
    - sh rebuild_base.sh
    - sh rebuild.sh $version
    - echo "start deploy..."
    - echo $version
    - cd ../
    - cp -R deploy/deploy_237/. /BD/dockerfile/
    - cd /BD/dockerfile
    - sed -i "s/WEB_IMAGE=detection_webserver:[0-9.]\+/WEB_IMAGE=detection_webserver:$version/" .env
    - cat .env
    - sh restart_web.sh

 

4. 引用子模块

在.gitlab-ci.yml文件上添加
# 拉取公共组件
variables:  GIT_SUBMODULE_STRATEGY: recursive
  在公共组件库中创建公用账号 image.png     在gitsubmodule中使用用户和token登录拉取方式  

标签:集成,BD,CI,gitlab,runner,GitLab,作业,docker,dockerfile
From: https://www.cnblogs.com/Mr-shen/p/18245382

相关文章

  • 2024年第十四届信息通信与管理国际会议(ICICM 2024)即将召开!
    2024年第十四届信息通信与管理国际会议(ICICM 2024)将于2024年11月6日至8日在法国巴黎举行。在信息爆炸的时代,信息通信与管理已成为推动社会发展的核心动力。ICICM 2024将设立多个分会场,涵盖信息通信、管理科学、网络安全等多个领域,全球各地的专家学者齐聚一堂,与大家共同分享......
  • 2024年第十届通信和信息处理国际会议(ICCIP 2024)即将召开!
    2024年第十届通信和信息处理国际会议(ICCIP2024)将于2024年11月21-24日在海南·陵水举行。当前,全球信息化水平不断提高,通信和信息处理技术已成为推动社会进步和经济发展的重要力量。ICCIP2024是一个汇聚智慧、共谋发展的盛会。旨在搭建一个高水平的学术交流平台,相关领域的专......
  • 【WEEK16】 【DAY2】Dubbo和Zookeeper集成第二部分【中文版】
    2024.6.11Tuesday接上文【WEEK15】【DAY4】Dubbo和Zookeeper集成第一部分【中文版】目录18.Dubbo和Zookeeper集成18.3.测试环境搭建18.3.4.Windows下安装dubbo-admin18.3.4.1.下载dubbo-admin18.3.4.2.解压进入目录18.3.4.3.在项目目录下打包dubbo-admin18.3.4.4.执......
  • httpclient,轻量级idea集成测试工具
    优点:不用新开一个网页,具有测试数据保存功能,不需要配置即用(对比swagger)   不会特别占内存(对比postman) 使用方法:idea中安装插件controller方法中点击 选择对应action 即可自动生成测试,点击左侧三角即可测试。但是数据内容需要自己填写如下:###分页查询POST{......
  • 论文解读——CVPR2024《Learning by Correction: Efficient Tuning Task for Zero-Sho
    一、研究背景  视觉-语言模型是一类能够处理和理解图像及其相关文本信息的模型,它们在多种视觉-语言任务中展示了卓越的性能。这些任务包括图像描述(imagecaptioning)、视觉问题回答(visualquestionanswering)、图像-文本检索(image-textretrieval)等。这些模型通常经过大规......
  • springboot2.6x集成swagger2踩坑点
    最近在用springBoot2.6.13集成swagger2.9.2时出现了几个bug,经过几番尝试后,得出了最终的结论,时间紧可以直接看结论。首次集成swagger2时,启动springboot后的bug:org.springframework.context.ApplicationContextException:Failedtostartbean'documentationPluginsBoots......
  • 【ubuntu】记住gitlab的登录账号密码
    一、场景   当我们拉取多个项目时,每次总要输入密码,http方式的时候  二、方法gitconfig--globalcredential.helperstore然后可以手动配置账号密码配置~/.gitconfig文件[user][email protected][credential]helper=store[f......
  • gitlab-runner
    9712024-06-1214:14:14dockerps9722024-06-1214:14:37cat/etc/os-release9732024-06-1214:15:32java-version9742024-06-1214:16:24git-version9752024-06-1214:16:33git--version9762024-06-1214:16:59yumremovegit977......
  • Gitlab01-安装配置
    使用yum安装并配置GitLab安装#安装依赖工具sudoyuminstall-ycurlpolicycoreutils-pythonopenssh-server#启用SSH服务sudosystemctlenablesshdsudosystemctlstartsshd#安装邮件服务sudoyuminstallpostfixsudosystemctlenablepostfixsudosystemct......
  • Gitlab02-结构简介
    gitlab组件nginx#静态web服务器,作为gitlab的proxy代理,处理所有的https静态访问请求gitlab-shell#用于处理Git命令和修改authorizedkeys列表gitlab-workhorse#轻量级反向代理服务器,处理较大的文件上传下载,还有gitpush命令行操作log......