DevOps与CI/CD简介

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.hqwc.cn/news/587497.html

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

相关文章

Java基础知识总结(第八篇):集合:Collection(List、Set)、Map、Collections 工具类

声明: 1. 本文根据韩顺平老师教学视频自行整理,以便记忆 2. 若有错误不当之处, 请指出 系列文章目录 Java基础知识总结(第一篇):基础语法 Java基础知识总结(第二篇)&#x…

云智慧发布对象关系型数据库CloudPanguDB,打破传统技术壁垒

近日,云智慧推出关系型数据库CloudPanguDB(中文名称:盘古数据库),旨在通过高兼容性能和创新技术架构,降低企业项目整体运营成本。 无论是处理海量复杂数据,还是构建清晰有序的数据结构关系&…

普通Java工程可执行JAR两种打包方式探讨

文章目录 一、需求概述二、代码结构三、运行结果四、打包设置1. 一体化可执行包2. 带外部依赖lib的可执行包 五、打包运行1. 源码放送2. 打包执行3. 打包结果 一、需求概述 普通Java工程 docker-show 实现了定时打印docker应用信息,现在需要将其打包成可执行Jar部署…

A New Image Contrast Enhancement Algorithmusing Exposure Fusion Framework

Abstract 弱光图像由于能见度低,不利于人类观察和计算机视觉算法。为了解决这一问题,人们提出了许多图像增强技术,但现有的方法不可避免地会出现对比度增强不足和过度增强的问题。在本文中,我们提出了一种图像对比度增强算法来提…

Windows下编译TinyXML(XML文件解析)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 TinyXML是什么? TinyXML是一个轻量级的C XML解析器,它提供了一种简单的方法来解析和操作XML文档。TinyXM…

使用tcpdump和wireshark进行服务器抓包分析

目录 前言 1.tcpdump简介 2.Wireshark简介 3.实际案例 4.代码示例 5.总结 前言 服务器抓包分析是一种非常常见和有效的网络故障排查和性能优化手段。通过捕获服务器上的网络流量,可以帮助我们深入了解服务器与其它设备之间的通信情况,发现问题并进…

应用方案 | 内置ALC的音频前置放大器D2538A和D3308芯片

一、应用领域 D2538A和D3308是芯谷科技推出的两款内置ALC(音频限幅器)的前置音频放大器芯片,其中D2538A为单通道,D3308为双通道,它特别适用于胎心仪、个人医疗防护、立体声收录机、盒式录音机等涉及音频放大与限幅的产…

微软云学习环境

微软公有云 - Microsoft Azure 本文介绍通过微软学习中心Microsoft Learn来免费试用Azure上的服务,也不需要绑定信用卡。不过每天只有几个小时的时间。 官网 https://docs.microsoft.com/zh-cn/learn/ 实践 比如创建虚拟机,看到自己的账号下多了Learn的…

【代码】C语言|保留小数点后n位并四舍五入,便于处理运算和存储不善的浮点数

前言 有个人跟我说浮点数运算起来非常麻烦,总是算着算着丢失精度,导致计算结果取int的时候取不准。毕竟系统也没有自动根据这个数的精度四舍五入的功能。 比如int(2.999999999999999)2,但是float(2.999999999999999)3.000000。 我觉得这个问…

2024最新软件测试【测试理论+ 抓包与网络协议】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

升级一下电脑,CPU换I5-14600K,主板换华硕B760M

刚给自己电脑升级了一下,CPU从 AMD R5 5600X 换成 Intel I5-14600K,主板换成了华硕的 TUF GAMING B760M-PLUS WIFI D4。 因为我现有的两根内存是DDR4的,所有我选了个支持DDR4内存的主板。 我发现用AMD处理器时将系统从Win10升级到Win11后变…

【论文阅读】Transformer 论文逐段精读

Transformer 论文逐段精读【论文精读】 文章目录 Transformer 论文逐段精读【论文精读】📝摘要📜结论📌引言⏱️相关工作⭐模型Overview3.1 Encoder and Decoder Stacks3.2 Attention3.2.1 Scaled Dot-Product Attention3.3.2 Multi-head att…