【发布时间】: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