Below job Deployment
runs the strategy matrix while job name set-environment-matrix
constructs the strategy matrix variable ENV-MATRIX
.
My requirement is to choose a different runner group
called Dot-Shared
or runs-on: "Windows-latest"
if the job name contains Approvers
else it should runs-on: "${{ needs.set-global-runner.outputs.runner_name }}"
set-environment-matrix:
name: Set Environment Matrix for ${{ inputs.customWorkflow }}
needs: set-global-runner
runs-on: "${{ needs.set-global-runner.outputs.runner_name }}"
outputs:
env-matrix: ${{ steps.set-matrix.outputs.ENV-MATRIX }}
steps:
- name: prereq
id: set-matrix
run: |
...
...
$envList = New-Object System.Collections.ArrayList
foreach($envName in $QueryResult.EnvironmentName){
$skipApproval = $QueryResult | Where-Object { $_.EnvironmentName -eq $envName } | Select-Object -ExpandProperty skipApproval
Write-Host "skipApproval value for $envName is $skipApproval"
$srepo="$sreponame/environments/$envName"
$envuri ="$apiUrl"+"$srepo"
try {
$respEnv = Invoke-WebRequest -Uri $envuri -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -ContentType "application/vnd.github+json" -UseBasicParsing
echo "respEnv: $respEnv"
$sEnvs=$respEnv.Content | convertfrom-json
} catch {
Write-host "$envName not found"
exit 1
}
$envList.Add($envName)
}
$EnvNamesJSONVariable.Add("ENVNAME",$envList)
echo "ENV-MATRIX=$($EnvNamesJSONVariable | ConvertTo-JSON -Compress -Depth 100)" >> "$env:GITHUB_OUTPUT"
Deployment:
name: ${{ matrix.envName }}
needs: [set-environment-matrix, set-global-runner]
environment:
name: ${{ matrix.envName }}
url: "${{ steps.prereq.outputs.appurl }}"
#runs-on: "${{ needs.set-global-runner.outputs.runner_name }}"
runs-on:
if: contains(matrix.envName, 'Approvers')
value: Dot-Shared
else: ${{ needs.set-global-runner.outputs.runner_name }}
strategy:
matrix: ${{fromJSON(needs.set-environment-matrix.outputs.ENV-MATRIX)}}
steps:
- name: Track & Record Approvers List
run: |
...
...
Can you please suggest?