【问题标题】:Unable to replace docker tag in release pipeline automatically无法自动替换发布管道中的 docker 标签
【发布时间】:2021-05-23 20:57:45
【问题描述】:

我的构建管道位于 azureDevopsservices 中,我的发布管道位于 azuredevopsServer 中

构建管道正在创建 docker 映像并保存在映像 azure 容器注册表中并且工作正常

发布管道正在使用帮助部署对象在 AKS 集群中部署 docker 映像

但我无法动态替换部署文件中的图像标签。

我正在寻找的是一旦构建管道完成,发布管道应该自动触发,它应该自动替换 docker 标签。

我也尝试过使用替换令牌任务,但它不起作用。

【问题讨论】:

  • 您提供哪些输入?您的部署清单如何工作? “不工作”是什么意思?您收到错误消息吗?
  • 部署清单正在工作它选择我指定的相同图像示例图像:mycontainerregistry/myapp:20210221.3

标签: docker kubernetes azure-devops azure-pipelines-release-pipeline azure-devops-server-2019


【解决方案1】:

根据您的需求,您可以参考以下流程在Azure Devops服务器上自动触发发布,并将标签替换为变量。

我的构建管道位于 azureDevopsservices 中,我的发布管道位于 azuredevopsServer 中

如需在 Azure Devops Server 中自动触发发布,您可以参考其他工单中的my reply

在发布管道中替换 docker 标签

据我所知,替换令牌任务可以满足你的要求。

从您的 docker 标签格式来看,这似乎是 Azure Devops Service Build Pipeline 中的 $(build.buildnumber) 变量。

  1. 您可以在 Release Pipeline 中设置变量并设置Settable at release time 选项。

  1. 在部署清单中,您可以将图像设置为以下格式:image:mycontainerregistry/myapp:#{Version}#

  2. 使用替换令牌任务并选择目标文件。

  1. 当您使用 Rest API 触发发布时,您可以同时将变量传递给发布管道。

示例如下:

$token = "PAT"

$url = "https://{instance}/{collection}/{project}/_apis/release/releases?api-version=5.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
   "definitionId": ID,
  "variables": {
       "Version": {
         "value": "$(Build.buildnumber)"
       }
 
   }
}
'@
     
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多