@@ -107,14 +107,8 @@ jobs:
107107
108108 - run : npm ci && npm run build
109109
110- - name : Azure Login (OIDC)
111- uses : azure/login@v2
112- with :
113- client-id : ${{ secrets.AZURE_CLIENT_ID }}
114- tenant-id : ${{ secrets.AZURE_TENANT_ID }}
115- subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
116-
117- - name : Run Round-Trip Phase 1 (Deploy)
110+ - name : Resolve Workflow Settings
111+ id : settings
118112 shell : pwsh
119113 run : |
120114 $logLevel = '${{ inputs.log_level }}'
@@ -127,21 +121,35 @@ jobs:
127121 if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = '${{ inputs.sku }}' }
128122 if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = 'StandardV2' }
129123
124+ "logLevel=$logLevel" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
125+ "skuName=$skuName" | Out-File -FilePath $env:GITHUB_OUTPUT -Append
126+
127+ - name : Azure Login
128+ uses : azure/login@v2
129+ with :
130+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
131+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
132+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
133+
134+ - name : Run Round-Trip Phase 1 (Deploy)
135+ id : phase1
136+ shell : pwsh
137+ run : |
130138 $params = @{
131139 SourceResourceGroup = '${{ env.SOURCE_RG }}'
132140 TargetResourceGroup = '${{ env.TARGET_RG }}'
133141 SourceApimName = '${{ env.SOURCE_APIM }}'
134142 TargetApimName = '${{ env.TARGET_APIM }}'
135143 SourceSubscriptionId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}'
136144 TargetSubscriptionId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}'
137- SkuName = $ skuName
145+ SkuName = '${{ steps.settings.outputs. skuName }}'
138146 Location = '${{ inputs.location }}'
139- LogLevel = $ logLevel
147+ LogLevel = '${{ steps.settings.outputs. logLevel }}'
140148 PublisherEmail = '${{ secrets.APIM_PUBLISHER_EMAIL }}'
141149 }
142- ./tests/integration/all-resource-types/run-roundtrip -phase1-deploy.ps1 @params
150+ ./tests/integration/all-resource-types/phases/ run-phase1-deploy.ps1 @params
143151
144- - name : Azure Login (OIDC) - Refresh Before Phase 2
152+ - name : Azure Login - Refresh Before Phase 2
145153 if : success()
146154 uses : azure/login@v2
147155 with :
@@ -152,97 +160,95 @@ jobs:
152160 subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
153161
154162 - name : Run Round-Trip Phase 2 (Extract)
163+ id : phase2
155164 if : success()
156165 shell : pwsh
157166 env :
158167 AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
159168 AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
160169 run : |
161- $logLevel = '${{ inputs.log_level }}'
162- if ([string]::IsNullOrWhiteSpace($logLevel)) { $logLevel = 'Verbose' }
163- if ($logLevel -notin @('Info', 'Verbose', 'Debug')) {
164- throw "Invalid log_level '$logLevel'. Allowed values: Info, Verbose, Debug."
165- }
166-
167- ./tests/integration/all-resource-types/run-roundtrip-phase2-extract.ps1 `
168- -SourceSubscriptionId '${{ secrets.AZURE_SUBSCRIPTION_ID }}' `
169- -SourceResourceGroup '${{ env.SOURCE_RG }}' `
170- -SourceApimName '${{ env.SOURCE_APIM }}' `
171- -LogLevel $logLevel `
170+ ./tests/integration/all-resource-types/phases/run-phase2-extract.ps1 `
171+ -SourceSubscriptionId '${{ steps.phase1.outputs.sourceSubscriptionId }}' `
172+ -SourceResourceGroup '${{ steps.phase1.outputs.sourceResourceGroup }}' `
173+ -SourceApimName '${{ steps.phase1.outputs.sourceApimName }}' `
174+ -LogLevel '${{ steps.settings.outputs.logLevel }}' `
172175 -ExtractOutputDir './extracted-artifacts'
173176
174177 - name : Run Round-Trip Phase 3 (Validate Extract)
175178 if : success()
176179 shell : pwsh
177180 run : |
178- $logLevel = '${{ inputs.log_level }}'
179- if ([string]::IsNullOrWhiteSpace($logLevel)) { $logLevel = 'Verbose' }
180- if ($logLevel -notin @('Info', 'Verbose', 'Debug')) {
181- throw "Invalid log_level '$logLevel'. Allowed values: Info, Verbose, Debug."
182- }
181+ $skuName = '${{ steps.phase1.outputs.skuName }}'
182+ $extractOutputDir = '${{ steps.phase2.outputs.ExtractOutputDir }}'
183183
184- $skuName = '${{ secrets.APIM_SKU }}'
185- if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = '${{ inputs.sku }}' }
186- if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = 'StandardV2' }
187-
188- ./tests/integration/all-resource-types/run-roundtrip-phase3-validate-extract.ps1 `
184+ ./tests/integration/all-resource-types/phases/run-phase3-validate-extract.ps1 `
189185 -SkuName $skuName `
190- -LogLevel $ logLevel `
191- -ExtractOutputDir './extracted-artifacts'
186+ -LogLevel '${{ steps.settings.outputs. logLevel }}' `
187+ -ExtractOutputDir $extractOutputDir
192188
193- - name : Run Round-Trip Phase 4 (Publish)
189+ - name : Run Round-Trip Phase 4 (Create Overrides)
190+ if : success()
191+ shell : pwsh
192+ run : |
193+ $extractOutputDir = '${{ steps.phase2.outputs.ExtractOutputDir }}'
194+
195+ ./tests/integration/all-resource-types/phases/run-phase4-create-overrides.ps1 `
196+ -TargetSubscriptionId '${{ steps.phase1.outputs.targetSubscriptionId }}' `
197+ -TargetResourceGroup '${{ steps.phase1.outputs.targetResourceGroup }}' `
198+ -LogLevel '${{ steps.settings.outputs.logLevel }}' `
199+ -ExtractOutputDir $extractOutputDir
200+
201+ - name : Run Round-Trip Phase 5 (Publish)
194202 if : success()
195203 shell : pwsh
196204 env :
197205 AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
198206 AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
199207 run : |
200- $logLevel = '${{ inputs.log_level }}'
201- if ([string]::IsNullOrWhiteSpace($logLevel)) { $logLevel = 'Verbose' }
202- if ($logLevel -notin @('Info', 'Verbose', 'Debug')) {
203- throw "Invalid log_level '$logLevel'. Allowed values: Info, Verbose, Debug."
204- }
208+ $extractOutputDir = '${{ steps.phase2.outputs.ExtractOutputDir }}'
205209
206- ./tests/integration/all-resource-types/run-roundtrip-phase4 -publish.ps1 `
207- -TargetSubscriptionId '${{ secrets.AZURE_SUBSCRIPTION_ID }}' `
208- -TargetResourceGroup '${{ env.TARGET_RG }}' `
209- -TargetApimName '${{ env.TARGET_APIM }}' `
210- -LogLevel $ logLevel `
211- -ExtractOutputDir './extracted-artifacts'
210+ ./tests/integration/all-resource-types/phases/ run-phase5 -publish.ps1 `
211+ -TargetSubscriptionId '${{ steps.phase1.outputs.targetSubscriptionId }}' `
212+ -TargetResourceGroup '${{ steps.phase1.outputs.targetResourceGroup }}' `
213+ -TargetApimName '${{ steps.phase1.outputs.targetApimName }}' `
214+ -LogLevel '${{ steps.settings.outputs. logLevel }}' `
215+ -ExtractOutputDir $extractOutputDir
212216
213- - name : Run Round-Trip Phase 5 (Compare)
217+ - name : Run Round-Trip Phase 6 (Compare)
214218 if : success()
215219 shell : pwsh
216220 run : |
217- $logLevel = '${{ inputs.log_level }}'
218- if ([string]::IsNullOrWhiteSpace($logLevel)) { $logLevel = 'Verbose' }
219- if ($logLevel -notin @('Info', 'Verbose', 'Debug')) {
220- throw "Invalid log_level '$logLevel'. Allowed values: Info, Verbose, Debug."
221- }
222-
223- ./tests/integration/all-resource-types/run-roundtrip-phase5-compare.ps1 `
224- -SourceSubscriptionId '${{ secrets.AZURE_SUBSCRIPTION_ID }}' `
225- -SourceResourceGroup '${{ env.SOURCE_RG }}' `
226- -SourceApimName '${{ env.SOURCE_APIM }}' `
227- -TargetSubscriptionId '${{ secrets.AZURE_SUBSCRIPTION_ID }}' `
228- -TargetResourceGroup '${{ env.TARGET_RG }}' `
229- -TargetApimName '${{ env.TARGET_APIM }}' `
230- -LogLevel $logLevel
221+ ./tests/integration/all-resource-types/phases/run-phase6-compare.ps1 `
222+ -SourceSubscriptionId '${{ steps.phase1.outputs.sourceSubscriptionId }}' `
223+ -SourceResourceGroup '${{ steps.phase1.outputs.sourceResourceGroup }}' `
224+ -SourceApimName '${{ steps.phase1.outputs.sourceApimName }}' `
225+ -TargetSubscriptionId '${{ steps.phase1.outputs.targetSubscriptionId }}' `
226+ -TargetResourceGroup '${{ steps.phase1.outputs.targetResourceGroup }}' `
227+ -TargetApimName '${{ steps.phase1.outputs.targetApimName }}' `
228+ -LogLevel '${{ steps.settings.outputs.logLevel }}'
231229
232230 - name : Upload Extracted Artifacts
233231 if : always()
234232 uses : actions/upload-artifact@v4
235233 with :
236- name : extracted-artifacts-${{ inputs.sku }}
237- path : . /extracted-artifacts/
234+ name : extracted-artifacts-${{ steps.phase1.outputs.skuName }}
235+ path : ${{ steps.phase2.outputs.ExtractOutputDir || '. /extracted-artifacts/' }}
238236 if-no-files-found : ignore
239237
240- - name : Run Round-Trip Phase 6 (Teardown)
238+ - name : Run Round-Trip Phase 7 (Teardown)
241239 if : always()
242240 shell : pwsh
243241 run : |
244- ./tests/integration/all-resource-types/run-roundtrip-phase6-teardown.ps1 `
245- -SourceResourceGroup '${{ env.SOURCE_RG }}' `
246- -TargetResourceGroup '${{ env.TARGET_RG }}' `
247- -Location '${{ inputs.location }}' `
248- -HardDelete $true
242+ $sourceResourceGroup = '${{ steps.phase1.outputs.sourceResourceGroup }}'
243+ if ([string]::IsNullOrWhiteSpace($sourceResourceGroup)) { $sourceResourceGroup = '${{ env.SOURCE_RG }}' }
244+
245+ $targetResourceGroup = '${{ steps.phase1.outputs.targetResourceGroup }}'
246+ if ([string]::IsNullOrWhiteSpace($targetResourceGroup)) { $targetResourceGroup = '${{ env.TARGET_RG }}' }
247+
248+ $location = '${{ steps.phase1.outputs.location }}'
249+ if ([string]::IsNullOrWhiteSpace($location)) { $location = '${{ inputs.location }}' }
250+
251+ ./tests/integration/all-resource-types/phases/run-phase7-teardown.ps1 `
252+ -SourceResourceGroup $sourceResourceGroup `
253+ -TargetResourceGroup $targetResourceGroup `
254+ -Location $location
0 commit comments