@@ -171,7 +171,7 @@ jobs:
171171 tenant-id : ${{ secrets.AZURE_TENANT_ID }}
172172 subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
173173
174- - name : Run Round-Trip Phase 2 (Extract→Publish→Verify )
174+ - name : Run Round-Trip Phase 2a (Extract)
175175 if : success()
176176 shell : pwsh
177177 env :
@@ -187,24 +187,74 @@ jobs:
187187 $sourceSubId = '${{ secrets.SOURCE_SUBSCRIPTION_ID }}'
188188 if ([string]::IsNullOrWhiteSpace($sourceSubId)) { $sourceSubId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}' }
189189
190- $targetSubId = '${{ secrets.TARGET_SUBSCRIPTION_ID }}'
191- if ([string]::IsNullOrWhiteSpace($targetSubId)) { $targetSubId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}' }
192-
193190 $skuName = '${{ secrets.APIM_SKU }}'
194191 if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = '${{ inputs.sku }}' }
195192 if ([string]::IsNullOrWhiteSpace($skuName)) { $skuName = 'StandardV2' }
196193
197- ./tests/integration/all-resource-types/run-roundtrip-phase2-roundtrip .ps1 `
194+ ./tests/integration/all-resource-types/run-roundtrip-phase2a-extract .ps1 `
198195 -SourceSubscriptionId $sourceSubId `
199196 -SourceResourceGroup '${{ env.SOURCE_RG }}' `
200197 -SourceApimName '${{ env.SOURCE_APIM }}' `
198+ -SkuName $skuName `
199+ -LogLevel $logLevel `
200+ -ExtractOutputDir './extracted-artifacts'
201+ $extractExitCode = $LASTEXITCODE
202+ if ($extractExitCode -ge 2) {
203+ exit $extractExitCode
204+ }
205+ if ($extractExitCode -ne 0) {
206+ Write-Host "::warning::Phase 2a validation warnings (exit $extractExitCode) — continuing round-trip"
207+ }
208+ exit 0
209+
210+ - name : Run Round-Trip Phase 2b (Publish)
211+ if : success()
212+ shell : pwsh
213+ env :
214+ AZURE_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
215+ AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
216+ 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+ $targetSubId = '${{ secrets.TARGET_SUBSCRIPTION_ID }}'
224+ if ([string]::IsNullOrWhiteSpace($targetSubId)) { $targetSubId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}' }
225+
226+ ./tests/integration/all-resource-types/run-roundtrip-phase2b-publish.ps1 `
201227 -TargetSubscriptionId $targetSubId `
202228 -TargetResourceGroup '${{ env.TARGET_RG }}' `
203229 -TargetApimName '${{ env.TARGET_APIM }}' `
204- -SkuName $skuName `
205230 -LogLevel $logLevel `
206231 -ExtractOutputDir './extracted-artifacts'
207232
233+ - name : Run Round-Trip Phase 2c (Compare)
234+ if : success()
235+ shell : pwsh
236+ run : |
237+ $logLevel = '${{ inputs.log_level }}'
238+ if ([string]::IsNullOrWhiteSpace($logLevel)) { $logLevel = 'Verbose' }
239+ if ($logLevel -notin @('Info', 'Verbose', 'Debug')) {
240+ throw "Invalid log_level '$logLevel'. Allowed values: Info, Verbose, Debug."
241+ }
242+
243+ $sourceSubId = '${{ secrets.SOURCE_SUBSCRIPTION_ID }}'
244+ if ([string]::IsNullOrWhiteSpace($sourceSubId)) { $sourceSubId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}' }
245+
246+ $targetSubId = '${{ secrets.TARGET_SUBSCRIPTION_ID }}'
247+ if ([string]::IsNullOrWhiteSpace($targetSubId)) { $targetSubId = '${{ secrets.AZURE_SUBSCRIPTION_ID }}' }
248+
249+ ./tests/integration/all-resource-types/run-roundtrip-phase2c-compare.ps1 `
250+ -SourceSubscriptionId $sourceSubId `
251+ -SourceResourceGroup '${{ env.SOURCE_RG }}' `
252+ -SourceApimName '${{ env.SOURCE_APIM }}' `
253+ -TargetSubscriptionId $targetSubId `
254+ -TargetResourceGroup '${{ env.TARGET_RG }}' `
255+ -TargetApimName '${{ env.TARGET_APIM }}' `
256+ -LogLevel $logLevel
257+
208258 - name : Upload Extracted Artifacts
209259 if : always()
210260 uses : actions/upload-artifact@v4
0 commit comments