【问题标题】:Can an Azure YAML Pipelines <deployment job> use variable environments?Azure YAML Pipelines <部署作业> 可以使用可变环境吗?
【发布时间】:2020-01-30 21:28:29
【问题描述】:

我阅读了环境文档here 以及在环境资源下打开的问题,但是我发现无法实现我的目标:

我想使用参数化的 yaml 模板来部署到多个环境,如下所示:

parameters:
  pool_name: ''
  aks_namespace: ''
  environment: ''

jobs:
  - job: preDeploy
    displayName: preDeploy
    pool:
      name: $(pool_name)
    steps:
      - template: cd_step_prerequisites.yml


  - deployment: Deploy
    displayName: Deploy
    dependsOn: preDeploy
    condition: succeeded()
    variables:
      secret_name: acrecret
    pool:
      name: dockerAgents
    **environment: '$(environment).$(aks_namespace)'**
    strategy:
      runOnce:
        deploy:
          steps:
          - template: cd_step_aks_deploy.yml


  - job: postDeploy
    displayName: postDeploy
    dependsOn: Deploy
    condition: succeeded()
    pool:
      name: $(pool_name)
    steps:
      - template: cd_step_postrequisites.yml

我想使用这种方法,以便我只在我的代码旁边托管一个最小的 pipeline.yml,然后我会将所有模板放在不同的 repo 中并从主管道中调用它们,如下所示:

resources:
  repositories:
    - repository: self
    - repository: devops
      type: git
      name: devops

  - stage: CD1
    displayName: Deploy to Alpha
    jobs:
      **- template: pipeline/cd_job_api.yml@devops**
        parameters:
          pool_name: $(pool_name)
          aks_namespace: $(aks_namespace)
          app_name: $(app_name)
          app_image_full_name: $(app_image_full_name)
          environment: alpha

然后我将能够传递 $environment 变量,以便从一个模板操作多个部署目标(AKS 集群/命名空间组)。 目前这似乎是不可能的,因为当我尝试运行我的管道时默认 AzureDevOps 解析器失败,消息“$(环境)环境不包含 x 命名空间”告诉我变量没有得到扩展。

这个计划会很快实施吗?如果没有,是否有任何替代方案可以仅使用一个参数化作业模板来部署到多个环境?

【问题讨论】:

    标签: azure kubernetes azure-devops yaml azure-pipelines


    【解决方案1】:

    我认为您需要解析文件并用脚本替换标记,或者应该有相应的步骤。

    您的主要选择是helm。它允许创建模板并传入变量以呈现这些模板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多