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

Jenkins 自定义构建结果的更多相关文章

  1. gitlab+jenkins=自动化构建

    jenkins:运维持续集成工具,靠着丰富的插件挑大梁. gitlab:git代码管理仓库web版,功能强大且丰富. 本文是记录自己工作中从搭建到使用~ 前提是会点git~可以去廖老师的网站学习:ww ...

  2. Jenkins分布式构建与并行构建

    Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...

  3. 有手就行5——jenkins项目构建类型(pipeline流水线项目构建推荐)

    有手就行5--jenkins项目构建类型(pipeline流水线项目构建推荐) Pipeline简介 1) 概念 Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立 ...

  4. Jenkins中构建Testcomplete项目的方法介绍

    Jenkins的部署在上一篇随笔中已经和大家介绍了,下面我们介绍一下再Jenkins中构建testcomplete项目.我这里使用的是Testcomplete11,下面详细介绍一下构建步骤. 1.Je ...

  5. 从零开始使用Jenkins来构建Docker容器(Ubuntu 14.04)

    当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,duang~duang~duang,我用了是这样,你们用了也是这样,看起来这 ...

  6. 使用Jenkins来构建Docker容器

    使用Jenkins来构建Docker容器(Ubuntu 14.04) 当开发更新了代码,提交到Gitlab上,然后由测试人员触发Jenkins,于是一个应用的新版本就被构建了.听起来貌似很简单,dua ...

  7. Jenkins+PMD构建自动化静态代码检测

    前言:软件缺陷是不可避免的,要尽量减少错误并提高软件质量,主要有两在类技术,即缺陷预防和缺陷检测 缺陷预防包括编写更好的设计规范.实施代码审核制度.运行代码静态分析工具.运行单元测试等 PMD是一种开 ...

  8. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  9. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

随机推荐

  1. 检查字符串是否包含另一串字符串(c++)

    在c++中检查字符串是否包含另一串字符串,这个本来是我做过的一个算法题,不过最近刚好有个需求让我想到了这个题,就在此记录一下! 使用std::string::findfunction string s ...

  2. mac 下如何轻松安装神器 Anaconda

    本文推荐使用homebrew 安装 1.打开终端执行 brew cask install anaconda3 然后就可以喝一杯咖啡了,终端会自动执行安装好 如果终端卡在update homebrew ...

  3. (三)MySQL锁机制 + 事务

    转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. sh ...

  4. 腾讯一面问我SQL语句中where条件为什么写上1=1

    目录 where后面加"1=1″还是不加 不用where 1=1 在多条件查询的困惑 使用where 1=1 的好处 使用where 1=1 的坏处 where后面加"1=1″还是 ...

  5. POJ-1015(背包变形+输出路径)

    Jury Compromise POJ-1015 推荐几个较好的介绍和理解:https://blog.csdn.net/lyy289065406/article/details/6671105 htt ...

  6. Python3基础-目录

    Python3基础-目录(Tips:长期更新Python3目录) 第一章 初识Python3  1.1 Python3基础-前言  1.2 Python3基础-规范 第二章 Python3内置函数&a ...

  7. 【Arduino学习笔记01】关于Arduino引脚的一些笔记

    参考链接:https://www.yiboard.com/thread-831-1-1.html Arduino Uno R3 - 引脚图 Arduino Uno R3 - 详细参数 Arduino ...

  8. PTA1071 - Speech Patterns - map计算不同单词个数

    题意 输出给定字符串出现最多的字符串(小写输出)和出现次数. 所求字符串要求:字符中可以含有A-Z.0-9. 比如说题目给出的Can1,我们可以转换成can1,can1就算一个字符串整体,而不是单独的 ...

  9. Docker 三剑客 到 k8s 介绍

    一.Docker 三剑客 Docker-Compose Docker-Compose 是用来管理你的容器的,有点像一个容器的管家,想象一下当你的Docker中有成百上千的容器需要启动,如果一个一个的启 ...

  10. python面试题总结

    Python语言特性 1. Python的函数参数传递 ​ 看两个如下例子,分析运行结果 #代码1 a = 1 def fun(a): a = 2 fun(a) print(a) #1 #代码2 a ...