首页 > 解决方案 > 未从 Azure Devops 管道中的变量组中的变量获取任何值

问题描述

我真的在为我的变量组中名为“android-pipeline”的一些变量而苦苦挣扎。在这个变量组中,我有一些带有值的变量。但是当我运行管道时,它无法读取我的变量组中的值。:(

示例:在变量组中,我有一个名为 $(key.alias) 的变量,我正在尝试获取该变量后面的值,请参见下面的代码。

我认为语法(或我使用它的方式)有问题,但我找不到使用 $(key.alias) 变量的正确语法。

此外,在变量组内,我确保所有管道都可以访问此变量组。有人可以告诉我如何获取 $(key.alias) 变量背后的值并在任务中使用它吗?我尝试遵循许多指南,但没有一个对我来说足够清楚或不工作

variables:
  group: android-pipeline
  buildConfiguration: 'Release'

stages:
stage: Publish
    dependsOn: Build
    displayName: Sign Apps 
    jobs:

        - task: AndroidSigning@3
          displayName: Android App signing
          inputs:
            apkFiles: '**/*.apk'
            apksignerKeystoreFile: '$(androidKeyStore)'
            apksignerKeystorePassword: '********'
            apksignerKeystoreAlias: '$(key.alias)'
            apksignerKeyPassword: '*******'
            apksignerArguments: --out $(outputDirectory)/app.release.apk
            zipalign: true

标签: azureazure-devopsazure-pipelines

解决方案


由于您正在混合组和内联变量,因此您可能需要将其从映射更改为序列,如下所示:

variables:
- group: android-pipeline
- name: buildConfiguration
  value: Release

通常,当您声明变量时,您可以像名称/值对的映射或哈希表一样执行它们:

variables
  var1: value1 # note there's no dash at the beginning of the line
  var2: value2
  var3: value3
  # etc

当你想使用一个组时,你必须稍微改变你的语法,这样解析器就不会认为你想创建一个名为“组”的变量——你把它变成一个序列或数组:

variables
- group: groupname1 # note there's a dash at the beginning of the line
- group: groupname2
  # etc

这是最后的问题 - 一旦你从第一种格式转到第二种格式(映射到序列),你必须以“序列”样式声明文件本地的新变量:

variables
- group: groupname1 # note there's a dash at the beginning of the line
- name: varname1
  value: value1
- name: varname2
  value: value2
  # etc

您可以使用相同的方式在管道中进一步引用该变量,并使用$(varname1)语法。

如果您对此有疑问,我建议您做几件事(实际上是 3 个):

  1. 使用scriptpwsh任务到echoWrite-Host您想看到但不是的所有内容,如“pwsh: Write-Host "My var should be $(varname1)"
  2. 运行管道时打开系统诊断并查看输出是否有任何有用的详细信息
  3. 通过门户编辑管道 - 管道 - 选择您的管道 -> 编辑。然后,从页面右上角的省略号菜单中,选择“下载完整的 YAML”——这将下载编译器将创建的内容。现在,它不会为您提供变量值,但它可以为您提供有关可能的格式或声明错误的线索。

推荐阅读