【问题标题】:Jenkins Build is giving error "workspace directory not valid"Jenkins Build 给出错误“工作区目录无效”
【发布时间】:2014-10-15 02:24:19
【问题描述】:

我正在尝试在 Jenkins 上使用 ant 运行 ear 任务。 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>

我在“本地机器”中创建了一个名为 WORKSPACE 的环境变量。回显可以正确打印 (C:\bea\user_projects\w4WP_workspaces\myProjWS)。我还在 Jenkins 机器上设置了 WORKSPACE 环境变量。这是与 Jenkins 相同的工作区。 Jenkins 上的 Echo 打印以下内容:

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.

请帮忙。

【问题讨论】:

  • 如果 Jenkins 不是当前所有者,请尝试让 Jenkins 成为工作区和其中文件的所有者。如果您手动创建了工作区,则应将文件移出,运行 Jenkins,Jenkins 将为该作业创建自己的工作区。
  • 感谢 elrobe 的回复。工作区仅由 Jenkins 创建。在构建之前,Jenkins 会将所有项目文件从 cvs 检出到工作区中,然后在检出完成后,它会构建它,这就是错误出现的时候。

标签: ant build jenkins weblogic9.x


【解决方案1】:

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

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

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

周围

作者 cmets 后编辑
所以,正如我猜测的那样,这与詹金斯无关。问题在于&lt;mdimport&gt; 任务。到目前为止,我已经能够找到关于它的 zero 文档,除了 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

在此处粘贴结果。但是您也可以自己比较它们。

【讨论】:

  • 是的,目前我只使用这样的工作区。
  • 感谢@Slav 的回复。我通过添加工作区的回显值修改了我的问题。 Jenkins 打印出正确的工作空间值,但错误仍然存​​在。
  • 我只能说mdimport 任务似乎期望WORKSPACE 的值与Jenkins 的值不同。我不确定mdimport 任务来自哪里...... Weblogic?我建议您使用 Weblogic 制作支持票,并询问他们期望的价值
猜你喜欢
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 2017-01-16
相关资源
最近更新 更多