我想为一个项目设置构建,该项目在Windows和Unix(以及其他平台)上都可以构建。我发现这个问题,它问的是同样的事情,但我真的不明白答案。为什么我需要三个矩阵项目(而不是三个自由样式项目),每个平台一个?为什么我不能将它们全部放在一个矩阵中,其中包括平台和(例如)gcc版本在一个轴上,以及我的软件版本在另一个轴上?
我还阅读了这篇博客文章,但那是在同一台机器上构建所有内容,只是使用不同的Python版本。
简而言之:大多数人如何配置针对许多不同平台的多配置项目?
这两种类型的工作有不同的功能:
如果您想在Windows和Unix上构建项目,您有两个选择:
您可以将您的gcc版本放在一个轴上,将软件版本放在另一个轴上。没有理由不能这样做。
您链接的问题提出了一个公正的观点,但与您的问题没有直接关系:在他的情况下,他有一个多配置工作A,如果成功,则触发另一个工作B。现在,在多配置工作中,如果其中一个配置失败,则整个工作将失败(显然,因为您希望您的项目在所有配置上都能成功构建)。
我的看法是,对于在多个平台上构建同一项目,更好的方法是使用多配置风格的工作任务。
另一种选项是使用Python构建步骤来检查当前操作系统,然后调用适当的设置或构建脚本。在Python脚本中,您可以将更新后的环境保存到文件中,并使用EnvInject插件再次注入环境以供后续构建步骤使用。根据您的构建环境大小,您还可以使用多平台构建工具,例如SCons。
from py.path import local
)。 - Jan Vlcinsky我为什么不总是选择多配置作业类型?
有一些原因可以想到:
一个在Windows上运行批处理文件和在Unix上运行shell脚本的技巧:
在Unix上,使批处理文件以0退出状态退出:
ln -s /bin/true /bin/cmd
在Windows上,要么找到一个true.exe
,将其命名为sh.exe
并将其放置在PATH中的某个位置。
或者,如果您在Windows上安装了任何sh.exe
(来自Cygwin、Git或其他来源),请将其添加到Jenkins shell脚本的顶部:
[ -n "$WINDIR" ] && exit 0
如果您想选择在哪个从机上运行作业,您需要使用多配置项目(否则您将无法选择/限制在哪些从机上运行它 - 有三种方法可以做到这一点,但我已经尝试了所有方法(Tie插件仅适用于主任务,高级项目选项中的限制也不是绝对安全的触发器,因此您需要使用已被证明今天可以正确工作的从轴。)