Jenkins 如何将MSBuild设置为多次编译?

Jenkins 如何将MSBuild设置为多次编译?,jenkins,msbuild,Jenkins,Msbuild,在我们当前的产品中,我们有多个VisualStudio解决方案文件和多个项目。 所有这些都是相互关联和相互依存的。 因此,第一个项目依赖于第三个和第三个在第四个和第四个在第一个创建的文件,等等。 因此,如果我们编译第一个项目,它将失败,因为第三个项目尚未生成二进制文件,我们继续编译第二个项目,它也会失败,然后第三个项目将成功,因为第一个和第二个项目已部分编译且相关文件可用。因此,一旦所有项目都编译完毕,我将重试失败的项目,它们将成功 因此,为了自动化所有这部分,我已经用python编写了脚本,我

在我们当前的产品中,我们有多个VisualStudio解决方案文件和多个项目。 所有这些都是相互关联和相互依存的。 因此,第一个项目依赖于第三个和第三个在第四个和第四个在第一个创建的文件,等等。 因此,如果我们编译第一个项目,它将失败,因为第三个项目尚未生成二进制文件,我们继续编译第二个项目,它也会失败,然后第三个项目将成功,因为第一个和第二个项目已部分编译且相关文件可用。因此,一旦所有项目都编译完毕,我将重试失败的项目,它们将成功

因此,为了自动化所有这部分,我已经用python编写了脚本,我将重试5次,如果完成5次限制,构建过程将失败

完整的构建过程我已经用python编写了自己的逻辑

现在的要求是,我们希望从这个自定义编写的代码切换到现有的自动化工具(如Jenkins),以便它具有良好的结构。但是我在MSBuild中没有看到项目编译重试选项


任何人都可以提出建议。

你需要在詹金斯有好几份工作。假设我们需要按以下顺序执行msbuild:A.sln、B.sln、C.sln

你需要3个詹金斯的工作。作业A执行后,您需要告诉Jenkins触发作业B。作业B完成后,触发作业C

我以前使用过一个名为parameterized trigger的插件:


例如,如果您需要作业A中的人工制品,则需要执行批处理文件步骤以将dll复制到作业B的工作区

我在FB中发布了相同的问题。但是得到了一些奇怪的回复来改变整个架构。如果我们有python等语言的解决方案来创建自定义构建脚本。我认为在现有的工具中也会有解决方案。我不认为有必要改变产品架构以将其与jenkins集成。在这里删除相同的通信链。我给出了关于这个问题在FB中发生的对话的摘要。更具体地说,当前的产品解决方案文件在订单方面没有任何问题,但它就像圆圈一样…就像1和2个项目文件都是相互依赖的..因此1在没有2的情况下失败,而2在1部分生成时成功..因此我将在2之后重试1。。为了使它成功…但是如果我先尝试2,那么它将失败,因为1中的文件不可用。。当完整的结构更改时更改代码是不可行的,您称之为“项目编译重试选项”的内容在MSBuild(或我听说过的任何其他生成系统)中根本不存在(以这种形式),可能是因为这是一种非常糟糕的操作方式。摆脱循环依赖,从一开始就按照正确的顺序构建。手动或自动指定解决方案中项目之间的依赖关系。或者,如果您坚持,只需编写一个MSBuild文件,该文件将生成每个项目5次,忽略前4次的错误。