远程Jenkins节点执行Ant构建任务时遇语法错误求助
远程Jenkins Agent执行Ant任务报错:文件名、目录名或卷标语法不正确
环境信息
- Jenkins版本:2.406
- 控制器节点:Java 11本地节点
- 构建节点:Windows远程agent
构建控制台输出
Started by upstream project "master" build number 61 originally caused by: Started by remote host 127.0.0.1 Running as SYSTEM [EnvInject] - Loading node environment variables. [EnvInject] - Preparing an environment for the build. [EnvInject] - Keeping Jenkins system variables. [EnvInject] - Keeping Jenkins build variables. [EnvInject] - Injecting contributions. Building remotely on agent_android in workspace C:\Java\Jenkins_Slave\.jenkins_android\workspace Restoring workspace from build #61 of project retrieve_local [workspace] $ cmd.exe /C "C:\Java\Jenkins_Slave\apache-ant-1.10.13\bin\ant.bat -l basic_ant2.log && exit %%ERRORLEVEL%%" **The filename, directory name, or volume label syntax is incorrect.** Build step 'Invoke Ant' marked build as failure Archiving artifacts Finished: FAILURE
已尝试的解决方案
- 在控制器本地节点执行相同Ant任务,运行正常
- 通过Windows批处理任务执行相同Ant命令,运行正常
- 切换Ant工具为"Default"版本,出现其他错误
- 使用仅输出hello world的简易build.xml,排除构建文件本身问题
失败任务的XML配置
<?xml version='1.1' encoding='UTF-8'?> <project> <actions/> <description></description> <keepDependencies>false</keepDependencies> <properties> <jenkins.model.BuildDiscarderProperty> <strategy class="hudson.tasks.LogRotator"> <daysToKeep>-1</daysToKeep> <numToKeep>3</numToKeep> <artifactDaysToKeep>-1</artifactDaysToKeep> <artifactNumToKeep>1</artifactNumToKeep> </strategy> </jenkins.model.BuildDiscarderProperty> <EnvInjectJobProperty plugin="envinject@2.901.v0038b_6471582"> <info> <propertiesFilePath>$WORKSPACE/../../VersionInfo.txt</propertiesFilePath> <secureGroovyScript plugin="script-security@1244.ve463715a_f89c"> <script></script> <sandbox>false</sandbox> </secureGroovyScript> <loadFilesFromMaster>false</loadFilesFromMaster> </info> <on>true</on> <keepJenkinsSystemVariables>true</keepJenkinsSystemVariables> <keepBuildVariables>true</keepBuildVariables> <overrideBuildParameters>false</overrideBuildParameters> </EnvInjectJobProperty> </properties> <scm class="hudson.plugins.cloneworkspace.CloneWorkspaceSCM" plugin="clone-workspace-scm@84.v147686859e1c"> <parentJobName>retrieve_local</parentJobName> <criteria>Any</criteria> </scm> <assignedNode>agent_android</assignedNode> <canRoam>false</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> <triggers/> <concurrentBuild>false</concurrentBuild> <customWorkspace>workspace</customWorkspace> <builders> <hudson.tasks.Ant plugin="ant@487.vd79d090d4ea_e"> <targets>custombuild -l build_android.log</targets> <antName>bundledAnt</antName> <buildFile>shell\platforms\android\build.xml</buildFile> </hudson.tasks.Ant> </builders> <publishers> <hudson.tasks.ArtifactArchiver> <artifacts>shell\platforms\android\bin\EdgeHybrid-release.apk, shell\platforms\android\bin\EdgeHybrid-release.aab, shell\platforms\android\build_android.log, resources\offline\html\js\cordova\cordova_plugins_android.js, cordovaPlugins.zip</artifacts> <allowEmptyArchive>false</allowEmptyArchive> <onlyIfSuccessful>false</onlyIfSuccessful> <fingerprint>false</fingerprint> <defaultExcludes>true</defaultExcludes> <caseSensitive>true</caseSensitive> <followSymlinks>true</followSymlinks> </hudson.tasks.ArtifactArchiver> </publishers> <buildWrappers> <EnvInjectBuildWrapper plugin="envinject@2.901.v0038b_6471582"> <info> <propertiesFilePath>$WORKSPACE/build.conf</propertiesFilePath> <secureGroovyScript plugin="script-security@1244.ve463715a_f89c"> <script></script> <sandbox>false</sandbox> </secureGroovyScript> <loadFilesFromMaster>false</loadFilesFromMaster> </info> </EnvInjectBuildWrapper> <hudson.plugins.build__timeout.BuildTimeoutWrapper plugin="build-timeout@1.30"> <strategy class="hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy"> <timeoutMinutes>10</timeoutMinutes> </strategy> <operationList> <hudson.plugins.build__timeout.operations.AbortOperation/> </operationList> </hudson.plugins.build__timeout.BuildTimeoutWrapper> </buildWrappers> </project>
排查与解决建议
修正Ant参数配置
从XML配置看,-l build_android.log是Ant的全局日志参数,不应放在targets字段中。打开Jenkins任务配置,找到Ant构建步骤的Advanced选项,在Arguments中填写-l build_android.log,targets仅保留custombuild。验证Agent端Ant路径有效性
远程登录agent节点,打开cmd执行以下命令测试:C:\Java\Jenkins_Slave\apache-ant-1.10.13\bin\ant.bat -l basic_ant2.log检查是否能正常执行,若报错则排查Ant路径权限、文件完整性。
排查路径长度与特殊字符
Windows默认路径长度限制为260字符,检查workspace路径C:\Java\Jenkins_Slave\.jenkins_android\workspace加上后续构建文件路径是否超出限制,可尝试设置更短的自定义workspace路径测试。检查EnvInject插件的环境变量
查看$WORKSPACE/../../VersionInfo.txt和$WORKSPACE/build.conf中的内容,确认是否包含非法路径字符、空格或特殊变量,避免注入错误的环境变量导致路径解析异常。确认Agent运行权限
检查Jenkins agent服务的运行账号是否拥有Ant安装目录、workspace目录的读写权限,确保能创建日志文件和执行构建操作。
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

