azure - 提供数组作为 devops 管道的参数

标签 azure azure-pipelines devops

我刚刚开始使用 azure 管道。我们希望不再使用 Arm 模板和参数文件手动部署 Azure 资源,而是使用 DevOps 管道进行部署。

虽然使用单个模板+参数的 json 文件来完成此操作很简单,但我看不到处理多个文件的明智方法。

我已经看到有关使用数组作为管道模板参数的讨论 - 这可行,但除了在管道 yaml 文件中手动设置参数数组之外,我看不到如何创建参数数组。

一个更有用的解决方案是从文本文件中读取其内容 - 我们可以在读取文件之前生成该文本文件,或者 - 更理想的是 - 通过引用包含 json 的存储库中的文件夹的目录列表模板的参数文件对它们来说都是通用的。

yaml 管道中的代码片段能够传回单个字符串变量,例如

script: |
      # Get list of files in folder
      $fl =  get-childitem ./templates | select-object -expand name
      Write-output  "##vso[task.setvariable variable=fl]$fl"
      

但是所有这些产生的都是一个我无法分割的字符串。

类似地,我可以使用一段代码来动态创建文件列表 - 但同样,我无法看到如何在管道中读取它。

是否有一种方法可以让我在 DevOps 管道中动态设置参数数组的内容,或者从文件中读取数组?

或者我应该放弃并在 powershell 脚本中编写整个内容并使用任务来运行它,而不是尝试在 devops 中使用 azure 部署任务?

谢谢 戴夫

最佳答案

1.读取String文件,并将字符串拆分成yaml上的数组

创建 yaml 构建并添加任务电源 shell。我们还可以使用扩展名 Replace Tokens更新文件的值

$ourfiles = Get-Content "file path"
Write-Output $ourfiles

$CharArray =$ourfiles.Split(" ")
$CharArray

2.我们也可以在yaml中使用each,请引用这个doc了解更多详情。

模板文件:test.yml

parameters:
- name: InstanceArgs 
  type: object
  default: [] 
stages:
  - stage: deploy
    displayName: deploy
    jobs:
      - ${{ each arg in parameters.InstanceArgs }}:
        - deployment: ${{ arg.value }}
          displayName: ${{ arg.value }}
          environment: Development
          strategy:
            runOnce:
              deploy:
                steps:
                - script: echo Hello, world!

YAML 构建

extends:
  template: test.yml
  parameters:
    InstanceArgs:  
      In1 : _1
      In2 : _2

希望对你有帮助。

关于azure - 提供数组作为 devops 管道的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62934693/

相关文章:

ubuntu - 不支持 Ubuntu 中的 Docker 将文件系统切换到覆盖?

devops - AWS Aurora 无服务器 (MySQL) 与 AWS QuickSight

python - 如何对 Azure 日志提取 API 进行故障排除

azure-devops - Azure DevOps : Console output for green tests is missing

git - 解决 merge 冲突 GIT Azure-devops 服务器端

.net-core - Azure Pipelines 托管代理尚不支持 .Net Core 3.1?获取NETSDK1045

azure - 使用 Bicep 创建新订阅

ubuntu - 如何在特定端口上运行 Next.js 项目?

json - 从azure逻辑应用程序中的JSON对象文件返回特定属性(文本)

Azure Web 应用程序部署