gpt4 book ai didi

jenkins - 如何在 Jenkins 中声明全局变量并在每个单独项目的 MSBuild 任务中使用它

转载 作者:行者123 更新时间:2023-12-02 18:22:51 24 4
gpt4 key购买 nike

我正在将我们的 CI 平台从 CruiseControl 转换为 Jenkins,并且似乎无法弄清楚似乎应该相对简单的事情(免责声明 - 我不是 CI 或构建自动化专家,但这已被抛弃放在我的腿上,我觉得很有趣)

在 CruiseControl 中,我可以声明如下变量:

<cb:define rootdir="J:\SOURCES\" />
<cb:define logdir="J:\SOURCES\buildlogs" />
<cb:define iisdir="J:\IIS\" />
<cb:define artifacts="artifacts\" />

然后将它们用作 MSBuild 任务的一部分

<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>$(rootdir)$(ProjectName)</workingDirectory>
<projectFile>$(ProjectName).sln</projectFile>
<buildArgs>/p:BuildDate="1";OutDir="$(iisdir)$(ProjectName)\bin\\";WebProjectOutputDir="$(iisdir)$(ProjectName)\\"</buildArgs>
<targets>Rebuild;$(ProjectName)</targets>
<timeout>180</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>

如果根目录或 IIS 目录发生更改,它可以轻松地立即应用于所有项目。我们有大约 60 个项目设置,因此逐个项目地完成这个项目将非常耗时。将其迁移到 Jenkins,MSBuild 命令行参数现在看起来像这样(部分示例,但包括相关内容):

OutDir="J:\IIS\ProjectName\bin\\";WebProjectOutputDir="J:\IIS\ProjectName\\"

IIS 目录是硬编码的。我需要它更像这样:

OutDir="${IIS_DIR}\ProjectName\bin\\";WebProjectOutputDir="${ITEM_ROOTDIR}\ProjectName\\"

有办法做到这一点吗?我尝试了配置切片插件,它很有用,但从我看来不符合这个需求

最佳答案

您可以使用内置的 Jenkins 功能来做到这一点:

enter image description here

然后你需要扩展你的变量。实际上,这取决于您在哪里使用它。

例如:%MSBuild%%IIS_DIR% 用于“执行 Windows 批处理命令”构建步骤。其他构建步骤(和插件)可能会以不同的方式使用它。

关于jenkins - 如何在 Jenkins 中声明全局变量并在每个单独项目的 MSBuild 任务中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537448/

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