Continuous integration 詹金斯分布式建筑配置

Continuous integration 詹金斯分布式建筑配置,continuous-integration,jenkins,Continuous Integration,Jenkins,我正在尝试以4种不同的配置构建一个软件项目:32位调试、32位发布、64位调试、在Windows7机器上进行64位调试。我们的设置目前涉及主0执行器和2个从机,每个从机有2个执行器。一个从机是Mac,另一个是Windows机器——我目前正在尝试在Windows上构建 我的配置矩阵设置如下: 第1轴:用户定义轴,名称:架构,值:32位,64位 第二轴:从,名称:OS,我选择了代表Windows机器的节点 第三轴:用户定义轴,名称:BuildType,值:debug,release 矩阵 +----

我正在尝试以4种不同的配置构建一个软件项目:32位调试、32位发布、64位调试、在Windows7机器上进行64位调试。我们的设置目前涉及主0执行器和2个从机,每个从机有2个执行器。一个从机是Mac,另一个是Windows机器——我目前正在尝试在Windows上构建

我的配置矩阵设置如下:

第1轴:用户定义轴,名称:架构,值:32位,64位 第二轴:从,名称:OS,我选择了代表Windows机器的节点 第三轴:用户定义轴,名称:BuildType,值:debug,release 矩阵

+----------------------+-------+--------+
| Configuration Matrix | 32bit | 64-bit |
+----------------------+-------+--------+
| Debug                |   X   |    X   |
+----------------------+-------+--------+
| Release              |   X   |    X   |
+----------------------+-------+--------+ 
它能够成功地将源代码从Git签出到工作区中的所有4个构建文件夹中。然而,在定义构建步骤时,我会迷失方向。我选择执行Windows批处理命令。这就是我丢失的地方…我应该在框中指定什么,以便它知道根据4个构建中的哪一个调用哪个批处理文件

我假设它与Jenkin的环境变量有关,但我设想做如下事情:

if (Windows Slave Machine)
{
    if (Architecture == 32bit)
    {
        if (BuildType == debug)
        {
            //Call win_32bit_debug.bat
        }
        else
        {
            //Call win_32bit_release.bat
        }
    }
    else
    {
        if (BuildType == debug)
        {
            //Call win_64bit_debug.bat
        }
        else
        {
            //Call win_64bit_release.bat
        }
    }
}

您不必在Execute Windows batch命令中写入此log if语句。 请尝试使用您已经定义的变量,如下所示:

win_%Architecture%_%BuildType%.bat

为什么不创建4个调用不同批处理文件的作业?把这一切塞进一份工作似乎不必要的复杂,我理解。但我觉得维护单独的作业,特别是因为它最多可扩展到24个配置,会很麻烦,特别是因为除了执行哪个批处理文件之外,所有设置都是相同的。您是否通过CI模型使用了它,在每次提交后它都会运行,或者这是一个由用户运行的手动作业?Gerrit会在每次提交后在新的补丁集上启动它,所以是的。那么,您如何定义应该基于给定提交构建什么呢?似乎你应该建造一切。。。。