You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline中替换Kubernetes YAML文件的环境变量

可行实现方案

以下三种方案都可以实现需求,可根据你的流水线配置选择:

方案1:用sed命令直接替换(无需额外安装扩展)

直接在获取git哈希的任务后新增Bash任务,替换deployment.yaml中的固定值:

- task: Bash@3
  displayName: 替换deployment.yaml中的GIT_HASH值
  inputs:
    targetType: 'inline'
    script: |
      # 替换为你实际的deployment.yaml文件路径
      sed -i "s/dummy_value/$(git-hash)/g" ./manifests/deployment.yaml

方案2:修正replacetokens任务配置

你之前使用replacetokens失败大概率是占位符格式不匹配,该扩展默认使用#{变量名}#作为占位符标识:

  1. 先修改你的deployment.yaml中GIT_HASH的取值为占位符格式:
containers:
  - name: frontend
    env:
    - name: GIT_HASH
      value: #{git-hash}#
  1. 新增replacetokens任务配置如下:
- task: qetza.replacetokens.replacetokens-task.replacetokens@3
  displayName: 替换manifest文件中的变量
  inputs:
    rootDirectory: '$(Build.SourcesDirectory)'
    targetFiles: './manifests/deployment.yaml' # 替换为实际文件路径
    encoding: 'auto'
    tokenPrefix: '#{'
    tokenSuffix: '}#'
    actionOnMissing: 'warn'

方案3:部署时直接注入环境变量(无需修改原yaml文件)

如果不想改动原始的deployment.yaml文件,可以在部署完成后直接用kubectl命令注入环境变量:

- task: Kubernetes@1
  displayName: 注入GIT_HASH环境变量
  inputs:
    kubernetesServiceEndpoint: '你的Rancher集群服务连接名' # 替换为你配置的集群连接名
    namespace: '你的应用部署命名空间'
    command: 'set'
    arguments: 'env deployment/frontend GIT_HASH=$(git-hash)'

注意事项

如果获取git-hash变量的任务和后续替换/部署任务不在同一个作业/阶段,需要在设置变量时标记为输出变量:
将echo "##vso[task.setvariable variable=git-hash;]$short_hash"修改为
echo "##vso[task.setvariable variable=git-hash;isOutput=true]$short_hash"
跨阶段引用时格式为$[stageDependencies.<阶段名>.outputs['<获取哈希任务名>.git-hash']]。

内容的提问来源于stack exchange,提问作者Nespony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:09