Jenkins Build提供错误“工作区目录无效”

时间:2014-08-21 12:37:25

标签: ant build jenkins weblogic9.x

我正试图在詹金斯上用蚂蚁进行耳朵任务。 ant任务在我的本地计算机上成功构建。

但是,当我尝试使用Jenkins构建时,我收到以下错误:"指定的工作区无效"。我尝试硬编码工作区值,我尝试从环境变量中获取它,我也尝试在自定义工作区中定义它然后访问它。

但我一直收到以下错误:

[subProjEAR] $ cmd.exe /C '"F:\Build\Ant\apache-ant-1.8.4\bin\ant.bat && exit       %%ERRORLEVEL%%"'
 Buildfile: E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml

init.env:

init.typedefs:
Trying to override old definition of task apt

init:

BUILD FAILED

E:\Jenkins\jobs\ProjDev\workspace\subProjEAR\build.xml:81: Specified workspace directory "E:\Jenkins\jobs\ProjDev\workspace" is not valid.

Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure`

第81行周围的代码如下所示

    <target name="init" depends="init.env,init.typedefs" unless="init.executed">
    <property name="init.executed" value="true" />
    <fail unless="workspace" message="The workspace property needs to be set!" />
    <dirname property="project.dir" file="${ant.file}" />
    <property name="echo.metadata" value="false" />

    <!-- Line below is no 81 -->
    <mdimport workspace="${workspace}" pjdir="${project.dir}" echo="${echo.metadata}"> 


    </mdimport>
    <property name="archive.name" value="${project.name}.ear"/>
    <property name="uri" value=""/>
    </target>

我在本地机器&#34;中创建了一个名为WORKSPACE的环境变量。回声正确打印(C:\ bea \ user_projects \ w4WP_workspaces \ myProjWS)。我还在Jenkins机器上设置了WORKSPACE环境变量。这与Jenkins的工作区相同。詹金斯的回声打印如下:

Buildfile: E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml

init.env:

init.typedefs:
Trying to override old definition of task apt

init:
     [echo] workspace : E:\Jenkins\jobs\ProjectDev\workspace 
     [echo] weblogic workspace : ${env.WORKSHOP_WORKSPACE}


BUILD FAILED
E:\Jenkins\jobs\ProjectDev\workspace\subProjEAR\build.xml:85: Specified workspace directory "E:\Jenkins\jobs\ProjectDev\workspace" is not valid.

请帮忙。

1 个答案:

答案 0 :(得分:0)

从ANT访问WORKSPACE的最佳方式是:

<property environment="env" />
<echo message="${env.WORKSPACE}" />

它似乎不是Jenkins错误,因为Jenkins能够从该工作区成功加载构建文件。该build.xml的line: 81上有什么内容?问题的原因在那里。在line: 81

周围粘贴构建文件的片段

在作者评论后编辑
所以,正如我猜测的那样,这与詹金斯无关。问题在于<mdimport>任务。到目前为止,我已经能够找到关于它的文档,其他it comes from Weblogic

正是这个任务抛出了错误。考虑到Weblogic和Jenkins彼此没什么关系,我怀疑你应该通过Jenkins的workspace来完成这项任务。它可能正在寻找一些Weblogic工作区。

您是否在Jenkins的子文件夹下签出了Weblogic工作区,例如my_checkout_folder?如果是这样,也许您应该使用${workspace}/my_checkout_folder来完成该任务?

this issue from someone中,他们正在阅读${workspace}/workspace.xml文件

this example (看起来与您的非常相似)中,workspace的值来自环境变量WORKSHOP_WORKSPACE。您是否在本地计算机(其工作原理)上设置了该环境变量?

可能原因

在审核你的问题时,我才来找我。

  • 你说它适用于本地机器,但不适用于Jenkins。
  • 如果您在两者上使用相同的ant文件,则意味着您希望本地计算机上存在环境变量workspace,对吧? (否则相同的ant脚本不会在本地工作)
  • Jenkins在执行构建时,拥有拥有环境变量workspace,这与您在本地计算机上可能没有的任何关系。 Jenkins的workspace变量定义了其作业的工作目录。
  • 即使您在Jenkins计算机上手动设置全局workspace环境变量,每次运行时它都会被作业workspace覆盖。

进行以下测试:

  • 本地计算机上的echo workspace环境变量
  • 在Jenkins工作中,使用“执行shell”(或“执行Windows批处理命令”)从作业中回显workspace

将结果粘贴到此处。但你也可以自己比较它们。