【问题标题】:Not getting any values from variables in variable groups in Azure Devops pipeline未从 Azure Devops 管道中的变量组中的变量获取任何值
【发布时间】:2021-03-02 16:16:27
【问题描述】:

我真的在为我的变量组中名为“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

【问题讨论】:

    标签: azure azure-devops azure-pipelines


    【解决方案1】:

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

    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”——这将下载编译器将创建的内容。现在,它不会为您提供变量值,但它可以为您提供有关可能的格式或声明错误的线索。

    【讨论】:

    • 感谢您的遮阳篷。也许我做错了什么,但这仍然无效,我不知道如何获取 $(key.alias) 变量值我已经更新了我的代码,所以你有完整的图片
    • @Henkie85。从您的代码中,您没有使用 WaitingForGuacamole 共享的变量格式。如果您在答案中使用变量格式,它会起作用吗?另一方面,在变量组中,变量是秘密变量吗?
    • 我已经在上面澄清了我的答案,@Kevin Lu,你能否权衡一下我是否有什么问题,Henkie85,你能告诉我这是否对你有任何帮助吗?跨度>
    • 非常感谢您的耐心和清晰的解释......我明白了!
    • 没问题。我在使用 YAML 变量时遇到了很多麻烦。很高兴传递一些解决方案。
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多