CI/CD部署

news2024/10/5 14:26:54

什么是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=0
 
yun -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 reconfigure
 
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
 
Help 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.coloradmin.cn/o/1456902.html

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

相关文章

ArcGIS API for JavaScript 4.X 本地部署(js,字体)

0 目录(4.19) /4.19/ 1 修改文件 1.1 init.js 编辑器打开/4.19/init.js搜索文本[HOSTNAME_AND_PATH_TO_JSAPI],然后将其连同前面的https://替换为http://ip地址/4.19,可以是localhost,只能本机引用 替换后&#xff…

【软考高级信息系统项目管理师--第二十章:高级项目管理】

🚀 作者 :“码上有前” 🚀 文章简介 :软考高级–信息系统项目管理师 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 第二十章:高级项目管理 项目集管理项目组合管理组织级项目管理OPM&…

AI提示工程实战:从零开始利用提示工程学习应用大语言模型【文末送书-19】

文章目录 背景什么是提示工程?从零开始:准备工作设计提示调用大语言模型 实际应用示例文字创作助手代码生成持续优化与迭代数据隐私与安全性可解释性与透明度总结 AI提示工程实战:从零开始利用提示工程学习应用大语言模型【文末送书-19】⛳粉…

【软考问题】-- 10 - 知识精讲 - 项目风险管理

一、基本问题 1:按照可预测性,风险分哪三类? (1)已知风险:如项目目标不明确, 过分乐观的进度计划, 设计或施工变更和材料价格波动等。(2)可预测风险&#xff…

跟着pink老师前端入门教程(JavaScript)-day01

一、计算机编程基础 (一)编程语言 1、编程 编程:就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。 计算机程序:就是计算机所执行的一系列的指令集合,而程序全部…

spfa的特殊用法

spfa通常用来求带有负权边的最短路问题,但是它还有两种特别的用法——求负环和求差分约束 求负环 我们回顾spfa算法,本质上是一个点的距离被更新以后再用它去更新其他的点。将被更新的点放入队列中,这样一直更新,直到没有任何点…

Stable Diffusion系列(六):原理剖析——从文字到图片的神奇魔法(潜空间篇)

文章目录 LDM概述原理模型架构自编码器模型扩散模型条件引导模型图像生成过程 实验结果指标定义IS(越大越好)FID(越小越好) 训练成本与采样质量分析不带条件的图片生成基于文本的图片生成基于语义框的图片生成基于语义图的图片生成…

金蝶云星空——用递归SQL查询物料分组

应用场景: 金蝶物料分组为树形结构,需要根据SQL查询同步到第三方系统中。 技术实现 用递归CTE按照树状结构展开物料分组 with cte as( select 0 as 物料分组层级,t1.FID,case when isnull(t1.FFULLPARENTID,) then .CAST(t1.FID AS VARCHAR(…

K8s进阶之路-核心概念/架构:

架构:Master/Node Master组件--主控节点{ 负责集群管理(接收用户事件转化成任务分散到node节点上)} Apiserver: 资源操作的唯一入口,提供认证、授权、API注册和发现等机制 Scheduler : 负责集群资源调度&am…

K8s进阶之路-安装部署K8s

参考:(部署过程参考的下面红色字体文档链接就可以,步骤很详细,重点部分在下面做了标注) 安装部署K8S集群文档: 使用kubeadm方式搭建K8S集群 GitBook 本机: master:10.0.0.13 maste…

三防工业平板丨亿道加固平板定制丨三防平板电脑丨提升后勤管理

企业的后勤管理对于运作高效的商业模式至关重要。随着科技的不断发展,加固平板成为提升企业后勤水平的一项关键措施。本文将探讨加固平板在企业后勤管理中的应用和优势,并阐述如何利用这一技术提升企业的运营效率和竞争力。 一、三防加固平板的定义和功能…

通用二进制方式安装MySQL8.0.x

一、必要说明 1、系统:openEuler操作系统 2、版本:MySQL - 8.0.36 3、下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0 二、安装步骤 1、下载glibc版本的Mysql [rootnode2 ~]# wget -c https://dev.mysql.com/get/Downloads/MySQ…

《乱弹篇(十六)知不言》

日本电影《我的男人》,是伦理情色类型片。故事讲述,一个小姑娘在地震后失去了亲人,她被远房亲戚(一位消防员收养)。 图:来源电影《我的男人》广告 两人一起生活,难免日久生情,于是便…

【Jvm】运行时数据区域(Runtime Data Area)原理及应用场景

文章目录 前言:Jvm 整体组成 一.JDK的内存区域变迁Java8虚拟机启动参数 二.堆0.堆的概念1.堆的内存分区2.堆与GC2.1.堆的分代结构2.2.堆的分代GC2.3.堆的GC案例2.4.堆垃圾回收方式 3.什么是内存泄露4.堆栈的区别5.堆、方法区 和 栈的关系 三.虚拟机栈0.虚拟机栈概念…

Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)

目录 今天开始进入Redis系列学习分享1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Re…

防御保护--防火墙综合实验

防御保护--防火墙综合实验 一、实验需求二、实验配置1.配置IP地址及划分安全区域2.FW2和FW4组成主备模式的双机热备2.1 检查双机热备状态 3.DMZ区存在两台服务器,现在要求生产区的设备仅能在办公时间访问,办公区的设备全天都可以访问3.1 测试&#xff1a…

计算机专业必看的几部电影

计算机专业必看的几部电影 计算机专业必看的几部电影,就像一场精彩的编程盛宴!《黑客帝国》让你穿越虚拟世界,感受高科技的魅力;《社交网络》揭示了互联网巨头的创业之路,《源代码》带你穿越时间解救世界,…

区块链游戏解说: DeFi Kingdoms

数据源: DeFi Kingdoms Dashboard 作者:lesleyfootprint.network 编译:mingfootprint.network 什么是 DeFi Kingdoms DeFi Kingdoms 是一个跨链奇幻 RPG 游戏,拥有精美的像素艺术,将资源加密并与 DeFi 协议集成&am…

vue3 之 商城项目—封装SKU组件

认识SKU组件 SKU组件的作用 产出当前用户选择的商品规格,为加入购物车操作提供数据信息,在选择的过程中,组件的选中状态要进行更新,组件还要提示用户当前规格是否禁用,每次选择都要产出对应的sku数据 SKU组件的使用 …

每日学习总结20240219

每日总结 20240219 1.文件类型.csv CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。 常用场景…