jenkins - 如何从同一个 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"
我还没有尝试过这个脚本,我假设它会因为对相同变量的多个分配而失败。
解决方案
我通过将整个管道包装在一个常规的 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"
}
推荐阅读
- javascript - SmoothScroll 不适用于 Internet Explorer
- r - 我试图理解 predict()
- powershell - Powershell - If 语句,在弹出窗口中返回计数结果
- google-api - 添加学生的课堂 API 调用速度很慢
- perl - 在最新的稳定 Perl 5.32.0 上运行 Net::Async::OpenTracing 时出错
- android - SensorManager.registerListener - samplingPeriodUs 被忽略
- .net-core - 设置响应的状态码对 web api 核心没有影响
- json - jupyter上的folium空白等值线图,可能的JSON格式问题
- sql - sqlalchemy Teradata 的“用户 ID、密码或帐户无效”
- nginx - Letsencrypt 和 Nginx 未能通过 acme 挑战