CI/CD部署

什么是CI,什么是CD

CI和CD是软件开发中持续集成和持续交付的缩写。

CI代表持续集成(Continuous Integration),是一种实践,旨在通过自动化构建、测试和代码静态分析等过程,频繁地将代码变更合并到共享存储库中。其目的是快速发现和修复代码问题,确保开发团队对软件产品持续交付。其中,持续指的是在整个开发周期中经常性地进行集成。

CD代表持续交付(Continuous Delivery)和持续部署(Continuous Deployment)。持续交付是一种实践,它将 CI 的结果自动发布到一个暂存区域中,等待进一步的人工测试和批准,然后再将其发布到生产环境中。而持续部署则是将所有 CI 和 CD 步骤无缝集成在一起,以自动化地发布代码到生产环境中。

持续流程

  • 代码管理。开发人员使用版本控制系统(如Git)管理主干代码库和分支代码库。
  • 触发构建。当代码库中有新的变更提交时,持续集成服务器会自动触发构建过程。这个过程可以由代码仓库的hook机制,在代码被commit/push到远端时调用。也可以通过定时方式来进行构建操作,以便于定期更新构建结果。
  • 自动化构建。持续集成服务器会自动从代码库拉取最新代码,并执行构建脚本。构建脚本的具体内容包括代码编译、打包、部署等操作,具体的脚本内容是根据不同项目的需求而定。
  • 代码静态分析。在构建过程中,持续集成服务器还会执行代码静态分析以检查潜在的代码错误、安全漏洞等问题。
  • 单元测试和集成测试。接下来进行单元测试和集成测试,主要是验证从新提交的代码与已有代码库的兼容性和正确性。
  • 报告反馈。持续集成服务器会将构建过程中的错误、测试结果以及代码指标(如代码覆盖率、静态分析结果等)呈现到一个易于阅读的报告中,这些报告可以使团队更好地了解开发过程中出现的问题。
  • 部署操作。如果构建,测试和分析都成功完成,则可以将最新代码部署到生产环境或其他目标环境中。
    总之,持续集成的流程可帮助团队快速检测代码问题并进行修复,减少代码冲突时间和重复劳动,提高软件交付质量和效率。

持续部署方案:

使用第三方云产品:如阿里云的云效、腾讯云的CODING DevOps

1、腾讯云的CODING DevOps
在这里插入图片描述

2、阿里云
在这里插入图片描述

CI/CD云产品的使用

在这里插入图片描述

下面就以云效介绍为主,云效是阿里云提供的免费企业管理平台,其中可用的应用有项目协作、代码仓库、流水线管理、制品仓库、测试管理

链接:https://accountid-devops.aliyun.com/

进入链接首次会让新建企业(一般是管理员去创建企业,成员只是跟据管理员发来的邀请链接加入),
在这里插入图片描述
以下重点介绍代码管理、流水线、制品管理

代码管理

代码仓库中重点介绍代码检测,就是对提交的代码进行检测,检测不通过就不进行提交
在这里插入图片描述
检测规则可以多选
在这里插入图片描述
配置好检测方案后就可以进行检测任务的创建了,就可以配置代码仓库的关联触发。也可以导入其他的代码仓库地址
在这里插入图片描述

流水线

流水线就是控制代码自动化部署的配置,能实现CI/CD的持续集成发布的功能,在流水线中可以自动配置代码的检测
在这里插入图片描述

流水线部署方案选择

在新建的流水线中可选部署的方案
在这里插入图片描述
选择自己适用的部署方案,进行每个任务的编辑

配置流水线的源头。

源头可以分为现有的代码仓库的地址。和已经有的制品源地址。也可以是某流水线的源头
在这里插入图片描述

在这里插入图片描述

各流程具体编辑
代码扫描

具体的命令参数和路径,部署的主机信息
在这里插入图片描述

单元测试编辑

部署好单元测试的命令及测试报告文件的入口文件
在这里插入图片描述

构建上传

在这里插入图片描述

主机信息配置

在这里插入图片描述

制品管理

制品是向服务器发送的部署包,是压缩文件的类型,方便文件传输,方便代码的回滚和管理
在这里插入图片描述

自己部署 Gitlab+jenkins

jenkins概述:

Jenkins是一种开源的自动化服务器软件,最初是Hudson项目的分支。它提供了构建、测试和部署软件项目的持续集成(CI)和持续交付(CD)功能。

Jenkins可以自动化执行各种任务,如构建代码、运行测试、检查代码质量等。通过使用丰富的插件生态系统,Jenkins能够与许多其他工具和技术集成,包括Docker、Git、GitHub、SVN、Maven等等。

jenkins特点:

  • 高度可扩展。Jenkins有一个强大的插件框架,使得用户可以自由地选择需要的功能并将其添加到Jenkins中。
  • 易于设置和使用。Jenkins的安装和配置非常简单,并且有良好的文档和社区支持。
  • 自动化构建和测试。Jenkins可以自动从版本控制库中获取代码,进行编译、构建、测试和发布等操作。
  • 安全性。Jenkins提供了一系列的安全功能来保护您的构建环境和数据,如用户身份验证、访问控制等。
  • 多平台支持。Jenkins可以在Windows、Linux和Mac OS X等多个操作系统上运行。

gitlab概述:

GitLab是一个基于Git版本控制系统的、用于存储和管理代码的Web托管服务。它提供了代码仓库管理、问题追踪、CI/CD等一系列软件开发所需的功能。

gitlab特点:

  • 完整的Git工作流程管理。GitLab自带有完整的Git工作流程管理,可以方便地管理代码库的分支、合并、提交等操作。
  • 内置CI/CD功能。GitLab内置了强大的CI/CD工具,可以让用户轻松地配置和管理持续集成和持续部署过程。
  • 集成的项目管理。除了基本的Git操作以外,GitLab还包含了项目管理、问题跟踪、Wiki、代码审查、安全性扫描等功能,允许团队更加高效地协同开发。
  • 在线编辑器。GitLab带有在线编辑器,允许您在浏览器中直接编辑文件,而无需在本地环境中安装Git客户端。
  • 强化的安全性管理。GitLab提供了多重身份验证(MFA)、LDAP、SAML、TFA等多种安全性管理方式,保证应用程序和数据的安全性。
#配置阿里云仓库
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo /etc/yum.repos.d/
yum install -y epel-release#安装gitlab所需组件
yum -y install curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python.x86_64 #默认,使用postfx发送邮件
systemctl enable postfix --now#从本地下载gitlab包
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/#或者配置yum仓库vim /etc/yum.repo.d/gitlab.repo
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
repo_gpgcheck=0
enabled=1
gpgcheck=0yun -y install gitlab-ce#我选择的从本地下载,上传
#解包
rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm [root@localhost ~]# rpm -ivh gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm 
警告:gitlab-ce-15.9.4-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...1:gitlab-ce-15.9.4-ce.0.el7        ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.*.                  *.***                 ********               *****.******             ***************            ********,,,,,,,,,***********,,,,,,,,,,,,,,,,,,,,*********,,,,,,,,,,,.,,,,,,,,,,,*******,,,,,,,,,,,,,,,,,,,,,*****,,,,,,,,,.,,,,,,,****,,,,,,.,,,***,,,,,*,._______ __  __          __/ ____(_) /_/ /   ____ _/ /_/ / __/ / __/ /   / __ `/ __ \/ /_/ / / /_/ /___/ /_/ / /_/ /\____/_/\__/_____/\__,_/_.___/Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:sudo gitlab-ctl reconfigureFor a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.mdHelp us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-9#安装完成后修改访问地址
vim /etc/gitlab/gitlab.rb 
....
external_url 'http://192.168.100.10'
....#修改完后重置gitlab(时间较长,5分钟左右)
gitlab-ctl reconfigure#到最后看到gitlab Reconfigured!就OK了
#浏览器访问时内存要大于4G,不然内存不足会报501,另外注意防火墙规则
#初始密码在/etc/gitlab/initial_root_password 
cat /etc/gitlab/initial_root_password [root@localhost ~]# cat /etc/gitlab/initial_root_password 
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.Password: 0kevvItShgNxHYdvPywLB1hBDTtidJf7TWAlXvymKkU=# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.Password后边的是初始密码#初始化密码
gitlab-rake "gitlab:password:reset[root]"[root@localhost bin]# gitlab-rake "gitlab:password:reset[root]"
Enter password: 
Confirm password: 
Password successfully updated for user with username root.#密码必须8个以上的字符,最好为字母+数字or# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为lyh20030930
user.password='lyh20030930'
user.password_confirmation = 'lyh20030930'
# 保存
user.save!
#退出
exit

局部汉化
在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

相关文章

前端技巧之svg精灵图svg-sprite-loader

首先说明精灵图的必要性,其可以让我们只需要向服务器请求一次图片资源,就能加载很多图片,即能够减轻http请求造成的服务器压力。 然后这里要说明的是这个插件是webpack上面的,所以在vue2中比较好用,如果在vue3中&…

3DSC特征描述符、对应关系可视化以及ICP配准

一、3DSC特征描述符可视化 C #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/search/kdtree.h> #include <pcl/io/pcd_io.h> #include <pcl/features/normal_3d_omp.h>//使用OMP需要添加的头文件 #include <pcl…

ubuntu制作windows的u盘启动盘

概要&#xff1a; 本篇演示在ubuntu22.04中制作windows10的u盘启动盘 一、下载woeusb 1、下载woeusb 在浏览器中输入https://github.com/woeusb/woeusb/releases访问woeusb 点击红色矩形圈出来的部分&#xff0c;下载woeusb 2、安装wimtools wimtools是woeusb的一个必须的…

windows@按流量计费网络设置@电脑风扇降噪的可能方法

文章目录 按流量计费网络设置流量计费模式下的好处电脑风扇在连结wifi时更容易噪音问题限制软件和系统自动更新行为例:edge不再自动更新 按流量计费网络设置 windows metered connection:Metered connections in Windows - Microsoft Support 打开所连接的网络进行设置,开启me…

项目开发日志(登录界面):2. LoginTitle组件

LoginTitle组件 样式 说明 属性 属性名含义类型是否必填默认值welcomeTitle欢迎标语String是无mainTitle标题String是无 样式 mainColor -> 主题颜色 代码 <template><div class"logintitle-container"><p class"subtitle">{{ welc…

21-k8s中pod的调度-污点和污点容忍

一、污点的概念 所谓的污点&#xff0c;就是给k8s集群中的节点设置的污点&#xff0c;通过设置污点&#xff0c;来规划资源创建时所在的节点&#xff1b; 污点的类型解释说明PreferNoshedule 节点设置这个五点类型后&#xff1b; 表示&#xff0c;该节点接受调度&#xff0c;但…

人工智能技术应用笔记(二):OpenAI SORA文生视频模型技术报告全文中英对照 (GPT4翻译+人工润色)

目录 Video generation models as world simulators&#xff08;视频生成模型作为世界模拟器&#xff09; Turning visual data into patches &#xff08;将视觉数据转换为图像块&#xff09; Video compression network &#xff08;视频压缩网络&#xff09; Spacetim…

PyCharm - Script parameters (脚本参数)

PyCharm - Script parameters [脚本参数] References Run -> Edit Configurations… -> Run/Debug Configurations -> Configuration -> Script parameters 命令行&#xff1a; python display_yolo_log.py ./person_training_log/person_train_log_DIMM40_stdout…

【动态规划】【C++算法】2742. 给墙壁刷油漆

作者推荐 【数位dp】【动态规划】【状态压缩】【推荐】1012. 至少有 1 位重复的数字 本文涉及知识点 动态规划汇总 LeetCode2742. 给墙壁刷油漆 给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time &#xff0c;分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有…

【零基础学习CAPL】——CAN报文的发送(面板中直接修改信号值进行发送)

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 文章目录 1.概述2.面板创建3.系统变量创建4.系统变量与Panel值绑定4.CAPL实现5.效果6.全量脚本1.概述 在前面文章”【零基础学习CAPL】——CAN报文的发送(按下按钮同时周期性发送)“中对于发送报文中的信号是在脚本中固…

AI硬件的最新发展

目录 前言 1、专用AI芯片&#xff1a;专为智能而生 1.1、高并行度&#xff1a; 1.2、低功耗&#xff1a; 1.3、快速推理&#xff1a; 1.4、存储与计算一体化&#xff1a; 2、新材料、新结构&#xff1a;迈向量子计算 2.1、边缘AI&#xff1a;智能化的最前沿 未…

嵌入式19——标准IO

1.函数接口: 1.fgetc int fgetc(FILE *stream); 功能: 从流中读取下一个字符 参数: stream:文件流指针 返回值: 成功返回读到字符的ASCII码值 失败返回EOF 读到文件末尾返回EOF 2.fgetc/fputc与getchar/…

Linux系统——防火墙拓展及重点理解

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 5.白名单 6.通用匹配 7.示例 7.1添加回环网卡 7.2可以访问端口 7.3 主…

【Pygame手册03/20】用于绘制形状的 pygame 模块

目录 一、说明二、画图函数2.1 接口draw下的函数2.2 pygame.draw.rect()2.3 pygame.draw.polygon()2.4 pygame.draw.circle()2.5 pygame.draw.ellipse()2.6 pygame.draw.arc()2.7 pygame.draw.line ()2.8 pygame.draw.lines()2.9 pygame.draw.aaline()2.10 pygame.draw.aaline…

1.1_2 操作系统的特征

文章目录 1.1_2 操作系统的特征&#xff08;一&#xff09;并发&#xff08;二&#xff09;共享并发和共享的关系 &#xff08;三&#xff09;虚拟并发和虚拟的关系 &#xff08;四&#xff09;异步 总结 1.1_2 操作系统的特征 操作系统的特征&#xff1a;并发、共享、虚拟、异…

rc.local启动程序 配置source脚本重启不生效

问题现象&#xff1a; rc.local文件配置source命令执行的脚本 服务器重启后不生效 发现执行docker命令还是没有提示 [rootreg ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd servic…

【已解决】c++ qt bmp转jpg函数

本博文源于笔者正在写的代码&#xff0c;想要将bmp转成jpg&#xff0c;里面用到的库函数是QImage&#xff0c;大致函数的含义是将image进行rgb转换&#xff0c;最后保存成JPEG 函数书写 第一个参数是bmp图片路径比如d://a.bmp,第二个参数是要转换的jpg路径&#xff0c;比如d:…

c# 链表

在 C# 中&#xff0c;链表是一种数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据和指向下一个节点的引用。C# 中的链表通常使用泛型类型来存储数据&#xff0c;以便可以存储任意类型的数据。 以下是使用 C# 中的链表的基本示例&#xff1a; using Syste…

arcgispro删除影像黑色背景值

1、打开影像&#xff0c;如下&#xff1a; 2、打开栅格计算器&#xff0c;在 “视图”--“地理处理”中&#xff0c;点击&#xff0c;如下&#xff1a; 3、语句如下&#xff1a; SetNull("setnul_rast1"0,"setnul_rast1") “setnul_rast1”表示要处理的栅…

flutter 功能

flutter功能 带缓存的tab切换功能 使用PageController进行对应tab的widget缓存 late PageController _keepActiveVC;///当前使用的视图索引late int _index;late PageController _keepActiveVC;/// 所有视图final List<Widget> _bodys [];overridevoid initState() {…