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