首页 > 解决方案 > 如何从同一个 Jenkins 构建管道打包多个 MSI

问题描述

我有一个通用代码库,需要将其部署到两个不同的网站。我最近将代码库移至 Bit Bucket,并使用 Jenkins 来自动化我的构建。我想在我的 Jenkins 作业中从相同的构建输出构建两个 wix 脚本化的 MSI 包。这可能吗?

我试图创建第二个存储桶存储库并在原始存储库中构建代码以创建 wix 所需的输出,但原始存储库对第二个存储库不可见。

我假设如果我只编写第二个打包步骤,Jenkins 脚本就会窒息。

//Build the code
jenkinsBuildAgent = "msbuild"
msbuildSolutionFile = "My_only_solution_file.sln"

//Package & Publish artifacts (1)
artifactName = "My_First_Artifact"
artifactVersion = "1.0.0"
artifactPackageType = ["msi"]
msiGenerationParams = "My_First_Wix_Script.wxs"

//Package & Publish artifacts (2)
artifactName = "My_Second_Artifact"
artifactVersion = "1.0.0"
artifactPackageType = ["msi"]
msiGenerationParams = "My_Second_Wix_Script.wxs"

我还没有尝试过这个脚本,我假设它会因为对相同变量的多个分配而失败。

标签: jenkins

解决方案


我通过将整个管道包装在一个常规的 for 循环中来解决这个问题。在管道工件的主体中,我有条件地设置了属性。这很有效,两个 MSI 都被打包并发布了。

//Package & Publish artifacts
artifactVersion = "1.0.0"
artifactPackageType = ["msi"]
if (i == 0)
{
    artifactName = "My_First_Artifact"
    msiGenerationParams = "My_First_Wix_Script.wxs"

}
else 
{
    artifactName = "My_Second_Artifact"
    msiGenerationParams = "My_Second_Wix_Script.wxs"
}

推荐阅读