DevOps与CI/CD简介

news/2024/6/24 9:14:12/文章来源:https://blog.csdn.net/xwh3165037789/article/details/137047828

DevOps 是一种软件开发和运维的文化、实践和方法论,旨在通过加强开发团队和运维团队之间的合作和沟通,实现快速、高效、可靠的软件交付和运维。DevOps 是由 Development(开发)和 Operations(运维)两个单词组合而成的缩写。

在这里插入图片描述
DevOps 的目标是通过实现上述实践和原则,缩短软件交付周期、提高交付频率、降低故障率、加强团队合作,从而实现更快速、更灵活、更可靠的软件开发和运维。

DevOps的核心在于CI/CD,实现自动化集成CI能帮助程序员极大减少在开发打包,构建,测试的时间。

Jenkins是一个自动化服务器,是比较成熟的CI工具(也可以CD)能够实现自动化集成发布。

特点:

  • 开源免费
  • 多平台支持(windows/linux/macos)
  • 主从分布式架构
  • 提供web可视化配置管理页面
  • 安装配置简单
  • 插件资源丰富

Jenkins

jenkins中文文档

Jenkins由java语言开发因此,需要JRE环境。

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

安装成功后jenkins会自动启动,如果没有启动可能是端口被占用了因为jenkins默认使用8080端口为常用端口。

修改/etc/init.d/jenkins文件 修改HTTP_PORT=8080为其他未被占用的端口即可,如下:

在这里插入图片描述

其他系统的暗账请参考官网安装Jenkins

除了docker,系统上安装jenkins还支持web一件应用,直接通过启动web服务完成,直接下载jebkins.war,使用web容器运行。jenkins是由java语言写的,在任何存在jre和jdk的环境都可以启动。

运行jenkin服务:java -jar jenkins.war --httpPort=8080

打开浏览器进入链接 http://localhost:8080.

在这里插入图片描述
根据提示查看密码:

在这里插入图片描述

安装组件:

在这里插入图片描述
自动安装组件

在这里插入图片描述
等待安装完成后创建用户

在这里插入图片描述
在这里插入图片描述
设置完成登录
在这里插入图片描述
进入主页

在这里插入图片描述

Jenkins Pipeline(或简称为 “Pipeline”)是一套插件,将持续交付的实现和实施集成到 Jenkins 中。pipeline的构建过程遵循的规则被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。

选择New Item,填写pipline名称,选择构建的任务类型,一般为Multibranch Pipeline

在这里插入图片描述
配置流水线,如下:

在这里插入图片描述
添加代码仓库,jenkins是从代码从库获取代码的

在这里插入图片描述

根据需要配置,配置完成后,jenkins就会获取代码并打包,如下:

在这里插入图片描述
但是我们可以看到jenkins自动从仓库获取了代码,但是由于没有Jenkinsfile没有构建流程。接下来学习Jenkinsfile的书写。

pipeline {agent anystages {stage('Build') {steps {sh 'echo "Hello World"'sh '''echo "Multiline shell steps works too"ls -lah'''}}}
}

Pipelines 由多个步骤(step)组成,允许你构建、测试和部署应用。 Jenkins Pipeline 允许您使用一种简单的方式组合多个步骤, 以帮助您实现多种类型的自动化构建过程。pipeline表示一个Pipelines,agent表示运行的环境,stage一个任务,steps表示任务的步骤,每个步骤内部就是一个单独的命令。

更多移步Jenkins执行多个步骤(step)

agent 指令告诉Jenkins在哪里以及如何执行Pipeline或者Pipeline子集,所有的Pipeline都需要 agent 指令。agent可以被多种方式定义,这里一般用docker,当执行Pipeline时,Jenkins将会自动运行指定的容器,并执行Pipeline中已经定义好的步骤steps。

另外pipeline中也可以使用环境变量,如下:

environment {DISABLE_AUTH = 'true'DB_ENGINE    = 'sqlite'
}

编写Jenkinsfile

在这里插入图片描述

在这里插入图片描述

stackoverflow

选择Manage:

在这里插入图片描述

选择Plugins:

在这里插入图片描述
选择Available plugins

在这里插入图片描述

安装如下插件

在这里插入图片描述

权限不足错误:
在这里插入图片描述

# 添加jenkins用户到用户组
sudo usermod -a -G docker jenkins# 修改/var/run/docker.sock文件的权限
cd /var/run
chmod 777 docker.sock

写完pipline让jenkins构建即可。

pipeline {agent {docker {image 'maven:latest'}}stages {stage('Build') { steps {sh 'mvn clean package'}}stage('Run JAR') {steps {sh 'java -jar target/hellojava.jar'}}}
}

CI/CD

在gitlab CI/CD中,构建自动化的一般步骤:

  1. 安装gitlab-runner,runner是实现CI/CD的关键,安装完runner配置gitlab连接,实现gitlab仓库与runner的连接,runner可以部署在任何服务器上。

  2. 编写.gitlab-ci.yml文件,在项目的根目录下创建.gitlab-ci.yml文件,定义CI/CD流程的各个阶段(如构建、测试、部署)以及相应的任务。runner就可以安装yml定义的步骤构建任务。

  3. git commit每次自动提交会自动出发Pipeline的执行任务。

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

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

相关文章

【随笔】Git -- 高级命令(下篇)(八)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

QA测试开发工程师面试题满分问答5: 内存溢出和内存泄漏问题

概念阐述 内存溢出(Memory Overflow)和内存泄漏(Memory Leak)是与计算机程序中的内存管理相关的问题,它们描述了不同的情况。 内存溢出是指程序在申请内存时,要求的内存超出了系统所能提供的可用内存资源…

文本自动粘贴编辑器:支持自动粘贴并筛选手机号码,让信息处理更轻松

在信息时代的浪潮中,文本处理已成为我们日常工作与生活的重要组成部分。无论是商务沟通、社交互动还是个人事务处理,手机号码的筛选与粘贴都显得尤为关键。然而,传统的文本处理方式效率低下、易出错,已无法满足现代人的高效需求。…

文心一言 vs GPT-4 ----全面横向比较

文心一言 (Wenxin Yiyan) 和 GPT-4 是两个强大的人工智能语言模型,它们在处理自然语言方面表现出了出色的能力。但它们有一些关键的区别和优势。以下是它们的横向比较: 公司和平台: * 文心一言是由百度开发的中文语言模型,专门为…

【C语言】——指针七:数组和指针试题解析

【C语言】——指针七: 前言一、 s i z e o f sizeof sizeof 与 s t r l e n strlen strlen 的对比1.1、 s i z e o f sizeof sizeof1.2、 s t r l e n strlen strlen1.3、 s i z e o f sizeof sizeof 和 s t r l e n strlen strlen 对比 二、数组和指针笔试题解析…

monitor link 联合smart link配合应对复杂的网络

monitor link关键词:上行和下行端口,当上行端口异常,下行端口立即down掉,也就是一种联动机制 如果上行端口里面是smart link方式,则当主从端口都出问题时候,下行端口才会down掉 monitor link 配置步骤 1创…

【LeetCode: 96. 不同的二叉搜索树 + 动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

windows下通过vscode访问ubuntu(绝大部分Linux下开发所采用的方案)

前言 本篇博客是介绍VSCode远程连接Ubuntu进行开发的解决方案,前提是安装好了VMWare,Ubuntu,windows下的VSCode。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关…

rust项目组织结构和集成测试举例

概述 在学习rust的过程中,当项目结构略微复杂的时候,写集成测试的时候发现总是不能引用项目中的代码,导致编写测试用例失败。查阅了教程,一般举例都很简单。查阅了谷歌和百度以及ai,也没有找到满意的答案。这里记录一…

从《布瓦尔与佩库歇》实践中学习社会科学概论

从《布瓦尔与佩库歇》实践中学习社会科学概论 前情提要《布瓦尔与佩库歇》实践笔记云藏山鹰社会科学概论报告核心--信息形数身知™意合™意气实体过程意气实体过程宇宙学诠释™ 社会科学概论花间流风版导读,马斯克风格演讲[ 一尚韬竹团队供稿;] 内容展开…

如何利用DPU加速Spark大数据处理? | 总结篇

一、总体介绍 1.1 背景介绍 近年来,随着存储硬件的革新与网络技术的突飞猛进,如NVMe SSD和超高速网络接口的普及应用,I/O性能瓶颈已得到显著改善。然而,在2020年及以后的技术背景下,尽管SSD速度通过NVMe接口得到了大幅…

机器学习 | 线性判别分析(Linear Discriminant Analysis)

1 机器学习中的建模 1.1 描述性建模 以方便的形式给出数据的主要特征,实质上是对数据的概括,以便在大量的或有噪声的数据中仍能观察到重要特征。重在认识数据的主要概貌,理解数据的重要特征。 Task:聚类分析,数据降…

Mamba解读(FlashAttention,SSM,LSSL,S4,S5,Mamba)

Sequence modelScale and EfficiencyFlashAttentionMotivationMethodFlashDecoding MambaState-Space Models(SSM)Selective State Space Models(Mamba) Sequence model seq2seq任务将 输入序列 x ( t ) x(t) x(t) 映射为 输出序…

Collection与数据结构 链表与LinkedList(四):双向无头非循环链表的实现与LinkedList的使用

1. 双向无头非循环链表的实现 下面我们给出一个接口,接口中的这些方法就是待实现的方法 public interface ILinkedList_2 {//头插法void addFirst(int data);//尾插法void addLast(int data);//任意位置插入,第一个数据节点为0号下标void addIndex(int index,int data);//查找…

Python框架下的qt设计之JSON格式化转换小程序

JSON转换小程序 代码展示: 主程序代码: from PyQt6.QtWidgets import (QApplication, QDialog, QMessageBox )import sys import jsonclass MyJsonFormatter(jsonui.Ui_jsonFormatter,QDialog): # jsonui是我qt界面py文件名def __init__(self):super()…

在Arduino IDE中使用文件夹组织源文件和头文件

在Arduino IDE中使用文件夹组织源文件和头文件 如果你是一名Arduino爱好者,你可能会发现随着项目的复杂度增加,代码的管理变得越来越困难。在Arduino IDE中,你可以通过使用文件夹来更好地组织你的源文件和头文件,使得代码更加清晰…

【PyTorch][chapter 25][李宏毅深度学习][ CycleGAN]【实战】

前言: 论文中直接提供了GitHub 的代码下载地址 GitHub - junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch 这里面简单的解读一下. 目录: 1. 模型参数配置 2: 生成器模型 3: 鉴别器模型 4&#…

[计算机效率] 文本编辑工具:Notepad++

3.12 文本编辑工具:Notepad Notepad是一款免费的文本编辑器,适用于Windows操作系统。它具有轻量级、高效、可定制性强等特点,并且支持多种语言。以下是关于Notepad的详细介绍: 功能特点: 多语言支持:Note…

Flutter 开发学习笔记(4):widget布局容器学习

文章目录 前言相关链接Widget 有状态和无状态Flutter 代码风格去掉烦人的括号后缀提示代码缩进 Flutter 布局最简单的布局widgets和Material widgets Dark语法习惯Flutter 布局默认布局Center居中Padding 填充Align对齐默认居中顶部底部右上角 通用 WidgetContainer处于性能原因…

Matlab|计及需求侧响应日前—日内两阶段鲁棒备用优化

目录 1 主要内容 日前计划模型 日内调整模型 不确定集建模 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《计及需求侧响应日前—日内两阶段鲁棒备用优化》,以6节点系统为例,综合考虑风电出力不确定性与电力设备 N-k强迫停运&…