我将我们的CI平台从CruiseControl转换为Jenkins,并且似乎无法找出似乎应该比较简单的东西做(声明 - 我不是CI或建立自动化专家,但是这被倾入我的腿上,我觉得很有意思)如何在Jenkins中声明一个全局变量并将其用于每个单独项目中的MSBuild任务
在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个项目设置,因此按项目进行这个项目非常耗时。迁移这詹金斯MSBuild的命令行参数现在这个样子(部分样品,但包括什么是相关的):
OutDir="J:\IIS\ProjectName\bin\\";WebProjectOutputDir="J:\IIS\ProjectName\\"
的IIS目录是硬编码。我需要这样的更多像这样:
OutDir="${IIS_DIR}\ProjectName\bin\\";WebProjectOutputDir="${ITEM_ROOTDIR}\ProjectName\\"
有没有办法做到这一点?我试过配置切片插件,这是有用的,但不符合我的需求
这对我有用 – TechDawg270