Gitlab CI流程设计与思考

repo添加ci完整流程

新增Repo CI注册需要开发者提供的信息和我们这边需要反馈的信息。
CI注册需要提供的信息:
1. Repo url
2. 需要注册哪些CI服务器:Linux CI服务器、Windows CI服务器、rk3399性能测试CI服务、rk3399内存检测CI服务器、单元测试CI服务器
3. 需要支持哪些功能:编译测试、静态分析、CodeCoverage、单元测试、性能测试、动态内存检测、SDK打包发布。CI负责人需要:
1. 提供注册好的CI服务器tags给项目维护者。
2. 协助提供docker镜像和确认镜像版本。
3. 提供同样功能的CI脚本样例给项目维护者。

流程设计如下

Gitlab CI介绍

文章目录

  • Gitlab CI流程设计与思考
    • repo添加ci完整流程
    • 流程设计如下
  • Gitlab CI介绍
    • 1. reference
    • 2. pipeline设计实例:
      • 2.1整体pipeline设计:整个流程分为以下四个阶段
      • 2.2 CI build pipeline 设计
      • 2.3 CI test pipeline 设计:接口测试
      • 2.4 CI release pipeline 设计:打包发布

1. reference

https://meigit.readthedocs.io/en/latest/gitlab_ci_.gitlab-ci.yml_detail.html#gitlab-ci-yml

https://docs.gitlab.com/ee/ci/yaml/index.html

https://zhuanlan.zhihu.com/p/122313251

2. pipeline设计实例:

2.1整体pipeline设计:整个流程分为以下四个阶段

stages:- build- test- release- deploy

2.2 CI build pipeline 设计

depth_linux-x86_64-build:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v2stage: buildscript:- chmod a+x script/depth_build/build_x86_64.sh- ./script/depth_build/build_x86_64.shrules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: alwaysartifacts:name:  "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- build - linux-x86_64tags:- linux-x86_64

以上工作对应的解释如下

job:整个项目的驱动从这里开始image: docker镜像及其版本与位置stage: 当前job所属阶段script:当前job驱动脚本,可以简化job复杂度rules:- if: rules触发条件when: rules触发状态artifacts:name:  "$CI_COMMIT_REF_NAME"//artifacts:name
name指令允许你对artifacts压缩包重命名,你可以为每个artifect压缩包都指定一个特别的名字,这样对你在gitlab上下载artifect的压缩包有用expire_in: 1 week //artifacts:expire_in 用于设置 artifacts 上传包的失效时间. 如果不设置,artifacts 的打包是永远存在于 gitlab上 的。当指定 artifacts 过期时间的时候, 在该期间内,artifacts 包将储存在 gitLab 上。并且你可以在 job 页面找到一个 keep 按钮,按了以后可以覆盖过期时间,让 artifacts 永远存在。过期之后,用户将无法访问到 artifacts 包。时间的例子如下:
'2h20min'        '6 mos 1 day'          '3 weeks and 2 days'paths:- linux-x86_64 //path位置位于${CI_PROJECT_DIR},位于gitlab自己部署的服务器上tags:- linux-x86_64 //这里是该job运行的平台,比如可以是RK3399等,根据实际需要设置

2.3 CI test pipeline 设计:接口测试

depth_linux-x86_64-interface:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v1stage: testneeds: ["depth_linux-x86_64-build"]script:- chmod a+x script/depth_test/interface_x86_64.sh- ./script/depth_test/interface_x86_64.sh rules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: alwaysartifacts:name:  "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- DepthMagicTest.json tags:- linux-x86_64

以上工作对应的解释如下

job:测试job名称。可以根据实际起名字image: docker——imagestage: 当前阶段needs:依赖。一般是对前一个stage的依赖,当依赖job完成时候,开始启动当前jobscript:简化当前jobrules:- if: rules触发条件when: rules触发状态artifacts:name:  "$CI_COMMIT_REF_NAME"expire_in: 1 weekpaths:- 具体测试项tags:- 测试平台

2.4 CI release pipeline 设计:打包发布

depth_release_linux-x86_64:image: 192.168.xxx.xxx:12345/ubuntu16.04-x86_64:v5stage: releaseneeds: ["depth_linux-x86_64-build"]script:- chmod a+x script/depth_release/pack_linux-x86_64.sh- ./script/depth_release/pack_linux-x86_64.sh- curl --upload-file depth-xxx-sdk-linux-x86_64-*.tar.gz -u $NAS_LOGIN smb://$nas_ip/$release_x_path/depth-xxx-sdk/release/linux-x86_64/rules:- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'when: manualtags:- linux-x86_64

以上工作对应的解释如下

release job:image: docker——image运行环境stage: release阶段needs: ["depth_linux-x86_64-build"]//依赖jobscript:具体执行美容rules:rules遵循规则tags:- linux-x86_64

Gitlab CI(一)相关推荐

  1. GitLab CI流水线配置文件.gitlab-ci.yml详解(三)

    GitLab CI流水线配置文件.gitlab-ci.yml详解 - contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <con ...

  2. Gitlab CI更多内容学习(二)

    文章目录 1 CI含义 2.1 多平台统一发布 2.2 平台解耦单一发布 3. CI job按需触发 4. Gitlab CI/CD管道配置 5. Job和Runner 6. Gitlab CI预定义 ...

  3. 指定的网络文件夹目前是以其他用户名和密码进行映射的_使用 GitLab CI 与 Argo CD 进行 GitOps 实践

    在现在的云原生世界里面 GitOps 不断的被提及,这种持续交付的模式越来越受到了大家的青睐,我们前面也有文章详细讲解了 GitOps 的相关概念,在网上也可以找到很多关于它的资源,但是关于 GitO ...

  4. Gitlab CI 持续集成的完整实践

    来源:https://dwz.cn/mWyVHoSm 借着公司代码库迁移到私有Gitlab的契机,我接下持续集成的工作,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持续集成.总体 ...

  5. gitlab介绍、安装及gitlab CI、与jenkins的对比

    gitlab介绍.安装及gitlab CI.与jenkins的对比

  6. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

  7. iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布

    一.Gitlab CI/CD 简介 ① GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或 ...

  8. GitLab CI/CD

    GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Continuous Integration (CI)  持续集成 Continuous Delivery ...

  9. 使用GitLab CI和Docker进行容器应用自动化部署

    容器 Docker 越来越受开发者和运维人员的喜爱,更是作为实践 DevOps 的一个中要工具.同时 Gitlab 提供了免费的代码管理服务,其 gitlab-ci 更是提供了强大的自动化 CI/CD ...

最新文章

  1. 分析动态代理给Spring事务埋下的坑
  2. 汇编程序:输数字,出字母
  3. JavaScript pop()函数弹出数组最后数据
  4. TableView详解
  5. 手机也能当电脑用?--谈谈未来智能手机操作系统的走向
  6. Adaline神经网络简单介绍和MATLAB简单实现
  7. 扩展正则表达式egrep11
  8. 嵌入式工具——strace
  9. vue脚手架的自定义配置
  10. 应用密码学第6章——第七章
  11. php 实现简单的音乐播放器 (音乐上传 音乐列表 音乐删除)
  12. 桌面在计算机哪个文件,计算机中win7系统桌面文件在c盘哪个文件夹
  13. 俄勒冈州立大学计算机科学专业,2019上海软科世界一流学科排名计算机科学与工程专业排名俄勒冈州立大学排名第301-400...
  14. 华为西安工业大学鸿蒙,培养百位将领、19位院士,这所211大学被誉为“华为人的母校”...
  15. Spring Cloud在国内中小型公司能用起来吗?
  16. Docker-设置redis容器主从模式哨兵模式
  17. android画机器人,cdr怎么绘制安卓小人?cdr安卓机器人制作教程
  18. C#基础知识学习之 ✨ 委托的兄弟姐妹们 delegate、Action、Func、Predicate
  19. C11简洁之道:tupe元祖
  20. Python 最详细的 socket 相关内容解读

热门文章

  1. mysql常用数据类型的属性有哪些_MySQL数据类型和常用字段属性总结
  2. php mysql安装位置_安装php时,--with-mysql指定的是哪个路径呢?
  3. C/C++ 读取任意数目的整数
  4. Linux 文件夹详情,linux使用命令创建文件夹以及里面的文件,详情介绍
  5. 排序 时间倒序_经典排序算法之冒泡排序(Bubble Sort)
  6. C语言中的指针和内存泄漏
  7. 【机器学习入门】(7) 线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降
  8. python3socket非阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信
  9. vim中删除dos格式文件中的^M号的方法以及深度规整文件格式
  10. Class101–如何高效地构建强大的数字绘画