如何在 Azure DevOps 中替换“deployment.template.json”中的 IoT Edge 环境变量

How to substitute IoT Edge env variables in “deployment.template.json” in Azure DevOps

我想将 Azure DevOps 用于 IoT Edge 项目,其中一些机密应通过 json 文件传递​​。 这是 deployment.template.json 文件的片段:

        "env": {
      "mappedFolder": { "value": "/temp" },
      "netatmoClientId": { "value": "${netatmoClientId}" },
      "netatmoClientSecret": { "value": "${netatmoClientSecret}" },
      "netatmoUsername": { "value": "${netatmoUsername}" },
      "netatmoPassword": { "value": "${netatmoPassword}" },

本地一切正常。我有 .env 文件,json 中的值将在构建过程中被正确替换。

如何在 Azure DevOps 中使用相同的行为?

我已经声明了 devops 管道变量,但是 json 文件中的占位符没有从变量中替换。

您可以在 Azure DevOps 发布管道中使用此任务Replace Tokens

第 1 步: 像这样更新令牌前缀。

第 2 步:像这样更新您的模板。

"netatmoClientId": { "value": "$(netatmoClientId)" },
"netatmoClientSecret": { "value": "$(netatmoClientSecret}) },
"netatmoUsername": { "value": "$(netatmoUsername)" },
"netatmoPassword": { "value": "$(netatmoPassword)" }

第三步:在Variable Groups或Release Pipeline Variables中定义以上变量

步骤 4:使用 替换令牌 任务,如下所示。

这个要求可以通过在 Azure DevOps 中使用秘密文件来实现。

  1. .env 文件必须上传到 Azure Devops 库“安全文件”
  2. 正在将任务添加到管道“下载安全文件”并指向 .env 文件
steps:
- task: DownloadSecureFile@1
  displayName: 'Download secure file'
  inputs:
    secureFile: .env
  1. 将任务添加到管道“将文件复制到”以将 env 文件复制到工作目录。
steps:
- task: CopyFiles@2
  displayName: 'Copy Files to: MyProjectName'
  inputs:
    SourceFolder: '$(Agent.TempDirectory)'
    Contents: .env
    TargetFolder: MyProjectName

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/download-secure-file?view=azure-devops