Windows环境下,Jenkins+Gitee的CICD

Jenkins+Gitee的CICD

版本需求:

JDK:8或以上

Jenkins:2.492

1.Jenkins下载安装

https://www.jenkins.io/download/下载LTS的war包:

把下载好后的war包放到指定目录,并使用命令启动:

shell 复制代码
java -jar jenkins.war

使用浏览器打开localhost:8080用上面的密码进行登录:

点击"安装推荐的插件",然后等待安装:

输入用户信息,创建管理员账号:

配置实例:

点击"开始使用jenkins"。

2.配置Gitee和Item

2.1.下载插件

1.点击"Manager Jenkins",再点击"Plugins":

2.选择"Available Plugins",搜索并勾选,gitee、Maven Integration ,点击安装

等待安装完成:

3.安装完成后,重启jenkins,使用管理员账号登录。

2.2.配置环境

1.点击"Manager Jenkins",找到"Tools",在JDK中输入本地JDK的路径:

2.配置Git路径:

3.配置Maven路径:

4.点击保存。

2.3.配置Gitee令牌(可选)

1.点击"Manager Jenkins",找到"System":

2.在gitee下面新增,将远程仓库地址复制过来:

3.在jenkins中点击添加,选择"jenkins",创建令牌。将类型设置为Gitee API令牌,将在Gitee中创建的令牌复制过来:

设置好后点击"添加",再"save"保存。

2.4.配置Item

1.保存后回到首页,点击"新建item",输入任务名crud_demo,选择free style project,"确定"。新建item输入任务名称"crud_demo",一个自由风格的项目。

2.源码管理中,选择"git",并输入远程仓库地址:

3.点击下面的添加"jenkins",输入gitee网址的登录邮箱,作为用户名,输入gitee的密码,点击"添加":

4.在credential下拉框中选择刚才添加的账号,在Triggers中,勾选"Poll SCM",并输入日程表:

1、* * * * * # 每分钟自动执行

2、5个时间单位,分别代表分钟、小时、日期、月份、星期

4月2日15点半自动执行 ,例:30 15 2 4 *

3、6个特殊符号

  • 表示所有可能的取值

空格 用于时间单位的分割,有且只能又4个空格

  • 表示区间。周一到周五每天晚上6点执行:0 18 * * 1-5

, 表示枚举

/ 表示每隔多久执行一次。每隔10分钟执行一次:*/10 * * * *

H 用于分散服务器的负载

有时我们不需要一定在整点执行,如果我们希望在区间中任意时间点执行都可以的话

H可以帮我我们找一个最佳的时间点,分散服务器的压力。

每天晚上6点执行

0 6 * * *

这样一定在6点整执行,这时可能会和另一个jenkins任务冲突

H 6 * * *

这样会自动选择在6点到7点之间的一个比较空闲的时间执行

可能在6:01,也可能在6:59

5.在"Build"中输入maven的构建命令:

maven 复制代码
clean package -Dmaven.test.skip=true

6.在"Post Steps"中勾选"Run only if build succeeds"

7.在构建中,选择增加构建步骤,选择"execute windows batch commands"

8.输入运行环境的命令:

text 复制代码
set BUILD_ID=DONTKILLME

set port=8888
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f

xcopy C:\Users\HP\.jenkins\workspace\test01\target\crud_demo-0.0.1-SNAPSHOT.jar D:\work_code\crud_demo\target\ /Y
echo 复制Jar包完成
start javaw -jar -Xms512m -Xmx1024m -Xmn512m D:\work_code\crud_demo\target\crud_demo-0.0.1-SNAPSHOT.jar
exit

以上命令释义:

第1行:set BUILD_ID=DONTKILLME

重新设置构建ID,防止Jenkins构建进程结束后,杀掉关联进程,即防止构建进程结束后,将构建的jar项目也同步停止
第3行:set port=8888

指定端口。这里的端口,需要与 Spring Boot 项目中的 yaml 文件配置的端口一致,主要是用来关闭当前端口的进程,用来重新构建。
第4行:for ... do taskkill ...

关闭8888端口的相关进程。

第6行:xcopy X Y /Y

将X文件复制到Y目录下,/Y是禁止提示以确认改写一个现存目标文件,即覆盖文件的时候,不需要提示,直接覆盖。

这里有两个问题:

1、X 文件是怎么知道的呢?

对于每个构建任务,都有构建历史,访问每个构建历史记录(如果还没构建过可以在IDEA中构建,或者随便输入一个路径,在构建的控制台查看):

可以查看每个构建记录的控制台输出内容,其中就有构建完成的jar包的详细信息:

2、为什么要复制一份?

下次构建的时候,需要删除现有的jar,重新构建新的jar。

如果直接运行生成的jar,下次构建的时候,无法删除,构建失败。

第8行:start javaw -jar XXX.jar

使用java命令启动jar项目。

中间的 -Xms512m -Xmx1024m -Xmn512m 参数是为jar项目分配内存,可以不写。

在第一次配置的时候,第8步暂时跳过,首先生成一个jar包后,确认了jar包的具体位置,再回来添加此配置。

9.点击保存后。

2.5.构建

1.点击"Build Now"开始构建,产生构建报告,如果是"√"则构建成功,如果是"×"则构建失败(失败原因可以查看控制台):

3.自动集成的提现

​ 在上面的步骤中,我们设置了一个触发器,即每间隔1分钟jenkins访问Gitee仓库。此时如果Gitee仓库更新,则会触发Jenkins自动拉去项目进行构建、部署。

​ 我们在项目根目录下创建了一个文本文件,并再次提交成功:

间隔一分钟后,Jenkins也完成了自动构建:

动集成的提现

​ 在上面的步骤中,我们设置了一个触发器,即每间隔1分钟jenkins访问Gitee仓库。此时如果Gitee仓库更新,则会触发Jenkins自动拉去项目进行构建、部署。

​ 我们在项目根目录下创建了一个文本文件,并再次提交成功:

外链图片转存中...(img-wrayEukD-1744772988098)

外链图片转存中...(img-wgqKnorE-1744772988098)

间隔一分钟后,Jenkins也完成了自动构建:

相关推荐
ayaya_mana17 小时前
Notepad--:国产跨平台文本编辑器,Notepad++ 的理想替代方案
linux·windows·macos·编辑器·notepad·notepad--
昏睡红猹20 小时前
如何正确使用SetThreadExecutionState来阻止Windows进入睡眠
windows
霖001 天前
FPGA的PS基础1
数据结构·人工智能·windows·git·算法·fpga开发
程序员二黑1 天前
(Python) vs (Java) vs(javaScript) 谁才是自动化测试的最佳拍档
单元测试·测试·ab测试
得物技术1 天前
AI质量专项报告自动分析生成|得物技术
openai·测试
江湖夜雨abc1 天前
Windows下cuda的安装和配置
windows
哈基米喜欢哈哈哈1 天前
进程和线程
java·linux·windows·笔记
郝同学的测开笔记1 天前
告别硬编码:手把手教你用Secrets保护CronJob的阿里云AK/SK
云原生·kubernetes·测试
苦逼IT运维1 天前
Jenkins + SonarQube 从原理到实战三:SonarQube 打通 Windows AD(LDAP)认证与踩坑记录
运维·服务器·windows·docker·云计算·jenkins·devops
coding随想1 天前
Windows终端powershell执行curl命令报错:Invoke-WebRequest : 无法处理参数,因为参数名称“C”具有二义性。
windows·后端