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服务器下,并对外访问

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

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

相关文章

(分享)一个图片添加水印的小demo的页面,可自定义样式

有时候想给某张图片添加一个自己的水印,但是又懒的下载相应软件,用js canvas制作一个静态页面,对于单张图片添加自定义文字水印,大小 间距,角度可调。 页面如下: 选择图片,设置相应参数&#x…

KVM:尝试安装windows2008

最终目的是在lxd部署windows2008镜像 WindowsServer2008镜像: cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso 镜像参考链接: https://discussion.scottibyte.com/t/migrate-a-hyper-v-windows-vir…

44 el-dialog 的 appendToBody 属性, 导致 vue 响应式失效

前言 我们经常会碰到 一些 模型和视图 不同步的问题 通常意义上 主要的问题为 列表的某响应式数据更新着更新着 后面就变成非响应式对象了, 然后 就造成了 数据一直在更新, 但是 视图的渲染后面就未渲染了, 这是一个由于 模型上的问题 导致的数据的不在响应式更新 又或者 是…

.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案

目录(结尾附加项目代码资源地址) 引言: 1. SAGA事务模式 2. 拆分为子事务 3. 失败回滚 4. 如何做补偿 4.1 失败的分支是否需要补偿 5. 异常 6. 异常与子事务屏障 6.1 NPC的挑战 6.2 现有方案的问题 6.3 子事务屏障 6.4 原理 7. 更多高级场景 7.1 部分…

MySQL Explain 字段详解

Explain 工具介绍 Explain 一般被称为解释器,通过 Explain 工具,我们能分析我们使用的查询语句或是结构的性能瓶颈,它提供 MySQL 如何执行语句的信息。 使用语法: explain [extended|partition] select在 select 关键字前加 ex…

【大数据】Flink学习笔记

文章目录 认识FlinkDocker安装Flink基本概念Flink的特点Flink 和 Spark Streaming 对比 基本使用WordCount实现依赖 批模式代码流模式代码网络流模式代码在web UI上提交代码创建项目[^1]编写代码配置打包在Web UI上提交 Flink 架构系统架构核心概念并行度算子链(Opeartor Chain…

基于java+springboot+vue实现的电商个性化推荐系统(文末源码+Lw+ppt)23-389

摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对电商个性化推荐进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套电商个性化推荐系统,帮…

bert 适合 embedding 的模型

目录 背景 embedding 求最相似的 topk 结果查看 背景 想要求两个文本的相似度,就单纯相似度,不要语义相似度,直接使用 bert 先 embedding 然后找出相似的文本,效果都不太好,试过 bert-base-chinese,be…

pdf在浏览器上无法正常加载的问题

一、背景 觉得很有意思给大家分享一下。事情是这样的,开发给我反馈说,线上环境接口请求展示pdf异常,此时碰巧我前不久正好在ingress前加了一层nginx,恰逢此时内心五谷杂陈,思路第一时间便放在了改动项。捣鼓了好久无果…

vue中使用图片url直接下载图片

vue中使用图片url直接下载图片 // 下载图片downloadByBlob(url, name) {let image new Image()image.setAttribute(crossOrigin, anonymous)image.src urlimage.onload () > {let canvas document.createElement(canvas)canvas.width image.widthcanvas.height image…

Ubuntu20.04下PCL安装,查看,卸载等操作

Ubuntu20.04下PCL安装,查看,卸载等操作 项目来源 https://github.com/PointCloudLibrary/pclhttps://pointclouds.org/documentation/modules.htmlhttps://pcl.readthedocs.io/projects/tutorials/en/master/ 点云学习: https://github.c…

【Spring】SpringMvc项目当中,页面删除最后一条数据,页面不跳转并且数据为空。

期待您的关注 在之前学习SpringMvc的时候遇到过这样一个BUG,当我在一个页面删除该页面的最后一条数据的时候,一旦我删除成功,那么这个页面不会进行跳转,而是还停留在这个本不应该存在的页面,而且数据什么都没有。如下…

零基础教程:R语言lavaan结构方程模型(SEM)

查看原文>>>最新基于R语言lavaan结构方程模型(SEM)实践技术应用 基于R语言lavaan程序包,通过理论讲解和实际操作相结合的方式,由浅入深地系统介绍结构方程模型的建立、拟合、评估、筛选和结果展示的全过程。我们筛选大量…

ChatGPT与Discord的完美结合——团队协作的得力助手

本文将教你如何集成Discord Bot,助力团队在工作中实现更高效的沟通与协作。通过充分发挥ChatGPT的潜力,进一步提升工作效率和团队协作能力。无需编写任何代码即可完成本文所述的操作,进行个性化定制只需对参数进行微调即可。 方案介绍 如果在…

【JavaWeb】Day27.Web入门——Tomcat介绍

目录 WEB服务器-Tomcat 一.服务器概述 二.Web服务器 三.Tomcat- 基本使用 1.下载 2.安装与卸载 3.启动与关闭 4.常见问题 四.Tomcat- 入门程序 WEB服务器-Tomcat 一.服务器概述 服务器硬件:指的也是计算机,只不过服务器要比我们日常使用的计算…

AI绘画核心技术与实战【课程推荐】

AI结合绘画领域属于是《黑客与画家》的结合了,推荐大家来一起学习

Linux:程序地址空间详解

目录 一、堆、栈、环境参数所在位置 二、进程地址空间底层实现原理 ​编辑 三、什么是地址空间 四、为什么要有进程地址空间 五、细谈写实拷贝的实现及意义 在C/C学习中,都学习过如上图所示的一套存储结构,我们大致知道一般存储空间分为堆区&#…

代码随想录算法训练营三刷 day38 | 动态规划之 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

三刷day38 509. 斐波那契数1 确定dp数组以及下标的含义2 确定递推公式3 dp数组如何初始化4 确定遍历顺序5 举例推导dp数组 70. 爬楼梯1 确定dp数组以及下标的含义2 确定递推公式3 dp数组如何初始化4 确定遍历顺序5 举例推导dp数组 746. 使用最小花费爬楼梯1 确定dp数组以及下标…

[C++初阶] 爱上C++ : 与C++的第一次约会

🔥个人主页:guoguoqiang 🔥专栏:我与C的爱恋 本篇内容带大家浅浅的了解一下C中的命名空间。 在c中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称…

C++进阶,手把手带你学继承

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在闪烁 【本节目标】 1.继…