gpt4 book ai didi

ant - 如何从 Ant 确定 Jenkins 构建目录?

转载 作者:行者123 更新时间:2023-12-04 10:01:21 25 4
gpt4 key购买 nike

我正在尝试迁移我编写的 Ant 脚本,以从 Jenkins 框架内构建和部署项目(而不是从 SVN 提交后 Hook 触发,这是我们最初处理事情的权宜之计)。一切都很好,除了我需要为部署步骤暂存文件并且我想将它们填充到 Jenkins 为该工作创建的“构建”目录中(并且由于我的 build.xml 位于非项目特定的位置,${ basedir} 和 ${user.dir} 不指向所需的位置)。

在 Jenkins 配置中,我设置了以下内容:

[ Jenkins ]
构建记录根目录:E:/builds/${ITEM_FULLNAME}

[特定工作]
构建文件:C:\vc-tools\shadow\build.xml

运行构建时,会适本地启动脚本并创建特定于作业的构建目录,例如

E:\builds\Test\2012-08-07_12-51-21

我想从构建脚本中获取这个目录,但不知道如何。我尝试过的一些事情:

 [echo] ${basedir}: C:\vc-tools\shadow
[echo] ${user.dir}: C:\vc-tools
[echo] ${env.workspace}: C:\Program Files (x86)\Jenkins\workspace\Test
[echo] ${env.build_id}: 2012-08-07_12-51-21
[echo] ${jenkins_home}: C:\Program Files (x86)\Jenkins
[echo] ${BuildDir}: E:/builds/${ITEM_FULLNAME}

注意:对于最后一个,我尝试传入:
 BuildDir=E:/builds/${ITEM_FULLNAME}

作为从 Jenkins 中的作业配置的属性(显然 ${} 扩展不会在这种情况下发生)。

根据 documentation ,没有设置为完整构建目录路径的特定环境变量——我可以通过硬编码 E:\builds root 并添加 ${env.build_id} 来伪造它,但希望有一种更简单的方法来从 Jenkins 公开的内容(Ant 属性和环境变量)中访问完整路径,以使脚本更加灵活。

我正在使用 Jenkins 版本 1.476。

谢谢

最佳答案

对于您的项目来说,在源代码旁边包含其构建逻辑的副本总是一个好主意。它使您的构建更易于跨机器移植。

话虽如此,设置包含通用共享构建逻辑的构建文件也很常见。 ANT 定义了以下任务来支持此类事件:

  • include
  • import

  • 因此,一个可能的解决方案是在项目目录的根目录中存储一个简单的 build.xml 文件:
    <project name="my project" default="build">

    <include file="C:\vc-tools\shadow\common-build-1.0.xml" as="common"/>

    <target name="build" depends="common.build"/>

    </project>

    备注:
  • 在通用构建文件名中使用修订号是个好主意。这有助于保持与使用旧逻辑的其他构建的向后兼容性。

  • 更新

    当 Jenkins 运行作业时设置了 environment variables .

    以下 ANT 逻辑将打印 Jenkins 工作区目录的位置:
    <property environment="env"/>

    <target name="run">
    <echo message="Jenkins workspace: ${env.WORKSPACE}"/>
    <echo message="Job directory: ${env.WORKSPACE}../../jobs/${env.JOB_NAME}"/>
    <echo message="Build data: ${env.WORKSPACE}../../jobs/${env.JOB_NAME}/build/${env.BUILD_ID}"/>
    </target>

    关于ant - 如何从 Ant 确定 Jenkins 构建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11851128/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com