Gitlab CI(一)
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
相关文章:

redhat6.5 yum源
首先在自己的电脑上安装Redhat6.5(本经验用的是Redhat6.5-64位的系统),然后把Redhat6.5系统ISO镜像文件放到自己的电脑中(本经验是放在/root 下,切记自己的存放路经,以后不要再变动此路径和移动ISO文件&…

均值漂移图像分割
#include "opencv2/highgui/highgui.hpp" #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace cv; using namespace std; //颜色通道分离 static void MergeSeg(Mat& img…

Unreal Engine 4 优化教程
本教程旨在帮助开发人员提升基于虚幻引擎(Unreal Engine*4 (UE4))开发的游戏性能。在教程中,我们对引擎内部及外部使用的一系列工具,以及面向编辑器的最佳实践加以概述,还提供了有助于提高帧速率和项目稳定性的脚本。查看详情 转载于:https:/…

Gitlab CI更多内容学习(二)
文章目录1 CI含义2.1 多平台统一发布2.2 平台解耦单一发布3. CI job按需触发4. Gitlab CI/CD管道配置5. Job和Runner6. Gitlab CI预定义变量1 CI含义 GitLab CI / CD管道配置参考 GitLab CI/CD pipeline configuration reference 使用在每个项目中调用的YAML文件配置GitLab …

spring读取配置文件的几种方式
场景 假如有以下属性文件dev.properties, 需要注入下面的tag tag123 通过PropertyPlaceholderConfigurer <bean class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name"location" value"dev.prop…

特征尺度变换实现
void CreateScaleSpace(cv::Mat srcImage,std::vector< std::vector<Mat> > &ScaleSpace,std::vector< std::vector<Mat> > &DoG) {cv::Size ksize(5, 5);double sigma; Mat srcBlurMat, up, down;// 高斯平滑GaussianBlur(srcImage, srcBlurM…

Flask基础-(模板)
概念:包含变量和运算逻辑的HTML,执行这些变量替换和逻辑计算工作的过程称为渲染 1.基本语法 a.{{ 。。。}}用来标记变量 b.{% %}用来标记语句 c.{{ 变量|过滤器 }} d.{# #}注释复制代码2.过滤器 safe:禁用转义;<p>{{ <em>…

GitLab CI流水线配置文件.gitlab-ci.yml详解(三)
GitLab CI流水线配置文件.gitlab-ci.yml详解 … contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_runner> 的基础上,对GitLab CI流水线配置文件 .gitlab-ci.yml 进…

elasticsearch-.yml(中文配置详解)
此elasticsearch-.yml配置文件,是在$ES_HOME/config/下 elasticsearch-.yml(中文配置详解) # Elasticsearch Configuration ## NOTE: Elasticsearch comes with reasonable defaults for most settings.# Before you set out to tweak and t…

SIFT 特征检测及匹配
#<opencv2/opencv.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>//using namespace cv::features2d; using namespace std; using namespace cv; // 计算图像的SIFT特征及匹配 …

详解Java中的复合视图设计模式
使用由多个子视图组成的复合视图。整个模板的每个子视图可以整体动态地包括在内,并且可以独立于内容来管理页面的布局。 Apache Tiles和SiteMesh 框架使用Composite View Design Pattern。 为简单起见,这种模式分为若干部分,如问题࿰…

CI流水线配置文件参数详解(一)
文章目录4. 参数详解(一)4.1 script4.2 image 指定使用Docker镜像。如 iamge:name ,暂时忽略。4.3 before_script 用于定义在所有作业之前需要执行的命令,比如更新代码、安装依赖、打印调试信息之类的事情。4.4 after_script4.5 stages 定义流水线全局可…

Elasticsearch的前后台运行与停止(rpm包方式)
对应,这es的下载,需要rpm包。 Elasticsearch-2.4.3的下载(图文详解) 建议用root用户 [rootdjt002 elasticsearch-2.4.3]$ pwd/usr/local/elasticsearch/elasticsearch-2.4.3 [rootdjt002 elasticsearch-2.4.3]$ rpm -ivh elastic…

SURF 特征检测及匹配
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>using namespace cv::xfeatures2d; using namespace std; using namespace cv;// 计算图像的SURF特征及匹配 floa…

Mybatis源码阅读之三
2019独角兽企业重金招聘Python工程师标准>>> 由前面的系列二分析到MapperMethod的execute方法,我们接着分析MapperMethod。如下List-1: List-1 public class MapperMethod {private final SqlCommand command;private final MethodSignature method;publ…

Vim快捷键键位图
https://www.runoob.com/w3cnote/all-vim-cheatsheat.html

简单几步写一个laravel扩展包
为什么80%的码农都做不了架构师?>>> laravel使用composer来管理扩展包,理解composer和laravel的开发模式,可以通过简单的几个步骤,快速写出一个laravel扩展包。 全新的laravel5.4环境安装 composer create-project la…

ORB 特征检测与匹配
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include <opencv2/xfeatures2d/nonfree.hpp> #include <iostream>using namespace cv::xfeatures2d; using namespace std; using namespace cv; // 计算图像的ORB特征及匹配 cv::…

数据结构(队列实现篇)
在数据结构与算法中,队列queue是一种受限的线性储存结构,特殊之处在于它只允许在表的前端front进行删除操作,而在表的后端rear进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾…
Markdown编辑器使用
Markdown编辑器使用欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚…

HOGDescriptor 描述类
struct CV_EXPORTS HOGDescriptor {// 高斯平滑参数enum { DEFAULT_WIN_SIGMA -1 };// 检测窗口的最大数量enum { DEFAULT_NLEVELS 64 };// 描述符存储格式enum { DESCR_FORMAT_ROW_BY_ROW, DESCR_FORMAT_COL_BY_COL };// 创建了特征描述符和检测器HOGDescriptor(Size win_si…

Linux----进程概念
程序 : 程序指的是一系列有逻辑, 有顺序结构的指令.进程 : 进程从两个角度来说:1 用户角度: 进程从用户角度来说就是运行中的程序2 操作系统的角度: 进程是操作系统对运行中程序的描述信息, 叫做进程描述符(程序控制块)简称PCBPCB : 在Linux下PCB指的是在内核中的task_struct 结…

codecheck
codecheck scan-build: clang-tools集成的静态检查工具, 使用clang static analyzer进行静态检查,使用方便 https://clang-analyzer.llvm.org/scan-build.html https://manpages.ubuntu.com/manpages/bionic/man1/scan-build.1.html CodeChecker: 爱立信推出的静…

ubuntu安装chrome浏览器
PPA方法,免FQ,否则,你得FQ下载chrome,你Firefox VPN配置好了吗!!! wget -q -O - https://raw.githubusercontent.com/longhr/ubuntu1604hub/master/linux_signing_key.pub | sudo apt-key add s…

java中的注解(二)
今天我继续来介绍java中的注解。注解与接口和类不同的是注解是不允许继承的,但是注解中有一个和继承有关的元注解:Inherited。如果我们在定义注解时候加上这个元注解那么我们就可以在子类中监测到该注解的存在。 Target(ElementType.TYPE) Inherited Ret…

【C++】random随机数与【C++11】/rand()和srand()的用法
文章目录随机数1. c 11 random随机数的使用(推荐使用)1.11.21.31.42.1 C中随机函数rand()和srand()的用法(老本版)2.2 限制随机数的范围随机数 C 提供了一组函数以生成和使用随机数字。随机数字就是从一组可能的值中进行随机选择…

快速区域积分直方图实现
void cacHOGinCell(Mat& HOGCellMat,Rect roi,std::vector<Mat>& integrals) {// 实现快速积分HOGint x0 roi.x,y0 roi.y;int x1 x0 roi.width;int y1 y0 roi.height;for(int i 0; i < NBINS; i){// 根据矩阵的上下左右坐标计算Mat integra…

Resultset获取行数和列数
为什么80%的码农都做不了架构师?>>> 在Java中,获得ResultSet的总行数的方法有以下几种。 第一种:利用ResultSet的getRow方法来获得ResultSet的总行数 Statement stmt con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,Re…

object.create()
语法: Object.create(proto, [propertiesObject]) //方法创建一个新对象,使用现有的对象来提供新创建的对象的proto。 参数:proto : 必须。表示新建对象的原型对象,即该参数会被赋值到目标对象(即新对象,或说是最后返回…

codecheck_use_record
文章目录Step 1: Integrate CodeChecker into your build systemStep 2: Analyze your codeStep 3: Run the analysisStep 4: View the analysis results in the command lineStep 5: Hint: You can do the 1st and the 2nd step in one round by executing checkstep 6: Expor…