我有一个 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 }}
不为空,如何使其成为矩阵的一部分,以便在执行时填充?
在@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"