如何将步骤中的变量添加到策略矩阵

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

我有一个 GitHub Actions 工作流程,其中有

APP_APPROVALS
DB_APPROVALS
作为两个硬编码策略矩阵,用作
environments

我的要求是如果

${{ steps.getenv.outputs.recenvironments }}
的值不为空,则将其添加到策略矩阵中,否则不添加任何内容。

以下是 GitHub Actions 工作流程:

  Approvals: 
    name: Approvals
    runs-on:
      group: "ARE-Shared"

    strategy:
      matrix:
        envName: [APP_APPROVAL, DB_APPROVAL,  ${{ steps.getenv.outputs.recenvironments }}]
        #include:
        #   - envName: ${{ steps.getenv.outputs.recenvironments }}
    environment:     ${{ matrix.envName }}

    steps:

      - name: Extract Environment from SERVER_ENVIRONMENT
        id: getenv
        run: |

          #for testing purpose hard-coding the value of variable instead of getting it dynamically. 
          $recenvironments = "Production"
          #$recenvironments = "${{ steps.getsnowdetails.outputs.invhosts_env }}"
          echo "recenvironments=$recenvironments" >> "$env:GITHUB_OUTPUT"

不幸的是,我收到以下错误:

Invalid workflow file: .github/workflows/wdadevDBexecutionscripts.yml#L17
error parsing called workflow
".github/workflows/wdadev.yml"
-> "mmctech/DevOps/.github/workflows/newexecutescript.yml@newmmtmp" (source branch with sha:67fb319c3dcd076e9498a84ef1183f04f3cb9ce0)
: You have an error in your yaml syntax on line 154

如果

${{ steps.getsnowdetails.outputs.invhosts_env }}
不为空,如何使其成为矩阵的一部分,以便在执行时填充?

github github-actions
1个回答
0
投票

在@Benjamin W.的指导下,我能够构建如下矩阵:

  Approvals: 
    name: ${{ matrix.envName }}
    needs: <previousjobname>
    
    runs-on:
      group: "Runner-Shared"

    strategy:
      matrix:
        envName: 
          - APP_APPROVAL
          - DB_APPROVAL
          - "${{ needs.<previousjobname>.outputs.<variable> }}"

    environment:    
      name: ${{ matrix.envName }}

    steps:

      - name: Extract Environment from SERVER_ENVIRONMENT
        id: getenv
        run: |
          Write-Host "Run Success"
© www.soinside.com 2019 - 2024. All rights reserved.