Jenkins实现CICD

Jenkins实现CICD

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表达式是一种用于指定定时任务执行时间的格式,它由五个或六个空格分隔的时间字段组成,分别表示分钟、小时、日、月、周几以及可选的年份。

css 复制代码
* * * * *
- - - - -
| | | | |
| | | | +----- 星期几 (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服务器下,并对外访问

相关推荐
郝亚军1 小时前
在Ubuntu 2.04上如何按照x86_64架构编译libmodbus库
linux·运维·ubuntu
Tim风声(网络工程师)7 小时前
排查内网互联网访问流程
运维·服务器·网络
坚持就完事了8 小时前
Linux中如何添加环境变量
linux·运维·服务器
AC赳赳老秦9 小时前
政企内网落地:OpenClaw 离线环境深度适配方案,无外网场景下本地化模型对接与全功能使用
java·大数据·运维·python·自动化·deepseek·openclaw
l1t9 小时前
mingw和Linux中的gcc和llvm编译器编译的pocketpy执行同一个python脚本的不同效果
linux·运维·python
ITyunwei09879 小时前
团队管理与人才发展:如何打造一支“召之即来,来之能战”的铁军?
大数据·运维·人工智能
白緢10 小时前
一、Linux 基础入门
linux·运维·服务器
Deepoch10 小时前
面向工业现场自主运维:Deepoc 具身模型开发板的端侧智能升级路径
运维·人工智能·科技·巡检机器人·deepoc
菜菜艾10 小时前
自动化环境补丁更新系统
linux·运维·bash·运维开发
江上清风山间明月10 小时前
Nginx基于域名区分的多网站部署
运维·nginx·部署·php·多个网站