使用Gitlab构建简单流水线CI/CD

什么是Gitlab

Gitlab实质上是一套DevOps工具

在这里插入图片描述

目前看起来,Gitlab属于是内嵌了一套CI/CD的框架,并且可以提供软件开发中的版本管理、项目管理等等其他功能。

这里需要辨别一下Gitlab和Github Gitee的区别。

GIthub大家都很熟悉了,一般大家都会去里面淘一些开源项目或工具代码,来快速实现一些功能。Gitee与之类似。我觉得属于是开源项目托管平台。

Gitlab不一样,他本质上是工具软件,虽然我注册的免费账号,也可以给每个库2G的存储空间,开源多人协作软件项目,但不是像Github那样的大市场。除了注册云服务账号,也可以在本地安装Gitlab的框架,或者在公司内网搭建Gitlab。 自己搭建一套Gitlab, 对企业而言,就非常诱人。

另外,值得一提的是,Gitlab自己内嵌了一套CI/CD工具

我早就听说过CI/CD。但是干汽车电子和软件的大家都知道,面向嵌入式开发,特别是在Adaptive Platform 和SOC兴起之前,DevOps往往Dev都没实现自动化,根本Ops不起来。以前虽然接触过Jenkins的概念,但是没有深入研究。这次终于有机会接触Gitlab,就跳过Jekings这个老头直接来摆弄一下Gitlab的流水线。

GitLab Runner

Runner 是CI/CD中的打工人,也就是在CI/CD过程中每个Job的执行者。

在实现上,可以是云端共享的docker, 也可以是公司内搭建的服务器,甚至可以是自己PC上运行的虚拟机。

我这边就是在自己的虚拟机里安装了Runner。来实现自动编译。Runner在Linux系统中的表现为,下载一套Runner的程序并安装成为系统服务,,新建一个Linux账号供Runner使用,然后在CI/CD中的的git工程会load到Runner的文件系统中,然后执行配置文件中的指令。在安装Runner的过程中,会选择执行器,我选择的Shell. 那么应该就是调用了bash来执行传递给Runner的指令。

除了自己安装Runner来注册到项目给项目使用,像我注册的带云服务的账号,可以使用公用Runner。目前免费账户好像是一个月给免费400分钟编译,但是我编译了个Helloworld.cpp就用了差不多1分钟。可能真的用于开发还是需要自己搭建本地的Runner.

在这里插入图片描述

具体安装Runner的方式可以参照Gitlab工程网页中的指导或者官方文档。

.gitlab-ci.yml 文件

这个文件是CI的配置文件,在项目没有新建流水线的时候,可以从流水线设置那里进入,直接套用模板,新建一个配置文件,
C++模板文件如下:

# This file is a template, and might need editing before it works on your project.
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/C++.gitlab-ci.yml
# use the official gcc image, based on debian
# can use versions as well, like gcc:5.2
# see https://hub.docker.com/_/gcc/
image: gcc
build:stage: build# instead of calling g++ directly you can also use some build toolkit like make# install the necessary build tools when needed# before_script:#   - apt update && apt -y install make autoconfscript:- g++ helloworld.cpp -o mybinaryartifacts:paths:- mybinary# depending on your build setup it's most likely a good idea to cache outputs to reduce the build time# cache:#   paths:#     - "*.o"
# run tests using the binary built before
test:stage: testscript:- ./runmytests.sh
deploy:stage: deployscript: echo "Define your deployment script!"environment: production

上述文件有官方文档描述语法,这里简要记录一下解析:

image: gcc 

表示启动这个Docker Runner,当然是里面包含GCC编译套件的。

如果是本地安装的Runner,不是使用Docker, 可以不需要这一句。

build:stage: build

表示定义一个job,名字叫build, 另外这个job处于stage build中。
stage会按照定义的先后顺序执行,在一个stage内部,如果没有needs这样的关键字来约束,
job会并行执行。

在这里插入图片描述

script:- g++ helloworld.cpp -o mybinary

表示在这个job内会传递给Runner的指令脚本。
可以看出,前面我配置Runner的执行器为Shell,这里就直接传递shell指令就行了,就跟在本机Linux上一步一步编译一样。

  artifacts:paths:- mybinary

这个是表示流水线产物,也就是可以在每一个job后下载的内容。
这里通过指定路径,可以把满足路径(正则匹配也可以)的内容收集上传附在流水线后,作为流水线产物。

我觉得这个产物可以附上编译的可执行文件或者运行测试生成的测试报告。

流水线触发

默认在每次git提交的时候,就会触发流水线执行。

也可以修改配置文件,让满足不同条件触发。

当然也可以手动触发执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac苹果电脑开不了机怎么办,该怎么修复

台式机Mac或MacBook无法打开,或者可能无法通过Apple图标启动?不用担心,虽然会让人烦躁不安,但通常是可以修复的。 以下就是重新启动Mac所需的所有步骤。只需按顺序进行操作即可,除非操作系统更新失败后Mac无法启动。在…

【已解决】java的gradle项目报错org.gradle .api.plugins .MavenPlugin

我的java的gradle项目经常报错org.gradle .api.plugins .MavenPlugin。报错这个问题是因为依赖起冲突了,我在网上试了很多方法都没有效果,折让小编我很是苦恼,不过还好到最后问题还是解决了。 首先要知道你的项目所使用的gradle版本&#xf…

ES6 Proxy和Reflect

1.Proxy是什么? Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。属于“元编程”,即对编程语言进行编程。 如对对象a进行拦截就 let p new Proxy(obj,hand…

LeetCode 799. 香槟塔【数组,模拟,简单线性DP】1855

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单

源码下载:https://download.csdn.net/download/m0_66047725/88403340 源码下载2: 关注我留言 开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单。基于RuoYi-VUE版本开发。 1、使用RuoYi-Vue的基础上开发。 2、集成flowable&a…

ubuntu 20.04 passwd 指令不能使用

Linux 更改用户密码报Changing password for user 用户名. passwd: Module is unknown或更改新增用户密码passwd:未知的用户名 报错信息如下: 解决方法: 可以排查 /etc/pam.d/passwd配置文件 注释掉包含pam_passwdqc.so模块的行&#xff0c…

.NET开源且免费的Windows远程桌面管理软件

前言 今天要给大家推荐一款由.NET开源且免费的远程桌面管理软件:1Remote。 1Remote官方项目介绍 1Remote是一款现代的远程会话管理和启动器,它让你能够在任何时候快速开启一个远程会话。目前1Remote已支持 微软远程桌面(RDP)、VNC、SSH、Telnet、SFTP、…

Hadoop3教程(二十四):Yarn的常用命令与参数配置实例

文章目录 (132)YARN常用命令查看任务查看日志查看容器查看节点状态rmadmin更新配置查看队列 (133)生产环境核心配置参数(135)生产环境核心参数配置案例(140/141)Tool接口案例参考文献…

企业IT资产设备折旧残值如何计算

环境: 企业/公司 IT资产 问题描述: 企业IT设备折旧残值如何计算? 解决方案: 1.按三年折旧 净值原值-月折旧额折旧月份 , 月折旧额原值(1-3%)/36 折旧月份ROUND(E2*(1-3%)/36,2) 2.净值E2-F2*G2

彩虹商城知识付费程序

1,下载程序, 2.宝塔新建站点,,自己的域名直接用(别忘记解析了)教程直接用IP测试。。 3.上传你下载的压缩包(这里暂停一下,传好了继续)有点慢等不了了, 4.上传…

C语言中的3种注释方法

C语言中的3种注释方法 2021年8月28日星期六席锦 在用C语言编程时,常用的注释方式有如下几种: (1)单行注释 // … (2)多行注释 /* … */ (3)条件编译注释 #if 0…#endif (1)(2)在入门教程中比较常见。 对于(1) 【单行注释 // …】,注释只能显示…

【VR】【Unity】如何调整Quest2的隐藏系统时间日期

【背景】 网络虽然OK,但是Oculus Quest要连上商店还必须调整好系统时间,不过在Quest系统中,时间对用户是不可见的,本篇介绍调整的方法。 【方法】 打开SideQuest,没有的话先去下载一个。打开后先登录,如…

安装宝塔面板(详细教程)

一、简介 宝塔面板是一款简单好用的服务器运维面板。它支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。对于新手用云服务器来建站的话,宝塔面板是一个非常好用的工具。 宝塔官网:https://www.bt.cn/new/index.html 二、宝…

万物归宗系列01-html基本语法

万物归宗系列&#xff0c;即什么都懂一点系列。 HTML是标签语言&#xff0c;一般成双成对。 Hypertext Markup Language&#xff1a;超⽂本标记语⾔。是⽤来制作⽹页的⼀种标记语⾔。 1 基本框架 <!DOCTYPE html> <html lang"en"> <head><meta…

057:mapboxGL中layout,paint等属性的函数表达说明

第057个 点击查看专栏目录 本篇文章是mapbox的layer中layout,paint等属性的函数表达 mapbox中 Function 是什么 函数 Function 可以作为其 layout布局类属性和 paint 绘制类属性的属性值。在使用 Function 作为属性值时,实际上是一个对象。 layers的3种函数类型 Function …

根据SpringBoot Guides完成进行示例学习(详细步骤)

目录 1.打开Spring | Guides官网&#xff0c;或者直接搜索springboot都可 2.选择要学习的内容 3.根据提示的网址&#xff0c;Git到本地 4.将文件用IDEA打开&#xff0c;根据教程完成示例&#xff0c;这里不做细致讲解 5.运行项目 6.在终端查看运行结果 以Scheduling Task…

Apollo的搭建

Apollo的搭建 1.环境准备 jdk : 1.8 mysql 5.6.5 2.下载 两种方式&#xff1a; a.下载源码自己编译&#xff08;需要修改源码的可以选择&#xff09; 源码&#xff1a;https://github.com/ctripcorp/apoll b.编译好的直接使用 地址&#xff1a;Releases apol…

卷王问卷考试系统SurveyKing,开源调查问卷和考试系统源码

卷王问卷考试系统/SurveyKing是一个功能最强大的开源调查问卷和考试系统&#xff0c;可以快速部署&#xff0c;并适用于各行业。该系统提供了在线表单设计、数据收集、统计和分析等功能&#xff0c;支持20多种题型&#xff0c;多种创建问卷方式和多种问卷设置。 无论您是需要进…

力扣刷题 day49:10-19

1.二进制手表 二进制手表顶部有 4 个 LED 代表 小时&#xff08;0-11&#xff09;&#xff0c;底部的 6 个 LED 代表 分钟&#xff08;0-59&#xff09;。每个 LED 代表一个 0 或 1&#xff0c;最低位在右侧。 例如&#xff0c;下面的二进制手表读取 "4:51" 。 给你…

Linux Docker图形化工具Portainer如何进行远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具&#xff0c;可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…