我们使用经典管道(不是 YAML)。我们的代码存储库包含 SSIS 包的 Visual Studio 项目。目前,每个存储库仅包含一个 SSIS 包,因此当您进行构建时,将使用预定义变量从该包创建构建工件。我们的愿望是允许人们在一个存储库(基于项目)中拥有多个 SSIS 包,然后在进行管道构建时选择要构建和发布的包。
我首选的解决方案是这样的:
- 执行构建时,PowerShell 脚本会枚举 SSIS 包来填充变量。
- SSIS 包名称显示为复选框,允许用户选择要在构建中包含哪些包。
- 使用选定的 SSIS 包创建构建工件。
如果 DevOps Pipelines 无法实现这一点,我会选择此替代解决方案:
- 创建(或编辑)DevOps Pipeline 时,用户使用其存储库中的 SSIS 包名称列表填充变量。
- 执行构建时,SSIS 包名称将显示为复选框,允许用户选择要在构建中包含哪些包。
- 使用选定的 SSIS 包创建构建工件。
我想重申,我们已经有了工作管道,可以创建从 SSIS 包发布的工件。因此,我并不是从头开始,我只是尝试修改我们的流程,以从组中构建和发布选定的 SSIS 包。我花了很多时间在文档和帮助论坛中进行挖掘,但尚未找到一种方法来做到这一点。我洗耳恭听专家们关于 SO 的任何建议。
最佳答案
恐怕上述首选解决方案是不可能的。因为在执行构建过程中无法显示复选框以允许用户选择构建哪些包。
但是,在创建(或编辑)DevOps Pipeline 时填充变量是可以实现的。见下文:
1、在“变量”选项卡中创建变量(选中在队列时间可设置
)
2、在管道中添加多个构建任务,每个包一个。使用customized condition来决定应该构建哪个包。见下文:
选择自定义条件-->并输入条件表达式and(succeeded(), eq(variables.APackageOne, true))
3、当使用队列管道时,他应该修改变量值来选择应该构建哪些包:
使用 yaml 管道和 runtime parameters对于上述情况会更好。
1, 您可以为每个包定义多个运行时参数作为标志。并使用条件来根据选择的参数使用来决定应该构建哪个包。见下文:
parameters:
- name: Package One
type: boolean
default: false
- name: PackageTwo
type: boolean
default: false
- name: PackageThree
type: boolean
default: false
- name: PackageFour
type: boolean
default: false
如果您的 yaml 管道中定义了上述参数。当用户对管道进行排队时,您可以选择包。见下文:
然后使用自定义条件仅构建选定的包:
- task: VSBuild@1
name: BuildPackageOne
inputs:
...
condition: and(succeeded(), eq('${{ parameters.PackageOne }}', true))
关于azure-devops - 显示用户输入的选择列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65146806/