Jenkins实现CICD

Jenkins实现CICD

  • JenkinsCI简介
    • 环境安装
    • 新建任务
    • 源码管理
    • 构建配置
    • 发送邮件
    • 配置自动化项目
    • 定时构建
  • JenkinsCD简介
    • 配置ssh保证其可以免登录
    • 接下来配置github的webhook
    • 正式实现自动化打包master主分支的代码
    • 将前端三剑客代码文件发送到网站服务器对应的tomcat
  • Jenkins面试题

JenkinsCI简介

环境安装

使用 Jenkins 实现自动化集成部署,首先要准备三台服务器。

  • Git 服务器
  • 业务服务器
  • Jenkins 服务器

新建任务

在 Jenkins 管理页面,新建Item,也就是新建构建任务。
在这里插入图片描述
填写任务名称:
在这里插入图片描述

源码管理

在这里插入图片描述
分支配置:
在这里插入图片描述

构建配置

在这里插入图片描述

在配置windows批处理命令的时候,我们首先打开cmd,看看如何利用cmd启动我们的自动化项目:在cmd中输入以下命令:【因为jenkins执行代码步骤是和cmd一模一样的】
在这里插入图片描述

发送邮件

在这里插入图片描述
紧接着配置一下Jenkins的地址和系统管理员的邮箱地址
在这里插入图片描述
鼠标往下拉继续配置【邮件通知插件】的细节
在这里插入图片描述
之后在邮箱里面打开smtp的服务
在这里插入图片描述
上面可以申请授权码,获取授权码并填写在邮件插件的配置项里
在这里插入图片描述
填写好之后可以在最下面测试一下
在这里插入图片描述

配置自动化项目

找到我们的自动化项目任务
在这里插入图片描述
点击配置然后拉到最下面
在这里插入图片描述
填写你要发送邮件给谁【企业里面一般是企业微信邮箱,或者飞书邮箱】
在这里插入图片描述

定时构建

在这里插入图片描述
在这里输入脚本,修改时区
在这里插入图片描述
复制上面的修改时区的脚本指令:将时间改成上海
System.setProperty(‘org.apache.commons.jelly.tags.fmt.timeZone’,‘Asia/Shanghai’)
在这里插入图片描述
运行之后看结果是正确的,如果代码有误,result这一栏不会有任何打印
然后找到项目点击配置,并设置每隔两分钟跑一次构建
在这里插入图片描述

在Jenkins中设置定时项目的格式通常使用Cron表达式。Cron表达式是一种用于指定定时任务执行时间的格式,它由五个或六个空格分隔的时间字段组成,分别表示分钟、小时、日、月、周几以及可选的年份。

* * * * *
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天为0或7)
| | | +------- 月 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

在这里插入图片描述

JenkinsCD简介

配置ssh保证其可以免登录

title 随意写, key 栏输入刚复制的公钥,可以用cat 命令来查看公钥,配置ssh的目的是实现自动登录git仓库而不用输入密码用户名。

在这里插入图片描述

接下来配置github的webhook

在这里插入图片描述

正式实现自动化打包master主分支的代码

首页 -> 系统管理 -> 插件管理 -> 可选插件 -> 选中 NodeJS 以及 Publish Over SSH -> 安装 -> 等待安装完成 (下载一下插件)
NodeJS: 代码运行环境
Publish Over SSH: 打包完成后发送到服务器

在这里插入图片描述
下面到拉取代码打包了,以前端代码为例:后端代码配置一样的,只是用的环境插件不一样而已。
首先配置全局 NodeJS 插件:
首页 -> 系统管理 -> 全局工具配置 -> NodeJS -> 新增
在这里插入图片描述
构建项目中新增 NodeJS 构建环境:
项目配置 -> 构建环境 -> 选择刚刚配置的 node 环境 -> 构建 -> 执行 shell -> 安装依赖 -> 打包 -> 压缩
echo “hello world”
npm install
npm run build
cd dist
tar zcvf dist.tar.gz ./*

在这里插入图片描述

将前端三剑客代码文件发送到网站服务器对应的tomcat

在这里插入图片描述
在这里插入图片描述

Jenkins面试题

  • 1、你用过jenkins吗,你知道jenkins是如何实现CI的吗?

1.安装和配置 Jenkins: 首先,在服务器上安装和配置 Jenkins。
2.创建 Jenkins 项目: 在 Jenkins 控制台中创建一个新项目(也称为作业或任务)。
3.设置源代码管理: 在项目配置中,配置您的版本控制系统(如 Git、SVN 等),
4.设置构建触发器: 在项目配置中,选择构建触发器为“定时构建(Build periodically)”,然后设置定时执行的 Cron 表达式。
5.配置构建步骤: 在项目配置中,添加构建步骤,以执行您的自动化代码和测试脚本。这可以是 Shell 脚本
6.设置邮件通知: 在项目配置中,添加邮件通知,配置 Jenkins 在构建完成后向团队成员发送构建状态更新和测试报告。
7.保存并触发构建: 完成项目配置后,保存配置并手动触发一次构建,以确保所有设置都正常工作。

  • 2、你是如何通过一系列配置来实现这些功能的呢?

首先,我在jenkins上用windows批处理输入能够运行代码的指令,这样就实现了手动执行自动化代码
然后,配置邮箱,发送邮件,这里用到了e-mail notification插件去发送邮件
最后,配置定时执行的时间,比如每天晚上九点执行自动化代码

  • 3、功能的Jenkins是你搭建的吗还是本来就有的?

如果公司是小公司就说自己搭建的
如果是中大型公司就说本来就有,我自己看过搭建文档的,我知道搭建流程

  • 4、为什么可以用windows批处理输入命令就可以运行代码了?

因为这里的执行和cmd里面执行是一样的,所以能运行代码

  • 5、配置邮箱过程中要配置密码,这个密码是邮箱密码吗?

不是的,是邮箱授权码

  • 6、jenkins你们是放到哪个服务器上?

公司的项目是放到linux上的,Jenkins是放到windows上的。

-7、 jenkins实现cd你了解多少?

1、配置仓库和分支,能够实现拉去master分支的代码到本地
2、配置webhook来通知jenkins,仓库里面的代码发生变化,需要重新拉去构建代码
3、打包我们拉取的master主分支代码,编译成为前端三剑客产物,以及后端jar包
4、通过publish over ssh的插件把前端三剑客产物推送到tomcat服务器下,并对外访问

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

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

相关文章

JSON数据的类型

JSON 代表 JavaScript Object Notation。JSON是开放的标准格式,由key-value对组成。JSON的主要用于在服务器与web应用之间传输数据。 PostgreSQL提供了两种存储JSON数据的类型:json和jsonb; jsonb是json的二进制形式。 json格式写入快&#x…

书生浦语训练营2期-第一节课笔记

笔记总结: 了解大模型的发展方向、本质、以及新一代数据清洗过滤技术、从模型到应用的典型流程、获取数据集的网站、不同微调方式的使用场景和训练数据是什么,以及预训练和微调在训练优势、通信/计算调度、显存管理上的区别。 收获: 理清了预训练和微调…

T1 藻类植物 (15分)- 京东前端岗笔试编程题 题解

考试平台: 牛客网 题目类型: 选择题(40分) 3道编程题(60分) 考试时间: 2024-03-23 (两小时) T1 藻类植物 (15分) 题目描述 我们用 x i x_i xi…

霸榜京东数据库图书热卖榜!《图数据库:理论与实践》热销中

《图数据库:理论与实践》自2月上市以来,受到了数据库行业的广泛关注与热烈支持,问世两周便销量破千本!近期还荣登京东 “数据库图书榜”热卖榜第二名,广获好评! 在此,真挚的感谢各位读者的认可…

CMS(内容管理系统)

一、系统的编写可以在开源网站上下载一个相关项目,然后做2次开发 企业建站系统:MetInfo(米拓)、蝉知、SiteServer CMs等; B2C商城系统:商派Shopex、ECshop、HiShop、XpShop等; 门户建站系统:DedeCMS(织梦)、帝国CMS、PHPCMS、动易、CmsTop等; 博客系统:WordPres…

Android 开发 Spinner setSelection 不起作用

问题 Android 开发 Spinner setSelection 不起作用 详细问题 笔者进行Android项目开发,根据上一个页面用户选择数据,显示当前页面Spinner选项,调用 Spinner setSelection 不起作用。 相关java代码 spinner.setAdapter(adapter); …

使用kfed运维兵器修复ASM磁盘和磁盘组

欢迎关注“数据库运维之道”公众号,一起学习数据库技术! 本期将为大家分享“使用kfed运维兵器修复ASM磁盘和磁盘组” 的运维技能。 关键词:ORA-15053、ORA-15027、ORA-15040、ORA-01187、kfed repair、kfed merge、kfed read、strace 数据库的ASM磁盘或…

代码随想录训练营Day36:● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

435. 无重叠区间 题目链接 https://leetcode.cn/problems/non-overlapping-intervals/description/ 题目描述 思路 直接统计重叠区间的个数,就是需要删除的个数 public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals,(a,b)-> Intege…

SpringBoot分布式锁自定义注解处理幂等性

SpringBoot分布式锁自定义注解处理幂等性 注解简介 注解(Annotation)是Java SE 5.0 版本开始引入的概念,它是对 Java 源代码的说明,是一种元数据(描述数据的数据)。 Java中的注解主要分为以下三类: JDK…

01_安装VMwareWorkstation虚拟机

环境:Win10 19045 软件版本:VMware-workstation-17.5.1 一、下载链接 Download VMware Workstation Pro 二、安装(无脑下一步) 安装位置自选,最好非系统盘。 增强型键盘驱动自选。 更新自选。 快捷方式自选。 三、…

MySQL学习笔记------DCL

DCL Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限 一、管理用户 1、查询用户 USE mysql; select *from user; 2、创建用户 create user 用户名主机名 identified by 密码&a…

flume配置文件后不能跟注释!!

先总结:Flume配置文件后面,不能跟注释,可以单起一行写注释 报错代码: [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…

计算机基础系列 —— 虚拟机代码翻译器(1)

“Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” ―Linus Torvalds 文中提到的所有实现都可以参考:nand2tetris_sol,但是最好还是自己学习课程实现一…

小程序中使用less

在vscode中安装插件 找到左下角齿轮的设置,点击右边图标,进入“settings.json” 加上以下代码配置 "less.compile":{"outExt": ".wxss"}

Charles抓包配置代理手机连接

Charles下载地址: Charles_100519.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供Charles_100519.zip最新版正式版官方版绿色版下载,Charles_100519.zip安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装https://www.123pan.com…

js用鼠标控制图片旋转任意角度-luckySheet

需求描述 最近有用户在使用luckySheet时,希望能够任意角度旋转图片,就像wps那样,wps如下图 wps的图片旋转 在网上只找到在canvas中进行旋转的库,没找到直接操作图片dom的库,决定直接写。 实现思路 1、点击时记录图片坐…

nginx详解(持续更新)

nginx定义 nginx安装 nginx目录 程序相关命令 服务相关命令 虚拟主机(server) 路由匹配(location) 代理(proxy_pass) 正向代理 反向代理 负载均衡(upstream) 负载均衡策略 动静分…

数据分析之POWER Piovt的KPI设置

内容总结: 1.两个表格关联不上:需要添加辅助列,建立关联 2.添加辅助列后还关联不上:将虚线变为实线 3.根据需求要增加一些度量值 4.设置KPI后,绝对值选1后设定百分比 5.在透视表里面加入KPI状态 导入所关联的数据后建立…

关于Linux中的history命令

前言:本文内容为实操学习记录,不具有调研价值,仅供参考! 正文: 接触过Linux操作系统的朋友一般都知道history命令,直接输入history命令,会显示当前用户的历史输入记录。这个原理是linux会记录我…

python--os和os.path模块

>>> import os >>> #curdir #获取当前脚本的绝对路径 >>> os.curdir . >>> import os.path >>> #获取绝对路径 >>> os.path.abspath(os.curdir) C:\\Users\\GUOGUO>>> #chdir #修改当前目录 >&g…