Jenkins初探

news/2024/10/20 5:38:06

CICD

CI/CD是持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)

CICD是一种软件开发实践,通过自动化的流程来提高软件开发的效率、质量和交付速度。

  • 持续集成(CI)指的是频繁地将代码变更集成到主分支,并且每次集成都会自动运行构建和测试,以确保代码的一致性和稳定性。

  • 持续交付(CD)则是在CI的基础上,确保软件可以随时部署到生产环境中,而持续部署(CD)则是自动化地将软件部署到生产环境。

CICD Server 类型

  • Hudson -->Jenkins

一个开源的自动化服务器,可以用于自动化各种任务,包括构建、测试和部署软件。Jenkins 以其强大的插件生态系统和灵活性而闻名,支持多种操作系统和环境。

  • GitLab CICD

作为GitLab的一部分免费提供,可以自动化构建、测试和部署过程,支持并行作业和多个运行器。

  • Tekton

一个开源的CD基金会项目,可以在Kubernetes上运行,提供与Knative构建器和Prow集成的CI/CD系统。

Maven

一款专用于Java语言项目的主流的管理和构建工具,它为开发者提供了一套完整的构建生命周期框架,开发团队稍微投入一些时间就能够自动完成工程的基础构建配置。

在有多个开发团队环境的情况下,Maven 能够在很短的时间内使得每项工作都按照标准进行,这主要是因为大部分的工程配置操作都非常简单并且可复用。

Maven基于项目对象模型(POM project obiect model),它可以通过一小段描述信息(配置)来管理项目的构建。

1、pom.xml文件目录结构

Maven项目描述信息保存在一个名为pom.xml的文件中,项目的通用目录结构通常包括如下几个:

src/main/

  • java:项目的源代码所在的目录
  • resources:项目的资源文件所在的目录
  • filters:项目的过滤器文件所在的目录

src/test/

  • java:测试代码所在的目录
  • resources:测试相关的资源文件目录
  • filters:测试相关的过滤器文件目录

2、Maven工程构建的常用阶段

  • validate:验证项目是否正确且所有必须信息是可用的clean:将以前编译得到的旧文件class字节码文件删除
  • compile:将iava源程序编译成class字节码文件;
  • test:自动测试,例如,自动调用JUnit程序;
  • report:报告测试程序执行的结果;
  • package:应用打包,动态Web工程打成war包,java工程打成jar包;
  • install:Maven特定的概念,是指将打包得到的文件复制到“仓库”中的指定位置;
  • deploy:将动态Web工程生成的war包复制到Servlet容器下,使其可以运行;

3、Maven构建的基本工作流程

  • 读取pom.xml文件
  • 从repository中下载pom.xml文件定义的依赖项
  • 根据需求构建项目、生成报告,并处理生命周期、阶段、目标、插件和其他任务

Jenkins

Jenkins是一款开源的CICD Server程序,常用于自动化各种CI、CD任务,包括构建、测试和部署等。

  • 支持强大的扩展能力,其功能主要通过插件(Plugin)进行扩展

  • Jenkins社区提供了非常多的插件

  • Jenkins 2用于泛指支持流水线即代码及其他类似Jenkinsfile等新特性的新版Jenkins,DSL是Jenkins 2的核心组件,作为构建模块让其他核心的用户导向特性成为可能

1、如何使用Jenkins创建CICD任务

  • 一个典型的CICD操作过程可以抽象为Pipeline形式,这种类型的Pipeline一般由构建、测试和打包等几个典型阶段组成。
Jenkins每个阶段的具体操作过程都可能需要特定工具程序的参与;maven工程项目多半要依赖maven和idk环境,而node,is项目则要用到npm工具等,这些工具需要事先经由“系统管理 → 全局工具配置”进行配置,或者于Jenkins Host上部署上相关的应用程序;为便于用户定义CICD的具体步骤,Jenkins为特地提供了不同类型的]ob,例如自由风格的作业、Pipeline作业Maven工程作业、多配置项目、多分支流水线等;
  • 一个典型的CICD过程拥有输入和输出
从某个代码仓库中“克隆”代码作为输入,并将生成的结果打包成特定的格式(例如jar、exe、elf或image等)进行输出,甚至还要推送到目标工件库中(例如DockerHub)以便干存储和分发;若需要事先完成认证才能访问代码仓库服务及工件库服务时,jenkins支持将这些认证凭据以安全方式事先定义,并在Pipeline自动化执行时自动引用;

2、Jenkins版本

  • Jenkins 1.x:图形界面配置定义Pipeline,Freestyle pipeline(自由风格流水线)

  • Jenkins 2.x:纯文本定义,Jenkinsfile,Pipeline(文本定义)

3、Jenkins 2 系统组件

在Jenkins 2中,节点是一个基础概念,代表了任何可以执行Jenkins任务的系统,节点中包含主节点(master)和代理节点(agent)两种类型,但主节点一般用于完成任务分配等管理功能,而代理节点才会执行各类具体的任务。

  • 主节点:Jenkins的一个部署实例的核心控制系统,它能够完全访问所有jenkins配置的选项和任务(job)列表,而且,若不存在其他代理节点,主节点也是默认的任务执行节点;

  • 代理节点:在早先版本的jenkins中,代理节点被称为从节点(save),它代表着所有的非主节点;

  • 执行器(Executor):简单来说,Executor只是节点或代理节点用于执行任务的一个槽位;Executor的数量定义了该节点可以执行的并发任务量,一个节点上可以有任务数量的槽位,但也允许管理员按节点资源定义合适的数量。在主节点将任务分配给特定节点时,该节点上必须有可用的Executor来立即执行该任务,否则,只能等到有空闲槽位可用。

Jenkins配置

1、配置中文界面
Jenkins默认安装完成是英文界面,可以重启服务自动检测匹配到中文界面。

  • 通过API 重启服务:http://192.67.0.43:31150/restart

  • 点击重启

  • 重启完成后切换成中文界面

2、构建一个自由风格的软件项目

  • 安装插件

Deploy to container:


  • 新建项目

  • 点击构建一个自由风格的软件项目,确定

  • 添加git地址,分支

  • 添加构建步聚,脚本模式

  • 填写脚本,保存

mvn -B -DSkipTests clean package 
echo "Testing..."
mvn test
  • 点击构建,查看控制台输出

  • 构建完成后会生成一个jar包
root@jenkins-6f64cc9648-79rnb:/home# cd /var/jenkins_home/workspace/
root@jenkins-6f64cc9648-79rnb:/var/jenkins_home/workspace# ls
spring-boot-helloWorld
root@jenkins-6f64cc9648-79rnb:/var/jenkins_home/workspace# cd spring-boot-helloWorld/
root@jenkins-6f64cc9648-79rnb:/var/jenkins_home/workspace/spring-boot-helloWorld# ls
Dockerfile  Jenkinsfile  LICENSE  README.md  deploy  maven  pom.xml  rollouts  src  target
root@jenkins-6f64cc9648-79rnb:/var/jenkins_home/workspace/spring-boot-helloWorld# ls target/
classes                 maven-archiver                             spring-boot-helloworld-0.9.6-SNAPSHOT.jar.original
generated-sources       maven-status                               surefire-reports
generated-test-sources  spring-boot-helloworld-0.9.6-SNAPSHOT.jar  test-classes

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

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

相关文章

2024.09.30

单独说一下Mybatis-plus 上一篇中介绍了Mybatis的使用方法,对于Mybatisplus,我理解就是把一些方法提前封装好了,不需要自己定义接口类中的内容 只需要直接调用即可 ,把接口类添加继承关系 这里要说的是 BaseMapper后面的<User>是要搜索的类的名词,且最好类的名字和表…

2024.09.20

今天主要继续学习了springboot的相关内容,在昨天实现了基础的登录功能后,今天对增删改查有了更深刻的认识 特别是通过连接hive,对于网页的getmapper和postmapper有了更深刻的认识,实现了基础的增删改查并且优化了 页面 repository包,其中建立了类,这个类就是用于继承JpaR…

Leetcode 802. 找到最终的安全状态

1.题目基本信息 1.1.题目描述 有一个有 n 个节点的有向图,节点按 0 到 n – 1 编号。图由一个 索引从 0 开始 的 2D 整数数组 graph表示, graph[i]是与节点 i 相邻的节点的整数数组,这意味着从节点 i 到 graph[i]中的每个节点都有一条边。 如果一个节点没有连出的有向边,则…

第35篇 C#文件夹加锁小工具

要想保护自己的文件夹内的信息不被别人看到,可以给文件加个锁【注意:加锁用的密码一定要记住】 用C#语言实现一个文件夹锁的程序,程序的基本原理是:用C#语言重命名文件夹,通过重命名使之成为windows安全文件的类标识符。具体的方法是为文件夹添加拓展名“.{2559a1f2-21d7-…

金属矿山电子封条系统

金属矿山电子封条系统的主要特点和作用如下:金属矿山电子封条系统通过电子封条的安装位置和追踪技术,金属矿山电子封条系统可以对煤矿进行实时监控,确保安全事件的及时发现和处理。金属矿山电子封条系统识别到运输设备启动运行 或者识别到运输设备运行工作状态下有煤、无煤转…

工业机器人维修保养|ABB机器人IRB 6700维修保养技巧

通过机器人维修保养服务定制合理的维修保养工作,可以确保ABB机器人IRB 6700的持续稳定运行,延长其使用寿命,为企业的生产提供有力保障。 一、ABB机器人IRB 6700日常检查与维护 外观检查:每日工作前后,应检查ABB机器人IRB 6700外观是否有明显的损伤、腐蚀或油漆剥落。特别注…

C++ 易踩坑总结以及小技巧

1. for循环中在栈上创建的对象可能具有相同的地址,进行指针操作时需注意;所以循环中最好使用new来创建指针并操作地址; for (int x : arr) {ClassName obj(); \\ it is like to have the same address in every loopClassName obj2 = new ClassName();std::cout<<&…

【转载】 蚂蚁集团骆骥谈如何打造下一代智能数据体系

【转载】 蚂蚁集团骆骥谈如何打造下一代智能数据体系 本文整理自2024外滩大会“Data+AI”见解论坛骆骥(蚂蚁集团数据平台与服务部负责人)的演讲实录在过去这两年时间,生成式人工智能在科技领域取得了重大的突破,海量的数据和庞大的算力相碰撞,推动了无数科技产品的创新。在…