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

PHP网站建设的基本流程成都关键词自然排名

PHP网站建设的基本流程,成都关键词自然排名,美联社中文新闻,建设网站书籍pdf下载文章目录一、问题描述二、定位原因三、解决方案四、其他方案五、总结关键词: Jenkins、Unable to produce a script file、UnmappableCharacterException、IOException: Failed to create a temp file on一、问题描述 由于使用的 Jenkins 存在安全漏洞(…

文章目录

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

关键词: 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,终于找到核心原因:文件编码问题。之后一路查官方文档等,找到了合适的解决方案。

http://www.15wanjia.com/news/44970.html

相关文章:

  • 兰州城关区建设局网站四川疫情最新情况
  • 账号交易网站数据库应该怎么做互联网去哪里学
  • java做网站浏览记录百度服务中心人工客服电话
  • 做网站提升公司形象搭建自己的网站
  • 业绩显示屏 东莞网站建设技术支持微信怎么引流营销呢
  • 全国各大网站福州百度推广开户
  • 网站建设优化哪家公司好竞价排名的弊端
  • 和优网络做的网站感染病毒关于营销的最新的新闻
  • 做网站网页需要什么软件哈尔滨网络优化公司有哪些
  • 医院网站改版建设招标公告新媒体口碑营销案例
  • 餐饮行业做微信网站有什么好处无线网络优化工程师
  • 深圳模板网页搜索优化
  • 保定网站建设服务宁波最好的推广平台
  • 互联网站备案手续aso优化{ }贴吧
  • 用js做自适应网站昨日凌晨北京突然宣布重大消息
  • 自己网站上做淘宝搜索引擎牛排seo系统
  • 宁波网站建设服务服务商2022最近十大的新闻热点
  • 管理者应具备的能力成都百度推广账户优化
  • 青岛黄岛区做网站设计的百度搜索引擎广告投放
  • 华为网站建设软文营销是什么意思
  • 可以自己做斗图的网站百度帐号登录入口
  • 专做校园购物网站广州市人民政府新闻办公室
  • 自己怎么做企业网站建设电商网店
  • wordpress后台设置教程百中搜优化软件靠谱吗
  • 云南手机网站制作长春网站优化服务
  • 深圳网站设计公司电话seo工资待遇 seo工资多少
  • wordpress后台白屏百度seo公司
  • 山西省网站建设制作seo优化方案模板
  • wordpress 主题 最简单百度seo推广是什么
  • 从代码角度分析网站怎么做模板之家