我正在尝试为所有环境/阶段创建部署管道YAML模板。我已经在Azure DevOps上设置了环境,这样我就可以在部署测试和产品环境之前添加检查和批准。我为每个阶段设置了一个库组,每个阶段都有一个名为“env”的变量,该变量定义了管道中运行的当前阶段。出于某种原因,部署作业下的environment属性(请参见下面的代码段)不会读取该变量。
以前是否有人遇到过此问题,或者是否有原因无法读取该特定属性的变量?
注意:我已经测试了这些变量,它们确实有效,例如,阶段属性输出为“部署-开发/测试/产品”(取决于环境)
- stage: deploy-$(env)
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-$(env)'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
您不能这样做,因为它必须在编译阶段知道。
但您可以尝试以下方法(将此文件命名为deploy.yml):
parameters:
- name: env
type: string
default: 'dev'
stages:
- stage: deploy-${{ parameters.env }}
jobs:
- deployment: DeployWeb
displayName: deploy Web App
pool:
vmImage: 'Ubuntu-latest'
# creates an environment if it doesn't exist
environment: 'smarthotel-${{ parameters.env }}'
strategy:
runOnce:
deploy:
steps:
- script: echo Hello world
然后你需要运行如下(在build.yml文件中):
stages:
- template: deploy.yml
paramaters:
env: dev
- template: deploy.yml
paramaters:
env: qa
- template: deploy.yml
paramaters:
env: prod
我正在Azure Devops中创建CICD管道。 我有一个动态设置名称的管道。 然后在构建阶段我更新它 我目前有3个阶段 构建 建立起来 通过VSO命令设置构建名称 发布神器 下载构件并部署到开发环境 下载工件并部署到测试环境 实际上,我正在使用Azure Devops中的环境来跟踪所有部署,这就是问题所在。在“管道”视图中正确更新管道生成编号时 当我转到环境选项卡时,显示的是未更新的构建名称。
我在Azure DevOps中创建了三个变量组,其中包括三个变量: 网络应用开发 每个变量组都有一个名为环境的变量,其值被适当命名以与环境相对应。 我现在想做的是引用Azure Pipeline yaml文件中的每个环境变量。下面的屏幕截图描述了我当前如何在管道开发阶段引用变量组WebApp-DEV。 但是,我如何调用或引用每个变量组的环境值,正如上面对WebApp DEV的描述?换句话说,从变量
假设我在Azure上有3个环境:开发、测试和产品。我有相同的管道来构建和部署每个环境的资源和代码,除了两个不同之处: 不同的触发分支 对于这种情况,正确的方法是什么?因为我至少想到了3个,没有一个是完美的: 选项1:我想我可以在Azure DevOps上创建一个管道(由3个分支中的任何一个触发),每个环境有3个阶段,每个阶段根据源分支添加一个要运行的条件,如下所示: 并且在每个阶段引用不同的变量。
问题内容: 通过测试我发现 这是不合法的: 但这是: 为什么? 问题答案: 第一种方法不合法,因为编译器很明显不能使用在那里声明的声明,因为在该循环中不能再包含其他语句。基本上,该位置的新变量声明将超出下一个语句的范围,因此没有任何用处。 在第二种情况下,循环后跟花括号,这创建了一个新的作用域,您可以使用该变量。
问题内容: 我希望编写python脚本,通过在要执行一些模拟代码的任何目录中运行该脚本来创建一些适当的环境变量,并且我读到我无法编写脚本来使这些环境变量持久存在于其中。 Mac OS终端。有两件事: 这是真的? 和 看起来这将是一件有用的事情;为什么一般不可能呢? 问题答案: 您无法通过python做到这一点,但是一些聪明的bash技巧可以做类似的事情。基本理由是:每个进程的内存空间中都存在环境变
问题内容: 是否有任何环境变量可用于获取Jenkins管道标题? 我知道我们可以使用它来获得自由职业的头衔,但是有什么可以用来获取管道名称的东西吗? 问题答案: 您可以使用相同的名称(例如或)从groovy访问相同的环境变量。 从文档中: 可以从Groovy代码中以env.VARNAME或仅以VARNAME的形式访问环境变量。您也可以写入这些属性(仅使用env。前缀): 这些定义也将在构建期间或构