CI/CD 多实例移动应用管道矩阵与变量组相结合

问题描述 投票:0回答:1

我创建了一个多实例移动应用程序管道。它为每个租户(客户端)创建一个 apk 和一个 aab。为此,我使用管道参数,可以一次设置多个租户:

- name: Tenants
  displayName: "Select Tenants to build for"
  type: object
  default:
  - ExampleClient
  - ExampleClient2

现在在 BuildAndroid 阶段,我想为每个租户构建一个 .apk 和 .aab,我使用矩阵和循环编译时间:

- stage: BuildAndroid
  variables:
  - group: ${{ TenantName }}
  jobs:
  - job: 'BuildAndroid'
    strategy:
      matrix:
        ${{ each tenant in parameters.Tenants }}:
          ${{ format('{0}_APK', tenant) }}:
            TenantName: ${{ tenant }}
            BuildFormat: 'apk'
            SignAndroid: $(SignAndroidApk)
            BuildApp: $(PackageAndroidApk)
          ${{ format('{0}_AAB', tenant) }}:
            TenantName: ${{ tenant }}
            BuildFormat: 'aab'
            SignAndroid: $(SignAndroidAab)
            BuildApp: $(PackageAndroidAab)
    displayName: 'Build Android'

"- group: ${{ TenantName }}" 负责设置特定于租户的变量和秘密,但 TenantName 不可用,因为它是 for 循环矩阵的一部分。无法使用 $() 语法在运行时动态设置变量组。那我该怎么办呢?

  (Line: 53, Col: 12): Unrecognized value: 'TenantName'. Located at position 1 within 
  expression: TenantName.

我的期望: 我可以在管道运行之前选择多个租户,并根据租户特定的变量和秘密为所有选定的租户构建 apk 和 aab。

我怎样才能改变我的方法来完成这项工作?

continuous-integration azure-pipelines maui cicd
1个回答
0
投票

假设您希望使用

${{ TenantName }}
的组名称动态引用变量组,其名称与
parameters.Tenants
中定义的值相同,则以下示例有效。根据需要,您还可以在队列时为
parameters.Tenants
定义多个租户,管道作业将针对
each
中的
parameters.Tenants
值和从相应变量组检索值的矩阵进行扩展。

parameters:
- name: Tenants
  displayName: "Select Tenants to build for"
  type: object
  default:
  - ExampleClient1
  - ExampleClient2
stages:
- stage: BuildAndroid
  jobs:
  - ${{ each tenant in parameters.Tenants }}:
    - job: 'BuildAndroid_${{ tenant }}'
      dependsOn: []
      displayName: 'Build Android for ${{ tenant }}'
      variables:
      - group: ${{ tenant }}
      strategy:
        matrix:
          ${{ format('{0}_APK', tenant) }}:
            TenantName: ${{ tenant }}
            BuildFormat: 'apk'
            SignAndroid: $(SignAndroidApk)
            BuildApp: $(PackageAndroidApk)
          ${{ format('{0}_AAB', tenant) }}:
            TenantName: ${{ tenant }}
            BuildFormat: 'aab'
            SignAndroid: $(SignAndroidAab)
            BuildApp: $(PackageAndroidAab)
      steps:
      - script: |
          echo "TenantName: $(TenantName)"
          echo "BuildFormat: $(BuildFormat)"
          echo "SignAndroid: $(SignAndroid)"
          echo "BuildApp: $(BuildApp)"

© www.soinside.com 2019 - 2024. All rights reserved.