首页 技术 正文
技术 2022年11月21日
0 收藏 862 点赞 4,580 浏览 1625 个字

1. Jenkins 构建原理

2. 脚本执行失败立即停止执行

3. 脚本执行失败继续后面的执行但最终的结果是构建失败

1. Jenkins 构建原理

Jenkins 的构建成功和脚本执行成功是两个事情,脚本执行成功与否并没有通知 Jenkins,所以会出现明明脚本执行失败了,但是 Jenkins 中显示的依然是 Success。这就是需要我们自行判断脚本的执行结果去通知 Jenkins。

Jenkins 通过退出代码是否为 0 判断 build 是否成功。

2. 脚本执行失败立即停止执行

方法 1

在脚本中每一行语句的下一行添加以下语句,表示如果文件执行失败就直接 exit,后面的命令不会再执行。

@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%

说明:

  • if %errorlevel% >= 值 cmmand 句式时,它的含义是:如果返回的错误码值大于或等于值时,将执行 cmmand 操作;
  • if %errorlevel% == 值 cmmand 句式时,它的含义是:如果返回的错误码值等于值时,将执行 cmmand 操作。

一般上一条命令的执行结果返回的值只有两个,”成功”用 0 表示,”失败”用 1 表示。实际上,errorlevel 返回值可以在 0~255 之间。

示例脚本:

py -3 a.py
@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%
javac ./java/HelloWorld.java
@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%
cd java
@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%
java HelloWorld
@IF NOT %ERRORLEVEL% == 0 EXIT /b %ERRORLEVEL%

方法 2

在脚本中每一行语句的末尾追加下述表达式:

&& echo success || exit 1

  • &&:只有 && 前面的命令成功时,才会执行该符号后面的命令。
  • ||:只有前面命令执行错误时才执行后面命令。

示例脚本:

py -3 a.py && echo success || exit 1
javac ./java/HelloWorld.java && echo success || exit 1
cd java
java HelloWorld && echo success || exit 1

3. 脚本执行失败继续后面的执行但最终的结果是构建失败

思路:

  1. 在工作空间中创建一个文件,文件名为 result.txt。
  2. 判断所有指令的执行结果,如果执行失败就写入 fail 到这个文件中。
  3. 命令执行完毕后打开 result.txt 文件,如果有 fail 的会直接返回 1 给 Jenkins。
echo off
ping 0.0.0.0 -n 3 > null
echo on
# 创建文件 result.txtecho "">result.txt
# py 文件执行失败的话将 fail 写到 result 文件中
py -3 test.py && echo success || echo fail>result.txt
# py 文件执行失败的话将 fail 写到 result 文件中
py -3 registerTest_hotpoint.py 127.0.0.1:8080/IDEAmaven && echo success || echo
fail>result.txt
# 如果 result 文件中有 fail 说明有执行失败的案例,直接 exit 1 通知 Jenkins 构建失败
find /i "fail" result.txt && exit 1 || exit 0
echo "">result.txt
py -3 a.py && echo success || echo fail>result.txt
javac ./java/HelloWorld.java && echo success || echo fail>../result.txt
cd java
java HelloWorld && echo success || echo fail>../result.txt
cd ..
findstr /i "fail" result.txt && exit 1 || exit 0

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,960
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,484
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,330
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,113
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,745
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,779