返回顶部
首页 > 资讯 > 精选 >CI脚本异常退出问题的示例分析
  • 682
分享到

CI脚本异常退出问题的示例分析

2023-06-09 15:06:39 682人浏览 安东尼
摘要

这篇文章主要介绍CI脚本异常退出问题的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景在CI脚本中,使用类似如下脚本进行项目编译的计时,但在执行过程中,有时会出现CI脚本(命名为ci.sh)未完全执行的情况

这篇文章主要介绍CI脚本异常退出问题的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

背景

在CI脚本中,使用类似如下脚本进行项目编译的计时,但在执行过程中,有时会出现CI脚本(命名为ci.sh)未完全执行的情况:

#!/bin/bash -esleep_time=$1start_time=`date "+%s"`# do sth, this sleep would simulate project compilationsleep $sleep_timeend_time=`date "+%s"`process_time=`expr \( end_time - start_time \)`echo "---- process time(sec) are: " $process_time "seconds"# ...

这个脚本,只是模拟我们在CI中的程序,项目编译前计时,项目编译后再次计时,通过sleep休眠来模拟CI中项目编译消耗的时间,然后计算出消耗的时间。这个简化的脚本逻辑很简单,我们通过以下命令来调用:

# ./ci.sh---- process time(sec) are: 2 seconds

这样执行好像并不会出错,那实际CI中为什么会出错呢?

分析

首先,我们发现,当出现脚本未完全执行完成时,不会打印“process time(sec) are”这一句,也就是说错误是这句之前引起的。

另外,细心的朋友还会发现,在脚本的首行,我们给bash使用了-e参数,这个参数的作用就是,一旦shell脚本中任何一行出现了错误,shell脚本就停止运行。所谓的出现错误,也就是这行语句的返回值为非零。那么,CI脚本未完全执行的原因,很可能就是因为某一行语句出现了错误,导致脚本直接退出。

通过增加打印“echo $?”来打印上一行语句的执行结果,很快定位到报错的语句在计算处理时间的这一行:

process_time=`expr \( end_time - start_time \)` 

这一行看起来十分普通,只是简单的用终止时间减去开始时间,然后赋值给process_time。为什么会返回非0值呢?

原来,expr命令有一个小小的trick,当expr表达式中的计算结果为0时,expr命令就会返回1,而不是通常的0。在我们实际的CI任务中,一旦某个项目编译时间非常短,在1秒钟内完成,那么起止时间系统,其差值也就为0,因此,expr就会返回非零值,而CI脚本也会因此而退出。

以上是“CI脚本异常退出问题的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: CI脚本异常退出问题的示例分析

本文链接: https://lsjlt.com/news/256505.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • CI脚本异常退出问题的示例分析
    这篇文章主要介绍CI脚本异常退出问题的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!背景在CI脚本中,使用类似如下脚本进行项目编译的计时,但在执行过程中,有时会出现CI脚本(命名为ci.sh)未完全执行的情况...
    99+
    2023-06-09
  • 浅谈CI脚本异常退出问题定位
    背景 在CI脚本中,使用类似如下脚本进行项目编译的计时,但在执行过程中,有时会出现CI脚本(命名为ci.sh)未完全执行的情况: #!/bin/bash -e sleep_time=$1 star...
    99+
    2022-06-04
    浅谈 脚本 异常
  • JVM 异常退出的问题解决
    我公司的J2EE应用程序服务器(Borland Enterprise Server )有段时间老是会重新启动(间隔时间很断)。开始我以为是JVM的垃圾内存搜集器在工作导致的JVM异常退出。但是最近的一段时间这个现象频繁发生。有时候一天又好几...
    99+
    2023-06-03
  • autojs的Node.js正确退出脚本示例
    目录正文写界面的格式脚本退出但是可能会发生异常报错正文 写界面的格式 class MainActivity extends ui.Activity { ... } 比如我们在...
    99+
    2023-01-31
    autojs Node.js退出脚本 autojs Node.js
  • Linux中shell脚本输出日志的示例分析
    这篇文章给大家分享的是有关Linux中shell脚本输出日志的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、日志方法简介:#日志名称log="./upgrade.log" ...
    99+
    2023-06-09
  • Git版本回退的示例分析
    这篇文章主要为大家展示了“Git版本回退的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Git版本回退的示例分析”这篇文章吧。以前,如果是要去除某一块功能,我都是选择性删除,选择性注释,...
    99+
    2023-06-27
  • linux中常用脚本和函数的示例分析
    这篇文章将为大家详细讲解有关linux中常用脚本和函数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。#查找当前目录中是否存在指定目录,若不存在,则创建之代码如下:function mkdir_1...
    99+
    2023-06-09
  • c++中异常的示例分析
    这篇文章主要介绍了c++中异常的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、什么是异常处理一句话:异常处理就是处理程序中的错误。二、为什么需要异常处理,异常处理...
    99+
    2023-06-15
  • Springboot异常日志输出方式的示例分析
    小编给大家分享一下Springboot异常日志输出方式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!lombok插件使用引入依赖,在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/sette...
    99+
    2023-06-22
  • Java编程常见内存溢出异常的示例分析
    小编给大家分享一下Java编程常见内存溢出异常的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java 堆是用来存储对象实例的, 因此如果我们不断地创建对...
    99+
    2023-05-30
    java
  • Java异常退出条件的判断示例代码
    无论是功能性代码还是算法性代码,程序都是一系列流程的合集 既然是流程就分为:一般流程和异常流程;一般流程保证了基本功能;异常流程则是对程序稳定性的保证,不能因为一些非法输入,项目就挂了;注意,布尔表达式的先后顺序,有时不可以交换if (nu...
    99+
    2023-05-30
    java 异常退出 ava
  • mysql脚本安装的示例分析
    这篇文章主要为大家展示了“mysql脚本安装的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql脚本安装的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • Oracle查询脚本的示例分析
    这篇文章将为大家详细讲解有关Oracle查询脚本的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 --查询回滚段信息selec ...
    99+
    2024-04-02
  • HTML脚本使用的示例分析
    小编给大家分享一下HTML脚本使用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript 使 HTML 页...
    99+
    2024-04-02
  • HTML脚本元素的示例分析
    这篇文章将为大家详细讲解有关HTML脚本元素的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 该<script>元素用于定义客户端脚本,例如HTML...
    99+
    2024-04-02
  • Shell脚本编程的示例分析
    这篇文章给大家分享的是有关Shell脚本编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是Shell脚本Shell脚本(英语:Shell script),又称Shell命令稿、程序化脚本,是一种电...
    99+
    2023-06-09
  • VBS.Runauto脚本病毒的示例分析
    这篇文章给大家分享的是有关VBS.Runauto脚本病毒的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近一位同事的笔记本遭遇了这个病毒,正好这学期在给计算机专业的同学们上VBscript于是顺便分析了...
    99+
    2023-06-08
  • vbs脚本病毒的示例分析
    这篇文章给大家分享的是有关vbs脚本病毒的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考二、目录整个分...
    99+
    2023-06-08
  • Linux启动脚本的示例分析
    这篇文章主要介绍Linux启动脚本的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redhat的启动方式和执行次序是:加载内核执行init程序/etc/rc.d/rc.sysinit # 由init执行的**...
    99+
    2023-06-17
  • WMI_Vbs脚本编程的示例分析
    这篇文章主要介绍WMI_Vbs脚本编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!WMI就是Microsoft Windows Management Instrumentation 。中文名字叫Windo...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作