@@ -18,11 +18,64 @@ permissions:
1818 contents : read
1919
2020jobs :
21+ setup-azure :
22+ runs-on : ubuntu-24.04
23+ timeout-minutes : 10
24+ name : Setup Azure Resource Group
25+ environment : azure
26+ permissions :
27+ id-token : write
28+ contents : read
29+ outputs :
30+ resource-group : ${{ steps.set-context.outputs.resource-group }}
31+ location : ${{ steps.set-context.outputs.location }}
32+ steps :
33+ - name : Azure Login
34+ uses : azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
35+ with :
36+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
37+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
38+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
39+
40+ - name : Set Azure Test Context
41+ id : set-context
42+ run : |
43+ LOCATION="${AZURE_LOCATION:-${{ vars.AZURE_LOCATION }}}"
44+ if [ -z "$LOCATION" ]; then
45+ LOCATION="westus3"
46+ fi
47+ RG="rrttest-${{ github.run_id }}-${{ github.run_attempt }}"
48+ echo "location=$LOCATION" >> "$GITHUB_OUTPUT"
49+ echo "resource-group=$RG" >> "$GITHUB_OUTPUT"
50+
51+ - name : Create Azure Resource Group
52+ env :
53+ AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
54+ run : |
55+ set -euo pipefail
56+ RG="${{ steps.set-context.outputs.resource-group }}"
57+ LOCATION="${{ steps.set-context.outputs.location }}"
58+ current_time=$(date +%s)
59+ az group create \
60+ --only-show-errors \
61+ --output none \
62+ --location "$LOCATION" \
63+ --name "$RG" \
64+ --subscription "$AZURE_SUBSCRIPTION_ID" \
65+ --tags creationTime=$current_time > /dev/null
66+ # Wait for resource group to be fully available
67+ while [[ "$(az group exists --name "$RG" --subscription "$AZURE_SUBSCRIPTION_ID")" != "true" ]]; do
68+ echo "Waiting for resource group '$RG' to be available..."
69+ sleep 5
70+ done
71+ echo "Resource group '$RG' is ready"
72+
2173 validate-azure-recipes :
2274 runs-on : ubuntu-24.04
2375 timeout-minutes : 30
2476 name : Validate Azure ${{ matrix.recipe }} Recipes
2577 environment : azure
78+ needs : setup-azure
2679 strategy :
2780 fail-fast : false
2881 matrix :
3487 AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
3588 AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
3689 AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
90+ AZURE_RESOURCE_GROUP : ${{ needs.setup-azure.outputs.resource-group }}
91+ AZURE_LOCATION : ${{ needs.setup-azure.outputs.location }}
3792 steps :
3893 - name : Checkout
3994 uses : actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
@@ -49,31 +104,11 @@ jobs:
49104
50105 - name : Set Azure Test Context
51106 run : |
52- LOCATION="${AZURE_LOCATION:-${{ vars.AZURE_LOCATION }}}"
53- if [ -z "$LOCATION" ]; then
54- LOCATION="westus3"
55- fi
56- RG="rrttest-${{ github.run_id }}-${{ github.run_attempt }}"
57- echo "AZURE_LOCATION=$LOCATION" >> "$GITHUB_ENV"
58- echo "AZURE_RESOURCE_GROUP=$RG" >> "$GITHUB_ENV"
107+ echo "AZURE_LOCATION=$AZURE_LOCATION" >> "$GITHUB_ENV"
108+ echo "AZURE_RESOURCE_GROUP=$AZURE_RESOURCE_GROUP" >> "$GITHUB_ENV"
59109 echo "AZURE_WORKSPACE_NAME=default" >> "$GITHUB_ENV"
60110 echo "AZURE_ENVIRONMENT_NAME=default" >> "$GITHUB_ENV"
61111
62- - name : Create Azure Resource Group
63- run : |
64- set -euo pipefail
65- current_time=$(date +%s)
66- az group create \
67- --only-show-errors \
68- --output none \
69- --location "$AZURE_LOCATION" \
70- --name "$AZURE_RESOURCE_GROUP" \
71- --subscription "$AZURE_SUBSCRIPTION_ID" \
72- --tags creationTime=$current_time > /dev/null
73- while ! az group exists --name "$AZURE_RESOURCE_GROUP" --subscription "$AZURE_SUBSCRIPTION_ID" &>/dev/null; do
74- sleep 2
75- done
76-
77112 - name : Setup Node
78113 uses : actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
79114 with :
@@ -132,10 +167,35 @@ jobs:
132167 if : always()
133168 uses : actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
134169 with :
135- name : radius-pod-logs
170+ name : radius-pod-logs-${{ matrix.recipe }}
136171 path : radius-pod-logs
137172 if-no-files-found : warn
138173
174+ cleanup-azure :
175+ runs-on : ubuntu-24.04
176+ timeout-minutes : 10
177+ name : Cleanup Azure Resource Group
178+ environment : azure
179+ needs : [setup-azure, validate-azure-recipes]
180+ if : always()
181+ permissions :
182+ id-token : write
183+ contents : read
184+ env :
185+ AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
186+ AZURE_RESOURCE_GROUP : ${{ needs.setup-azure.outputs.resource-group }}
187+ steps :
188+ - name : Checkout
189+ uses : actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
190+ with :
191+ persist-credentials : false
192+
193+ - name : Azure Login
194+ uses : azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5 # v2.3.0
195+ with :
196+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
197+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
198+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
199+
139200 - name : Cleanup Azure Resources
140- if : always()
141201 run : make cleanup-azure-resources
0 commit comments