当前位置: 首页 > news >正文

【DevOps】Jenkins 运行任务时遇到 FATAL:Unable to produce a script file 报错(已解决)

文章目录

  • 一、问题描述
  • 二、定位原因
  • 三、解决方案
  • 四、其他方案
  • 五、总结

关键词: Jenkins、Unable to produce a script file、UnmappableCharacterException、IOException: Failed to create a temp file on

一、问题描述

由于使用的 Jenkins 存在安全漏洞(详见 Jenkins Security Advisory 2023-03-08),需要升级到已解决安全漏洞的新版本,更新后运行任务时出现了报错:FATAL: Unable to produce a script file
详细的报错日志如下:

 # 拉取代码的 Commit 信息16:21:35 Commit message: "feat: ????"# 堆栈信息16:21:35 FATAL: Unable to produce a script file16:21:35 java.nio.charset.UnmappableCharacterException: Input length = 116:21:35  at java.base/java.nio.charset.CoderResult.throwException(CoderResult.java:275)16:21:35  at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:306)16:21:35  at java.base/sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:281)16:21:35  at java.base/sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)16:21:35  at java.base/java.io.OutputStreamWriter.write(OutputStreamWriter.java:208)16:21:35  at java.base/java.io.BufferedWriter.flushBuffer(BufferedWriter.java:120)16:21:35  at java.base/java.io.BufferedWriter.close(BufferedWriter.java:268)16:21:35  at hudson.FilePath$CreateTextTempFile.invoke(FilePath.java:1658)16:21:35  at hudson.FilePath$CreateTextTempFile.invoke(FilePath.java:1628)16:21:35  at hudson.FilePath.act(FilePath.java:1198)16:21:35  at hudson.FilePath.act(FilePath.java:1181)16:21:35  at hudson.FilePath.createTextTempFile(FilePath.java:1622)16:21:35 Caused: java.io.IOException: Failed to create a temp file on /var/jenkins_home/workspace/xxx16:21:35  at hudson.FilePath.createTextTempFile(FilePath.java:1624)16:21:35  at hudson.tasks.CommandInterpreter.createScriptFile(CommandInterpreter.java:202)16:21:35  at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:120)16:21:35  at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:92)16:21:35  at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)16:21:35  at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)16:21:35  at hudson.model.Build$BuildExecution.build(Build.java:199)16:21:35  at hudson.model.Build$BuildExecution.doRun(Build.java:164)16:21:35  at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526)16:21:35  at hudson.model.Run.execute(Run.java:1900)16:21:35  at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)16:21:35  at hudson.model.ResourceController.execute(ResourceController.java:101)16:21:35  at hudson.model.Executor.run(Executor.java:442)16:21:35 Build step 'Execute shell' marked build as failure

二、定位原因

根本原因隐藏在日志信息里:

首先,可以看到 Commit message: “feat: ???” 中的中文内容变成了乱码 ??? 。
从堆栈信息里 java.nio.charset.UnmappableCharacterException: Input length = 1 可知,这是个和字符集相关的报错信息:

这个错误是由于Java运行时无法将一个输入的字符映射为所需要的字符集(通常是Unicode)而引起的。可能会发生这种情况:
输入的文本包含了一个你使用的字符集无法映射的字符。 如果文本在不同的平台上被创建和传输,则可能会发生此错误,因为每个平台使用的默认字符集可能不同。 为了解决这个错误,你可以尝试以下方法:

  • 检查你的字符集: 在你的代码中,确保你所使用的字符集和输入文本的字符集匹配。
  • 检查文本: 检查输入文本中是否有在使用字符集时无法映射的字符或符号。
  • 指定字符集: 明确指定字符集,尤其是在不同平台之间传输文本时。最好使用标准字符集,例如UTF-8或ISO-8859-1等。 如果以上解决方法都无效,你可能需要查看代码以确定是否有其他问题。

三、解决方案

既然是字符集(文件编码)相关的问题,解决方案有 2 个思路:

  • 去掉 Jenkins Job 里脚本和指令中的中文等字符
  • 让 Jenkins 的运行环境支持 UTF-8 编码,以正常处理和展示中文内容

方案一:移除无法正常处理和显示的中文内容
进入 Jenkins Job 的配置中,定位报错的步骤卡到哪一个环节,查看脚本和指令是否使用了中文内容(注释也算)。
在我的 Job 配置是 Build Steps - 执行 shell 的 shell 脚本中,对指令做了中文注释,移除调中文内容,保存并重新执行一下 Job 的运行任务,发现可以正常完成构建任务了。
方案二:让 Jenkins 支持中文
让 Jenkins 正确处理和展示中文,有 2 个方法,可以根据自身情况进行设置:

设置机器的 LANG=”C.UTF-8”
ENKINS_JAVA_OPTS 或者 JAVA_OPTS 的值增加 -Dfile.encoding=UTF8 的内容

这里推荐修改 LANG 的值来支持中文:
由于我使用 Docker 方式安装的 Jenkins,所以只需要在创建 container 时设置 -e LANG=“C.UTF-8” 即可;如何你使用 portainer 或者 Docker Compose,可自行查找设置、修改环境变量的方法。
对于 ENKINS_JAVA_OPTS 或者 JAVA_OPTS 的值增加 -Dfile.encoding=UTF8 的内容:

注意一点,ENKINS_JAVA_OPTS 只影响 Jenkins 程序;JAVA_OPTS 则会影响所有本机器下所有基于 Java 运行的程序。 至于修改方式,参考上面修改 LANG 的过程。

最后,对修改是否生效进行检查:

设置完毕并重启 Jenkins 后,如果你是管理员,进入 Dashboard-系统管理-系统信息-环境变量 查看下当前 Jenkins 的环境变量:

  1. 检查 LANG 的值,查看下是否为 C.UTF-8 ;
  2. 或者,查看 JENKINS_JAVA_OPTS 或者 JAVA_OPTS 的值里是否有 -Dfile.encoding=UTF8 ;
  3. 最后,运行一下之前 Job 的构建任务,看看能否正常显示中文和正常完成构建。

四、其他方案

网上也有一些别的方案,如果报错信息中没有 java.nio.charset.UnmappableCharacterException: Input length = 1 的信息,可能就不是编码问题。可以尝试:

  • 重启 Jenkins
  • 可能磁盘空间不足,可尝试删除 /tmp/ 缓存目录下的文件
  • 可能目录权限不正确,尝试把 Job 的 workspace 所在目录修改为 jenkins 能够读写的用户权限

五、总结

定位问题的过程中,首先检索报错信息中的 Unable to produce a script file,有很多资料都没有说明为什么要使用文章里的解决方案,仅仅是做个记录,没有深入追溯原因,走了不少弯路。

之后,结合 Commit 信息乱码,检索报错信息中的 java.nio.charset.UnmappableCharacterException: Input length = 1,终于找到核心原因:文件编码问题。之后一路查官方文档等,找到了合适的解决方案。

相关文章:

【DevOps】Jenkins 运行任务时遇到 FATAL:Unable to produce a script file 报错(已解决)

文章目录一、问题描述二、定位原因三、解决方案四、其他方案五、总结关键词: Jenkins、Unable to produce a script file、UnmappableCharacterException、IOException: Failed to create a temp file on一、问题描述 由于使用的 Jenkins 存在安全漏洞(…...

Web前端

WEB前端 HTMLCSSJavaScriptjQuery(js框架)Bootstrap(CSS框架)AJAXJSON 文章目录 WEB前端WEB前端三大核心技术Web开发工具文本编辑器集成开发环境(IDE)浏览器选择HTML什么是 HTML?HTML版本变迁HTML-HelloWorldHTML 文档 = 网页HTML 标签属性(Attribute)HTML 常用标签...

资源操作:Resources

文章目录1. Spring Resources概述1.2 Resource 接口1.3 Resource的实现类1.3.1 UrlResource访问网络资源1.3.2 ClassPathResource访问类路径下资源1.3.3 FileSystemResource访问文件系统资源1.3.4 ServletContextResource1.3.5、InputStreamResource1.3.6、ByteArrayResource1.…...

GDB调试的学习

很早就想在好好学一学gdb了,正好最近学算法(以前一直以为干硬件不需要什么特别厉害的算法,结果现在卷起来了。大厂面试题也有复杂一些的算法了) 下面的这些命令是别的博主总结的 GDB 调试过程_gdb调试过程_麷飞花的博客-CSDN博客…...

熵值法综合评价分析流程

熵值法综合评价分析流程 一、案例背景 当前有一份数据,是各品牌车各个维度的得分情况,现在想要使用熵值法进行综合评价,得到各品牌车的综合得分,从而进行车型优劣对比,为消费者提供购车依据。 数据如下(数…...

使用Python Pandas库操作Excel表格的技巧

在数据分析和处理中,我们经常需要对Excel表格进行操作。Python Pandas库提供了丰富的API来读取、写入、修改Excel表格。本文将介绍如何使用Python Pandas库操作Excel表格,包括向Excel表格添加新行、创建Excel表格等。 1.向Excel表格添加新行 下面是一个…...

LeetCode练习七:动态规划上:线性动态规划

文章目录一、 动态规划基础知识1.1 动态规划简介1.2 动态规划的特征1.2.1 最优子结构性质1.2.2 重叠子问题性质1.2.3 无后效性1.3 动态规划的基本思路1.4 动态规划基础应用1.4.1 斐波那契数1.4.2 爬楼梯1.4.3 不同路径1.5 个人总结二、记忆化搜索2.1 记忆化搜索简介2.2 记忆化搜…...

基于正点原子F407开发版和SPI接口屏移植touchgfx完整教程(一)

一、相关软件包安装 1、打开cubemx包管理器 2、安装F4软件包 3、安装touchgfx软件包 二、工程配置 1、新建工程 2、sys配置 3、rcc配置 4、crc配置 5、添加touchgfx软件包 6、配置touchgfx软件包 将width和height改为自己屏幕尺寸 7、生成工程 三、代码修改 1、将屏幕相关驱…...

Linux--进程间通信

前言 上一篇相关Linux文章已经时隔2月,Linux的学习也相对于来说是更加苦涩;无妨,漫漫其修远兮,吾将上下而求索。 下面该片文章主要是对进程间通信进行介绍,还对管道,消息队列,共享内存,信号量都…...

hadoop伪分布式集群搭建

基于hadoop 3.1.4 一、准备好需要的文件 1、hadoop-3.1.4编译完成的包 链接: https://pan.baidu.com/s/1tKLDTRcwSnAptjhKZiwAKg 提取码: ekvc 2、需要jdk环境 链接: https://pan.baidu.com/s/18JtAWbVcamd2J_oIeSVzKw 提取码: bmny 3、vmware安装包 链接: https://pan.baidu…...

Qt 中的信息输出机制:QDebug、QInfo、QWarning、QCritical 的简单介绍和用法

Qt 中的信息输出机制介绍QDebug在 Qt 中使用 qDebug输出不同类型的信息浮点数:使用 %!f(MISSING) 格式化符号输出浮点数布尔值:使用 %! (MISSING)和 %! (MISSING)格式化符号输出布尔值对象:使用 qPrintable() 函数输出对象的信息qInfoqWarnin…...

C++读写excel文件的的第三方库

一、比较流行的库 1. OpenXLSX 用于读取、写入、创建和修改 Microsoft Excel (.xlsx) 文件的 C 库。 2. xlnt xlnt 是一个现代 C 库,用于操作内存中的电子表格以及从 XLSX 文件读取/写入它们,如ECMA 376 第 4 版中所述。xlnt 1.0 版的首次公开发布是在 …...

【关于Linux中----多线程(一)】

文章目录认识线程创建线程线程优点和缺点创建一批线程终止线程线程的等待问题认识线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&a…...

2023年全国最新安全员精选真题及答案34

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 11.(单选题)物料提升机附墙架设置要符合设计要求,但…...

数据出境是什么意思?我国数据出境合规要求是什么?

随着经济全球化深入以及云计算等技术的发展,数据在全球范围跨境流动。数据跨境在促进经济增长、加速创新的同时,对数据主权、数据权属、个人信息保护等一系列问题逐渐浮出水面。今天我们就先来了解一下数据出境是什么意思?我国数据出境合规要…...

Liunx——Git工具使用

目录 1)使用 git 命令行安装 git 2)在 Gitee 创建仓库 创建仓库 3)Linux克隆仓库到本地 4)提交代码三板斧: 1.三板斧第一招: git add 2.三板斧第二招: git commit 3.三板斧第三招: git push 5)所遇…...

微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3

微软语音合成工具基于Electron Vue ElementPlus Vite 构建并能将文字转换为语音 MP3 资源下:微软语音合成工具基于ElectronVueElementPlusVite构建并能将文字转换为语音MP3资源-CSDN文库 本文将介绍如何使用微软语音合成工具和前端技术栈进行开发,…...

Mongodb学习笔记2

文章目录前言一、搭建项目二、开始编写java代码1. 新增2.查询3. 修改4. 删除5.根据条件查询6. 关联查询7. 索引相关总结前言 MongoTemplate 相关操作 CRUD,聚合查询等; 一、搭建项目 springboot项目创建引入mongo 依赖docker 安装好mongo数据库配置yml 链接mongo spring:dat…...

学习Tensorflow之基本操作

学习Tensorflow之基本操作Tensorflow基本操作1. 创建张量(1) 创建标量(2) 创建向量(3) 创建矩阵(4) shape属性(5) 判别张量类型(6) 列表和ndarray转张量2. 创建特殊张量(1) tf.ones与tf.ones_like(2) tf.zeros与tf.zeros_like(3) tf.fill(3) tf.random.normal(4) tf.random.uni…...

《Spring系列》第2章 解析XML获取Bean

一、基础代码 Spring加载bean实例的代码 public static void main(String[] args) throws IOException {// 1.获取资源Resource resource new ClassPathResource("bean.xml");// 2.获取BeanFactoryDefaultListableBeanFactory factory new DefaultListableBeanFa…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...