首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure devops yaml:发布到多个web节点

Azure devops yaml:发布到多个web节点
EN

Stack Overflow用户
提问于 2019-11-21 12:35:18
回答 1查看 271关注 0票数 3

我试图弄清楚如何使用yaml管道将应用程序部署到多个web节点环境中。

我正在尝试创建一个有两个阶段的管道。第1阶段将构建项目,第2阶段将将其部署到暂存环境中。此暂存环境(当前)有两个web节点。我不想硬编码实际部署到我的管道中的机器。因此,我想添加一个变量组,其中包含要部署到的web节点,并使用一个“每个”语句来生成每个节点的作业。

但是,由于以下几个原因,这是行不通的:

作业是在读取变量组之前生成的,因此它显示了一个错误,它找不到variable

  • Apparently数组变量,除了内置变量

之外。

所以我的问题是,其他人怎么解决这个问题?我想在中央位置定义要部署到的服务器,而不是在管道定义中。

我的初步尝试印在下面。这不起作用,但它描述了我想要实现的目标。

Main yaml:

代码语言:javascript
复制
variables:
- group: LicenseServerVariables #this contains StagingWebNodes variable

stages:
- stage: Build
  displayName: Build
  <some build steps>

- stage: DeployTest
  displayName: Deploy on test
  condition: and(succeeded(), eq(variables['DeployToTest'], 'true'))
  jobs:
  - template: Templates\Deploy.yaml
    parameters:
      nodes: $(StagingWebNodes)

Deploy.yaml:

代码语言:javascript
复制
parameters:
  nodes: []

jobs:
- ${{ each node in parameters.nodes }}:
  - job: ${{ node }}
    displayname: deploy to ${{ node }}
    pool: Saas Staging
      demands: ${{ node }}
    steps:
    - template: DeployToNode.yaml

编辑:

我离解决方案有点近了。使用对Deploy.yaml的以下调整,我能够让管道与“每个”构造一起工作:

代码语言:javascript
复制
parameters:
  nodes: 
  - name: 'Node1'
    pool: 
      name: StagingPool
      demands: 'Node1'
  - name: 'Node2'
    pool: 
      name: StagingPool
      demands: 'Node2'

jobs:
- ${{ each node in parameters.nodes }}:
  - job: ${{ node.name }}
    displayName: deploy to ${{ node.name }}
    pool: ${{ node.pool }}
    steps:
    - template: DeployToNode.yaml

这样就好点了。但是,我仍然不想在管道yaml源中定义“节点”参数,而是在一个变量组中(或者如果有人有好的建议的话)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-13 17:28:12

随着虚拟机作为环境资源的增加,这个问题已经解决了。现在,我可以使用滚动部署任务将apppicatio部署到所有web节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58975222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档