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

相关推荐
摸鱼也很难43 分钟前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
woshilys1 小时前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛2 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程3 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo4 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
好像是个likun4 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
cominglately7 小时前
centos单机部署seata
linux·运维·centos
coder_pig7 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
CircleMouse7 小时前
Centos7, 使用yum工具,出现 Could not resolve host: mirrorlist.centos.org
linux·运维·服务器·centos
Karoku0667 小时前
【k8s集群应用】kubeadm1.20高可用部署(3master)
运维·docker·云原生·容器·kubernetes