简介

最近公司要求要通过Gitlab CICD做一个项目的自动打包,我之前也没接触过,所以只能现学现卖。不过说实话,让我这个连大学英语四级都没过的人看Gitlab官网的纯英文教程,我真的是脑阔昏,于是一顿翻译加上网上一堆帖子,总算是研究了个大概。

CICD基础介绍

CI/CD 是一种持续开发软件的方法,可以不断的进行构建、测试和部署代码迭代更改。这种迭代有助于减少基于错误或失败的版本进行开发新代码的可能性。使用这种方法,从新代码开发到部署,可以减少人工干预甚至不用干预。

达到持续的方法主要是:持续集成,持续交付,持续部署。

CI(Continuous Integration):持续集成,也就是当每一次更改的代码被推送到远程分支后,可以创建一组脚本来自动地构建和测试这些更改,确保这些更改可以通过一些基本的准则,减少引入错误的机会。

CD :

Continuous Delivery:持续交付,在持续集成的基础上更进一步,当每一次更改的代码落库后,不仅会构建和测试,也会进行部署,但是部署需要人工干预,手动的有目的进行部署。
Continuous Deployment:持续部署,持续集成之外的另一个步骤,类似于持续交付。不同之处在于,它不是手动部署应用程序,而是将其设置为自动部署。不需要人为干预。
Gitlab CI/CD
Gitlab CI/CD 也就是 Gitlab 提供了上面的 CI/CD 能力,可以进行持续集成,持续交付和持续部署。

Gitlab CI/CD 适用于通用的开发工作流程。

当将本地 commits 推送到在 Gitlab 上的远程分支上,就会触发项目的 CI/CD pipeline:

自动运行(串行或并行)脚本:

构建和测试应用程序;
在应用程序中查看修改,检查是否和本地运行一样。
当达到预期以后:

Review 和 Approve 更改的代码;
合并分支,然后 GitLab CI/CD会自动地将更改部署到生产环境中。
在CI/CD 过程中,如果遇到失败,可以回滚修改的代码:

具体操作流程

上面说了一堆,其实是我在网上别人的贴子上copy的(哈哈哈),说起来很复杂,其实也没什么东西,简单来说三点:

1、gitlab-runner  # 需要下载、安装、启动、注册、运行

2、.gitlab-ci.yml  # 写我们需要的脚本

3、pipeline  # push代码或者merge代码runner都会自动执行yml中的脚本,不需要我们动,可以在pipeline下面的job中看到具体运行详情

作用:

1、gitlab-runner

想要实现程序自动打包,需要安装一个gitlab-runner(官网),安装步骤如下:

1.下载gitlab-runner  # 具体的版本看需求而定,我是windows的

2.改名为gitlab-runner.exe并放在新创建的C:\gitlab-runner文件夹下

# 流程:
cd C:\gitlab-runner 使用内置系统账户启动
gitlab-runner.exe install
gitlab-runner.exe start 使用当前用户账号启动,跟上面那个2选1即可
gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
gitlab-runner.exe start gitlab-runner.exe register # 输入这条命令,点击回车,如下:
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com/ # 这里用下图中的url,docker:填域名+gitlab访问地址
Enter the registration token:
iqxKz5XTz4w_2RxiSQ5S # 这里用下图中的token
Enter a description for the runner:
# 直接回车也可以随便填
Enter tags for the runner (comma-separated):
# 直接回车也可以随便填
Registering runner... succeeded runner=iqxKz5XT gitlab-runner.exe run-single # 注册完要把gitlab-runner跑起来

2、.gitlab-ci.yml

我们在 .gitlab-ci.yml 需要写个脚本,当push到gitlab上的时候,gitlab-runner会直接调用这个脚本在pipeline上运行,脚本实例如下:

stages:
- test variables:
PROJECT: "WO_API_Server" before_script:
- python.exe -m pip install --upgrade pip -i 镜像源 job1:
stage: test
script:
- pip install pyinstaller -i 镜像源
- pyinstaller -F ./Run_WO_API_Server.py
artifacts:
name: $PROJECT # 如果这里的name对应的值为字符串就要用${PROJECT}的形式传递变量
paths:
- dist/ # 只能使用项目中存在的文件夹路径
tags:
- windows-vs2022bt-lv
only:
- dev

具体的脚本内容大家可以自行去看官网,我就不细说啦。

补充:

'.gitlab-ci.yml' 的配置文件需要创建在项目的根目录下,如下图所示:

创建完后在该yaml配置文件内写上你要执行的脚本,当我们push代码或者merge代码的时候pipeline会把yml文件的脚本交给runner执行,就可以实现自动打包、部署等功能啦。

Gitlab CICD的更多相关文章

  1. [转]gitlab cicd (二)系列之安装git-runner rpm安装方式

    本文转自:https://blog.csdn.net/qq_21816375/article/details/84308748 本编是继gitlab cicd (一)系列之安装gitlb之后,基于安装 ...

  2. 持续集成Gitlab CICD Runner&Jenkins

    目录 使用Gitlab Runner实现 再要部署的服务器上安装 gitlab runner 下载可执行文件 设置可执行权限权限 创建用户 运行服务 注册 Runner 到gitlab上找到需要用的U ...

  3. gitlab CICD/schedules无法按照分钟执行

    多条Scheduling Pipelines 设置之后发现执行时间都是某个时间,分钟设置的无效不管用 修改/etc/gitlab/gitlab.rb gitlab_rails['pipeline_sc ...

  4. gitlab cicd流水线语法

    流水线语法有哪些? 流水线参数列表 Keyword Description script 运行的Shell命令或脚本. image 使用docker映像. services 使用docker服务映像. ...

  5. 再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)

    Gitlab runner 快速搭建CICD pipeline 背景 日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署 ...

  6. Git&Gitlab开发流程与运维管理

    Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...

  7. 从零入门 Serverless | 教你 7 步快速构建 GitLab 持续集成环境

    作者 | 存诚 阿里云弹性计算团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  8. CICD 流水线就该这么玩系列之一

    今天给大家分享的是 DevOps 世界中非常流行的一个 GitOps 工具 - Argo CD.如果你还不知道什么是 GitOps,欢迎留言告诉我,根据热度,我会再写一篇详细讲解 GitOps 的文章 ...

  9. 【干货】基于镜像部署的Gitlab-CI/CD实践和坑位指南

    引言 看过前文的博友可能注意到我是把 部署dll文件拷贝到生产机器,之后在生产机器上使用docker-compose即时创建镜像, 并没有完成CI/CD, 只是在原来传统部署方式下 将部署文件容器化. ...

  10. 研发效能|Kubernetes核心技术剖析和DevOps落地经验

    本文主要介绍Kubernetes 的核心组件.架构.服务编排,以及在集群规模.网络&隔离.SideCar.高可用上的一些使用建议,尤其是在CICD中落地,什么是 GitOps. 通过此文可彻底 ...

随机推荐

  1. [OpenCV实战]18 Opencv中的单应性矩阵Homography

    目录 1 介绍 1.1 什么是Homography 1.2 使用Homography进行图像对齐 1.3 Homography的应用-全景拼接 2 Homography的计算 3 总结 4 参考 &l ...

  2. tempdb大量闩锁等待问题分析

    背景 客户业务系统升级后,高峰期运行缓慢,在SQL专家云上看到数据库出现严重等待,需要分析原因并紧急处理. 现象 登录到SQL专家云中,进入实时可视化页面,在活动会话里面看到有大量资源等待的会话.   ...

  3. .Net 6 使用 Consul 实现服务注册与发现 看这篇就够了

    前言 在这几年的工作中,也经历过几个微服务项目,大多数都上了k8s,基本上都看不到Consul的身影,所以在工作之余折腾了下Consul,作为个人来讲还是得学习下,所以也就顺便通过文章来记录下学习过程 ...

  4. python之路42 JavaScript 基础语法

    JavaScript简介 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准.次年,ECMA发 ...

  5. ClickHouse ORM 3.x 发布啦

    经过1年断断续续的迭代,ClickHouse ORM 3.x 发布啦-说说它的故事吧. 回顾下2022 说来惭愧上次写博客都是22年4月份了,今年行情不好团队急剧收缩,工作几乎全扑在接手存量业务和主业 ...

  6. 模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常用关键字

    今日内容概要 模板层之标签 if判断 {% if 条件1 %} #条件1成立 <p>Hello!</p> #执行 {% elif 条件2 %} #条件1不成立 条件2成立 &l ...

  7. Hugging Face 2023 实习生招募计划

    Hugging Face 2023 实习生招募计划 想参与到 <王婆卖瓜>「最酷的 AI 社区」</王婆卖瓜>,共同构建未来吗?今天,我们为大家分享 Hugging Face ...

  8. djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令

    djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令 一.web框架前戏 web 框架可以理解为是基于会联网的web服务端>>>socket服务端 1.w ...

  9. 作业详解及流程控制之for循环

    作业详解及流程控制之for循环 目录 作业详解及流程控制之for循环 一.作业详解 1.根据用户输入内容打印其权限 2.编写用户登录程序 4.猜年龄的游戏 二.流程控制之for循环 三.while循环 ...

  10. redisConfig+redisUtil开箱即用

    RedisConfig @Configuration public class RedisConfig { //编写redisTemplate //固定模板,开箱即用 @Bean public Red ...