首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当shell脚本中有执行错误时,Jenkins构建就会通过

基础概念

Jenkins 是一个开源的自动化服务器,用于自动化各种任务,如构建、测试和部署软件。Shell 脚本是一种在 Unix/Linux 系统上执行的命令行脚本。当 Shell 脚本在执行过程中遇到错误时,通常会返回非零的退出状态码,表示脚本执行失败。

问题原因

Jenkins 构建通过的原因可能是 Jenkins 配置中没有正确地检查 Shell 脚本的退出状态码。默认情况下,Jenkins 会继续执行后续步骤,即使前面的步骤失败。

解决方法

为了确保 Jenkins 构建在 Shell 脚本执行错误时失败,可以在 Jenkins 的构建脚本中添加检查退出状态码的逻辑。以下是一个示例:

代码语言:txt
复制
#!/bin/bash

# 执行 Shell 脚本
./your_script.sh

# 检查退出状态码
if [ $? -ne 0 ]; then
  echo "Shell 脚本执行失败,退出状态码: $?"
  exit 1
fi

# 继续执行后续步骤
echo "Shell 脚本执行成功,继续后续步骤"

详细步骤

  1. 编辑 Jenkins 构建脚本: 打开 Jenkins 项目的构建脚本(通常是 Jenkinsfile 或者在 Jenkins 的构建配置中指定的 Shell 脚本),添加上述检查逻辑。
  2. 保存并重新构建: 保存修改后的构建脚本,并触发 Jenkins 重新构建项目。
  3. 验证结果: 观察 Jenkins 构建日志,确保在 Shell 脚本执行失败时,构建会失败并显示相应的错误信息。

参考链接

通过上述方法,可以确保 Jenkins 构建在 Shell 脚本执行错误时失败,从而提高构建的可靠性和准确性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一、问题

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/265 一、问题 通过jenkins执行shell脚本时,...Jenkins构建完后推送到业务服务器,在执行脚本时,脚本中的 nohup 命令无法正常退出,构建前台任务就卡住了,或者是nohup总是无效。...二、排查 1.在业务服务器上直接执行脚本,可以正常运行,说明脚本的问题不大,但是一旦结合jenkins进行发布,虽然jenkins显示成功,但是shell脚本并没有执行。.../bin/bash echo "hello" >> /usr/local/test.txt /usr/local/test.txt中有内容,说明脚本是可以执行成功,同时也说明jenkins执行带有nohup...,整个脚本 就会立即退出 set +e: 执行的时候如果出现了返回值为非零将会继续执行下面的脚本 五、扩展 1.Jenkins执行shell脚本时,要注意使用全路径 /bin/sh /usr/local

1.3K10

jenkins + gitlab + fastlane 一键打包上传至蒲公英和 Fir

最后一步,Build,这里只写了fastlane ios agent_dev,其实就是执行fastlane脚本。...fastlane配置 讲讲我这里为什么使用fastlane,网上有些人是直接在jenkins上配置构建命令或者xcode build脚本的,我试过是可以的,但是其实在配置过程中,繁琐又容易踩很多坑。...命令执行到 bundle update可能会卡住,需要打开项目目录下新增的文件GemFile,修改一下ruby源。保存后,继续在当前目录下执行bundle update即可。...在里面配置打包脚本即可,以下是我的配置,修改后可以拿来直接用。在当前目录里执行fastlane即可测试本地打包是否能成功。...jenkins开始打包大概率会报的两个 出现fastlane requires your locale to be set to UTF-8.警告 环境变量里面设置 export LANG=en_US.UTF

2.3K20
  • 利用 JenKins 持续集成 iOS 项目时遇到的问题

    这个Keychain其实在/Users/管理员用户名/Library/keychains/login.keychain,把这个Keychain设置好了之后,Jenkins会把这个Keychain拷贝到...注意: 执行pod install命令时,需要cd到pod文件所在的目录, {WORKSPACE}/BusinessMall,否则,在构建就会报: [!]...Build step ‘Execute shell’ marked build as failure 的错误。在执行完pod install后,就可以使用Xcode构建项目打包环境了。...构建后操作 添加构建后操作步骤,使用脚本将生成的ipa包上传到fir或者蒲公英等三方平台,扫码下载安装。...在 Jenkins 中使用 SVN 管理源码,因此,我需要将这个新增的文件上传SVN,这样在我每次构建项目,输出ipa时就能直接从SVN上拉取这个plist文件,通过设置 ExportOptions.plist

    2.6K20

    docker | jenkins 实现自动化CICD,后端躺着把运维的钱挣了!(下)

    ,访问服务器ip:8080就能跳转到jenkins登录页面,第一次会让你输入一个密钥,这个在服务器运行Jenkins容器的时候控制台上就会显示(如果没有加上-d参数)。...需要通过shell脚本指定,这里的shell就是Jenkins在监听到git仓库的master分支发生变化时要做的事情,包括删除已创建的容器(因为端口被旧容器占用,需要强制删除),构建新的镜像,运行新的容器...命令中有删除旧容器的命令,但是没有删除旧镜像的命令(每次构建同名新镜像,旧的镜像就会变成none,但是依旧占据空间,需要回收) 但是直接在shell中编写删除镜像的命令在回收时可能会发生错误,所以额外创建一个定时任务去回收这些旧的镜像...,这里指定清理镜像的任务的执行频率是每天的凌晨一点钟(可以自行控制) shell脚本用于判断是否存在 状态的镜像,并对它们进行回收 echo ---------------Clear-Images...、测试、部署等,也可以针对不同的推送命令配置不同的应答行为,每个阶段也可以指定执行各种脚本,这个就要学习Jenkins的pipeline机制,通过流水线的方式指定更详细和规范的CI/CD流程,不过到目前为止

    45820

    jenkins配置记录(2)--代码发布流程

    svn co测试执行一下(用对应的的svn账号和密码,执行一会儿就ctrl+c结束就行),看看能否正常通过svn下载,不然可能会有报错。  ...最后,调用shell同步的脚本脚本jenkins本机上定义的,这里填写脚本执行命令就行) ? ?...最简单的做法还可以是:在jenkins本机提前编写好代码同步的脚本(svn操作在脚本中定义),然后在jenkins界面里的项目构建配置中只引用shell脚本构建即可。...,就会出现输入版本号的提示(注意上面Beta的shell脚本中有/Data/app/php5.5.1/bin/php进程,把这个php服务启动起来;按照以上脚本中的意思是在代码发布前,将代码中的php文件搜索出来...,然后用php执行下这些php脚本文件,如果有报错,则终止这次构建,如果没有报错,则继续进行代码发布;具体按照自己的实际情况对脚本进行调试) ?

    2K101

    基于 Github+Jenkins+Maven+Docker 自动化构建部署

    包和tomcat镜像构建出新镜像推送到阿里云 PS:读者最好有linux使用经验,会编写shell脚本。...ssh推送文件,并可以执行shell命令 插件安装完成后最好重启一下jenkins,有几率jenkins会不生效 还需要指定jenkins的jdk和maven,进入系统管理->全局工具配置,jdk在jenkins...构建环境:无需配置 Pre Steps:构建前的操作,可以增加执行shell,配置脚本echo "Pre Steps脚本启动成功",此内容会在构建控制台中打印出来 Build:Root POM配置pom.xml...返回项目页面,在左侧点击立即构建或修改代码等待5分钟或访问触发远程构建的URL。jenkins就会开始构建了。...我的配置如下: 第一个Exec command调用的test.sh是随便echo点东西 第二个Exec command是调用一个shell脚本,里面docker会执行build、push等一系列命令,这里贴出来

    3.5K40

    jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

    这里使用的执行shell命令    shell脚本里面写的就是无非就是把编译好的war包放到对应的容器中去 然后启动容器  最关键得地方,  不同的项目.不同的容器这里的shell脚本肯定是有不一样.../startup.sh 问题1:上述shell脚本执行后 肯定会出现tomcat没有启动的情况   1.这里如果tomcat和jenkins 在同一台linux上可以 加上 export BUILD_ID...=tomcat_mobile_build_id     原因是: jenkins执行sh脚本的时候,如果脚本中有启动后台进程的情况,例如tomcat的关闭和启动,jenkins在job构建结束之后,...那可以在A机器上写一个脚本,把需要在B机器上执行的命令封装在A机器上的这个脚本里面,这样也能保证衍生进程正确执行结束。   ...就是相当于把上面的shell写到一个sh文件中  jenkins执行这个sh文件 ?

    1.3K30

    Jenkins敏捷开发 自动化构建工具

    实践过程中,将项目的脚本构建shell 编写成命令脚本,并附加在项目中,即使不使用 Jenkins通过执行 shell 脚本也能够实现项目的自动化构建。...shell 脚本配合 Jenkins 使用有两大方面优势: 使用 shell 脚本必须登录目标服务器,拥有相应的权限后,方能执行 shell 脚本Jenkins 能够实现在不登录目标服务器的基础上,使用一对账号和密码...1、构建配置 用脚本的方式构建 Jenkins 项目配置非常简单,尽管内置了很多花里胡哨的配置,这里用不到,不需要关心。 只需要在构建中添加执行 shell 脚本命令即可。...附录中列举的环境配置统一在宿主机上完成,不在 Jenkins 服务内部配置,使用默认值即可。 2、添加项目 在宿主机上将待构建项目的源代码克隆到本地,执行 shell 脚本完成手动构建。...(三)免密登录 使用 URL 触发构建事件,需要配置免密登录,即在不需要输入用户名和密码的情况下,通过远程调用 shell 脚本触发构建事件,此 shell 脚本本质上是 GET 的方式请求某个指定的路径

    91540

    jenkins自动部署应用到tomcat中,编译后shell脚本的简单示例

    这里使用的执行shell命令 shell脚本里面写的就是无非就是把编译好的war包放到对应的容器中去 然后启动容器 最关键得地方, 不同的项目.不同的容器这里的shell脚本肯定是有不一样,网络上的这类.../startup.sh 问题1:上述shell脚本执行后 肯定会出现tomcat没有启动的情况1.这里如果tomcat和jenkins 在同一台linux上可以 加上 exportBUILD_ID=tomcat_mobile_build_id...原因是:jenkins执行sh脚本的时候,如果脚本中有启动后台进程的情况,例如tomcat的关闭和启动,jenkins在job构建结束之后,会kill所有的脚本里面衍生出的子进程。...那可以在A机器上写一个脚本,把需要在B机器上执行的命令封装在A机器上的这个脚本里面,这样也能保证衍生进程正确执行结束。 ?...就是相当于把上面的shell写到一个sh文件中 jenkins执行这个sh文件 ? 因为我便是jenkins和Tomcat在同一台linux上 所以这里就没有把shell脚本写在sh文件中 #!

    71920

    技术分享 | Jenkins job 机制该如何使用?

    job 是 Jenkins 的一个执行计划,是一系列操作的集合,Jenkins 里的最常用的功能就是 job 的构建,即任务的构建通过构建 job 即可让工人为你工作。...图片创建 job及配置步聚可以通过如下步骤初步构建一个Jenkins 任务:新建 Jenkins Job类型选择自由风格:可以自由配置参数设置构建记录的最大保留数:可以设置保留天数和构建次数源码管理(可选择...SVN、Git):比如 Jenkins 需要从 Git 上拉代码,可配置 Git通过构建,可以执行 Windows、Shell 命令触发脚本执行添加构建参数:用于参数化构建,比如从外部给 job 传递用例名设置定时构建...,格式为分钟、小时、日期、月份、星期配置详解构建功能是Jenkins的核心功能,Jenkins任务具体的执行内容一般都由此配置进行控制,可以通过Shell脚本或者其他类型的脚本,定制化的完成任务。...test_ui.py定时构建代表任务的构建执行)的频率,一旦添加此配置,就会按照设定的配置内容执行:# 1.每30分钟构建一次H/30 * * * *# 2.每2小时构建一次H H/2 * * *#

    29810

    让自动化工作流解放你的双手

    ,人员变多的话,就会导致很浪费时间,而且还容易出错,这个时候前端的自动化构建及部署就必不可少了。...我们后续不使用 shell 脚本,使用 Fabric 脚本部署,希望大家在 jenkins 上也装一下 Fabric 环境吧,放心,不是很麻烦,很快就可以装好,不是给大家加活,主要是 Fabric 是真好用...我们可以在 jenkins 上进行单元测试,安装升级依赖包,打包,上传业务服务器,无论你是执行 npm scripts,还是执行脚本,都能在 jenkins 上进行构建。...这个时候脚本就写好了,我们打开 jenkins 找到对应项目,进入项目的 Configure,找到 build,然后配置一个 shell,让其执行。 可以参考下面的配置: ?...在 jenkins执行构建,我们可以点击这个构建的图标查看构建过程有没有问题。 ? 出现以下内容时,就代表构建成功了。 ? 可以使用你业务服务器的 ip 加项目端口号查看跑起来的项目。 ?

    1.3K30

    让自动化工作流解放你的双手

    ,人员变多的话,就会导致很浪费时间,而且还容易出错,这个时候前端的自动化构建及部署就必不可少了。...我们后续不使用 shell 脚本,使用 Fabric 脚本部署,希望大家在 jenkins 上也装一下 Fabric 环境吧,放心,不是很麻烦,很快就可以装好,不是给大家加活,主要是 Fabric 是真好用...我们可以在 jenkins 上进行单元测试,安装升级依赖包,打包,上传业务服务器,无论你是执行 npm scripts,还是执行脚本,都能在 jenkins 上进行构建。...这个时候脚本就写好了,我们打开 jenkins 找到对应项目,进入项目的 Configure,找到 build,然后配置一个 shell,让其执行。 可以参考下面的配置: ?...在 jenkins执行构建,我们可以点击这个构建的图标查看构建过程有没有问题。 ? 出现以下内容时,就代表构建成功了。 ? 可以使用你业务服务器的 ip 加项目端口号查看跑起来的项目。 ?

    84800

    使用 Docker 全自动构建 Java 应用

    一个 Jenkins 执行器相当于一个处理进程,Jenkins job 就是通过它运行在对应的 slave/agent 机器上。...我写的这个简单 shell 脚本就是用来在容器启动好以后触发 job 的。shell 脚本用 curl 向 Jenkins 发送了一个 post 请求命令。内容像这样。...Install-plugins.sh - 这是我们用来安装所有所需插件的脚本。我们会把这个脚本复制到 Jenkins 镜像,并把插件名作为它的参数。容器启动好以后,这个脚本就会根据插件名对应的插件。...上面的命令执行后,我们就得到一个运行着的 Jenkins 容器。可以通过 URL:8880 查看 Jenkins 控制台。...这样 Jenkins 就会触发 maven:3-alpine 容器, 然后执行定义在步骤里的命令 mvn -B -DskipTests clean package。

    1.4K10

    JenkinsJenkins集成IOS全自动打包专题

    ,需要在xcode工程中设置证书与provisioning pfrofile 2.1.3 编写shell打包脚本     Xcode9以后只能通过shell脚本打包,而不能通过Jenkins的xcode....html 详解Shell脚本实现iOS自动化编译打包提交 https://www.jianshu.com/p/bd4c22952e01 Jenkins配置节点(解决Linux上iOS打包) https...通过Jenkins 自动构建ipa http://www.jianshu.com/p/ce36997919b4 (Good)jenkins xcodebuild命令行打包iOS项目问题汇总 http:/.../p/cda327047524 【Mac】解决jenkins执行shell脚本等场景中遇见的权限不足问题 http://blog.csdn.net/hszxd479946/article/details.../78831909 iOS 通过Jenkins 自动构建ipa https://www.jianshu.com/p/ce36997919b4 XCode8.2 Jenkins 集成遇到的问题No profile

    1.3K40

    Jenkins参数化构建与触发

    前言 我们在使用Jenkins进行项目构建时,有时会出现两个项目之间关联的情况,比如项目1构建结束后想要直接执行项目2,或者项目1中的某些参数需要传递给项目2来使用,此时可以使用Jenkins的参数化构建方法来完成该过程...No.2 Jenkins任务触发 在进行多任务的持续集成项目构建时,经常会遇到需要执行完任务1,然后再执行任务2,如果任务2的执行不需要用到任务1中的参数,那么可以在任务2中的触发器中添加任务1的名字。...然后在任务2的执行shell脚本中写入打印3次‘test’的指令,保存。...No.3 Jenkins参数化触发 任务1中有构建后需要传递给任务2的参数时,要想实现带参数构建,需要借助一个Jenkins插件:Parameterized Trigger,读者可以自行安装一下,安装成功后...1.在任务1中将执行中的参数保存到properties文件中 因为终端shell执行完毕后变量都会回收,所以不能够将变量直接传递给任务2,需要将其写入到文件中然后以文件的形式传递,在任务1的执行shell

    3.4K20

    .Net微服务实战之CICD

    那么工作流程是: 迁入代码push到Gitlab Gitlab触发webhook的push触发事件并主动通知Jenkins构建 Jenkins在Gitlab获取源码并通过配置好的规则与shell脚本进行构建...自由风格的项目更多是使用shell脚本结合相应平台的指令实现自动化,因此建议大家对shell脚本有个初步的认识与学习,虽然Jenkins也提供了对应平台语言的一些插件,但是只要您熟悉了shell就会发现它的灵活性与便捷性...构建,这里其实就是执行shell脚本完成发布。...这里得注意下我是用ssh,因为我的Jenkins是使用了docker安装的,如果我使用了【构建】模块里的【执行shell就会Jenkins环境里进行编译、打包,同时也需要安装相应的环境 例如dotnet...构建脚本 这个是工具库发布到私有Nuget的脚本 #脚本开始执行 echo '脚本开始执行' base_path=/root/jenkins/jenkins_home/workspace/TestNuget

    54230

    DevOps平台实践落地之构建管理详解

    Jenkins实现了与众多插件的集成,可以通过groovy命令调用git、maven、npm、gradle、shell、junit、sonarqube、ansible、docker、openshift、...首先是执行效率问题,我们的DevOps通过API启动Jenkins时,Jenkins先排队调度再执行的机制造成启动较慢,比如会等待5,6秒,有时甚至是10几秒的情况,之后才会开始执行真正的脚本,用户体验较差...,如:执行Sonarqube代码分析、Jmeter测试、Selenium测试等与测试和代码分析相关;第三类是工具类任务,如:Shell脚本执行、介质提交到Nexus仓库、介质上传二方库等。...这个超时时间是指在Jenkins执行这个构建流程的时候,最长允许执行多长时间,如果超过这个时间,这个构建流程就会Jenkins强行终止。...Jenkins pipeline job,执行pipeline job,通过Groovy脚本驱动相关的插件执行任务,最后,DevOps调用Jenkins Rest API查询执行进度和结果,这就是构建执行的大致流程

    2.2K100

    DevOps编程操练:用Jenkins流水线建立代码质量预警机制

    Jenkinsfile脚本,并进行版本控制 流水线出现故障后,不知如何revert导致故障的代码提交,来解决故障 使用docker搭建Jenkins操练环境 当然也可以不用docker,直接在本机安装...这一点可以通过执行命令 docker container exec -it jenkins-katas bash进入容器内部查看,查看有按 Ctrl + PQ 退出 ?...这意味着流水线的配置,都可以用有版本控制的脚本来完成。但如果想让Jenkins定时轮询代码库,以便做到频繁小批地构建代码,从而尽早频繁小批地定位代码质量问题,更容易地修复问题,这该如何用脚本实现呢?...Build Triggers配置区域中,Build periodically已经被勾选,且五个星出现在 `Schedule` 输入框中 在流水线上引入一个编译错误,并revert来解决问题 现在操练一下流水线遇到编译错误时...revert并且push,1分钟后,流水线自动构建,故障消失 在流水线上引入一个自动化单元测试失败,并revert来解决问题 现在操练一下流水线遇到测试失败时,会报什么 在测试代码中,将断言中的 firstName

    2.7K31

    .Net微服务实战之CICD

    那么工作流程是: 迁入代码push到Gitlab Gitlab触发webhook的push触发事件并主动通知Jenkins构建 Jenkins在Gitlab获取源码并通过配置好的规则与shell脚本进行构建...自由风格的项目更多是使用shell脚本结合相应平台的指令实现自动化,因此建议大家对shell脚本有个初步的认识与学习,虽然Jenkins也提供了对应平台语言的一些插件,但是只要您熟悉了shell就会发现它的灵活性与便捷性...构建,这里其实就是执行shell脚本完成发布。...这里得注意下我是用ssh,因为我的Jenkins是使用了docker安装的,如果我使用了【构建】模块里的【执行shell就会Jenkins环境里进行编译、打包,同时也需要安装相应的环境 例如dotnet...构建脚本 这个是工具库发布到私有Nuget的脚本 #脚本开始执行 echo '脚本开始执行' base_path=/root/jenkins/jenkins_home/workspace/TestNuget

    56010

    Jenkins_流水线语法_002

    Required No Parameters None Allowed Inside a stage directive 内置条件 branch 正在构建的分支与模式给定的分支匹配时,执行这个阶段...嵌套条件是错误时执行这个阶段,必须包含一个条件,例如: when { not { branch 'master' } } allOf 所有的嵌套条件都正确时,执行这个阶段,必须包含至少一个条件...从根本上说, 步骤告诉 Jenkins要做 what ,并作为声明式和脚本化流水线已发的基本构建块。...详情参见 JENKINS-27421 和 JENKINS-26481。 语法比较 Jenkins 流水线第一次构建时, Groovy 被选为基础。...Jenkins长期使用嵌入式 Groovy引擎来为管理员和用户提供 高级脚本功能。另外, Jenkins流水线的实现者发现 Groovy是 构建现在成为 “脚本化流水线” DSL的坚实基础 [2]。

    1.7K90
    领券