Skip to content

Enhancement: Full MCP integration for ARTAgent #61

Enhancement: Full MCP integration for ARTAgent

Enhancement: Full MCP integration for ARTAgent #61

Workflow file for this run

name: Test AZD Hooks
on:
push:
branches: [main, staging]
paths:
- 'devops/scripts/azd/**'
- 'azure.yaml'
- '.github/workflows/test-azd-hooks.yml'
pull_request:
branches: [main, staging]
paths:
- 'devops/scripts/azd/**'
- 'azure.yaml'
- '.github/workflows/test-azd-hooks.yml'
workflow_dispatch:
inputs:
debug_enabled:
description: 'Enable debug mode'
required: false
default: false
type: boolean
env:
CI: true
AZD_SKIP_INTERACTIVE: true
# Mock environment for hook testing
AZURE_ENV_NAME: ci-test
AZURE_LOCATION: eastus2
LOCAL_STATE: true
permissions:
contents: read
pull-requests: read
jobs:
# ============================================================================
# JOB: Lint Shell Scripts
# ============================================================================
lint:
name: 🔍 Lint Shell Scripts
runs-on: ubuntu-latest
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 📦 Install ShellCheck
run: sudo apt-get update && sudo apt-get install -y shellcheck
- name: 🔍 Lint preprovision.sh
run: shellcheck -x devops/scripts/azd/preprovision.sh || true
continue-on-error: true
- name: 🔍 Lint postprovision.sh
run: shellcheck -x devops/scripts/azd/postprovision.sh || true
continue-on-error: true
- name: 🔍 Lint helper scripts
run: |
for script in devops/scripts/azd/helpers/*.sh; do
echo "Checking $script..."
shellcheck -x "$script" || true
done
continue-on-error: true
- name: 📋 Summary
run: |
echo "## 🔍 Shell Script Linting" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "ShellCheck analysis complete. Review warnings above." >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Test Hooks on Linux
# ============================================================================
test-linux:
name: 🐧 Test on Linux
runs-on: ubuntu-latest
needs: lint
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: ⚙️ Setup AZD
uses: Azure/setup-azd@v2
- name: 🔧 Setup jq
run: |
which jq || sudo apt-get update && sudo apt-get install -y jq
jq --version
- name: 🔧 Setup Azure CLI
run: |
# Azure CLI is pre-installed on GitHub runners, verify it
az version
echo "✅ Azure CLI available"
- name: 🔧 Create Mock Environment
run: |
# Create azd environment without Azure login
mkdir -p .azure/${{ env.AZURE_ENV_NAME }}
# Create mock .env file for azd
cat > .azure/${{ env.AZURE_ENV_NAME }}/.env << 'EOF'
AZURE_ENV_NAME="${{ env.AZURE_ENV_NAME }}"
AZURE_LOCATION="${{ env.AZURE_LOCATION }}"
LOCAL_STATE="true"
DB_INITIALIZED="true"
PREFLIGHT_LIVE_CHECKS="false"
EOF
echo "Created mock azd environment"
ls -la .azure/${{ env.AZURE_ENV_NAME }}/
- name: 📜 Validate Script Syntax (preprovision.sh)
run: bash -n devops/scripts/azd/preprovision.sh
- name: 📜 Validate Script Syntax (postprovision.sh)
run: bash -n devops/scripts/azd/postprovision.sh
- name: 📜 Validate Helper Scripts Syntax
run: |
for script in devops/scripts/azd/helpers/*.sh; do
echo "Validating syntax: $script"
bash -n "$script"
done
- name: 🧪 Test Preflight Checks (Dry Run)
run: |
cd devops/scripts/azd/helpers
# Source the script to test individual functions
source preflight-checks.sh
# Test logging functions
echo "Testing logging functions..."
log "Test log message"
info "Test info message"
success "Test success message"
warn "Test warning message"
echo ""
echo "✅ Logging functions work correctly"
continue-on-error: true
- name: 🧪 Test Location Resolution
run: |
cd devops/scripts/azd
# Create test tfvars file
mkdir -p ../../../infra/terraform/params
echo '{"location": "eastus2", "environment": "test"}' > ../../../infra/terraform/params/main.tfvars.ci-test.json
# Test that location can be resolved from tfvars
export AZURE_ENV_NAME="ci-test"
export AZURE_LOCATION="eastus2"
# Just verify the tfvars file was created correctly
echo "Testing tfvars file creation..."
if [[ -f ../../../infra/terraform/params/main.tfvars.ci-test.json ]]; then
echo "✅ tfvars file created:"
cat ../../../infra/terraform/params/main.tfvars.ci-test.json
else
echo "❌ tfvars file not created"
exit 1
fi
continue-on-error: true
- name: 🧪 Test Backend Configuration
run: |
cd infra/terraform
export AZURE_ENV_NAME="ci-test"
export AZURE_LOCATION="eastus2"
export LOCAL_STATE="true"
# Test local backend configuration by creating the file directly
echo "Testing local backend configuration..."
cat > backend.tf << 'BACKEND_EOF'
# Auto-generated by preprovision hook
# Using local state for development/testing
terraform {
backend "local" {
path = "terraform.tfstate"
}
}
BACKEND_EOF
# Verify backend.tf was created
if [[ -f backend.tf ]]; then
echo "✅ backend.tf created:"
cat backend.tf
rm backend.tf # Clean up
else
echo "❌ backend.tf not created"
exit 1
fi
- name: 🚀 Run Preprovision Hook via AZD
run: |
# Initialize azd environment properly
azd env select ${{ env.AZURE_ENV_NAME }} 2>/dev/null || azd env new ${{ env.AZURE_ENV_NAME }} --no-prompt
azd env set AZURE_LOCATION ${{ env.AZURE_LOCATION }}
azd env set LOCAL_STATE true
azd env set PREFLIGHT_LIVE_CHECKS false
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
echo "Running: azd hooks run preprovision"
azd hooks run preprovision
echo ""
echo "✅ Preprovision hook executed successfully via azd"
- name: 📦 Run Postprovision Hook via AZD
run: |
# Use existing azd environment
azd env select ${{ env.AZURE_ENV_NAME }}
# Set mock values that postprovision expects
azd env set DB_INITIALIZED true
azd env set AZURE_APPCONFIG_ENDPOINT "https://mock-appconfig.azconfig.io"
azd env set BACKEND_API_URL "https://mock-backend.azurecontainerapps.io"
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
export CI=true
echo "Running: azd hooks run postprovision"
azd hooks run postprovision
echo ""
echo "✅ Postprovision hook executed successfully via azd"
- name: 📋 Linux Test Summary
run: |
echo "## 🐧 Linux Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Script Syntax | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Helper Scripts | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Logging Functions | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Location Resolution | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Backend Config | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run preprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run postprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Test Hooks on macOS
# ============================================================================
test-macos:
name: 🍎 Test on macOS
runs-on: macos-latest
needs: lint
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: ⚙️ Setup AZD
uses: Azure/setup-azd@v2
- name: 🔧 Setup jq
run: |
which jq || brew install jq
jq --version
- name: 🔧 Setup Azure CLI
run: |
# Install Azure CLI if not present
which az || brew install azure-cli
az version
echo "✅ Azure CLI available"
- name: 🔧 Create Mock Environment
run: |
mkdir -p .azure/${{ env.AZURE_ENV_NAME }}
cat > .azure/${{ env.AZURE_ENV_NAME }}/.env << 'EOF'
AZURE_ENV_NAME="${{ env.AZURE_ENV_NAME }}"
AZURE_LOCATION="${{ env.AZURE_LOCATION }}"
LOCAL_STATE="true"
DB_INITIALIZED="true"
PREFLIGHT_LIVE_CHECKS="false"
EOF
- name: 📜 Validate Script Syntax (preprovision.sh)
run: bash -n devops/scripts/azd/preprovision.sh
- name: 📜 Validate Script Syntax (postprovision.sh)
run: bash -n devops/scripts/azd/postprovision.sh
- name: 📜 Validate Helper Scripts Syntax
run: |
for script in devops/scripts/azd/helpers/*.sh; do
echo "Validating syntax: $script"
bash -n "$script"
done
- name: 🧪 Test Preflight Checks (Dry Run)
run: |
cd devops/scripts/azd/helpers
source preflight-checks.sh
# Test logging functions
log "Test log message (macOS)"
info "Test info message (macOS)"
success "Test success message (macOS)"
warn "Test warning message (macOS)"
echo "✅ macOS logging functions work correctly"
continue-on-error: true
- name: 🧪 Test Regional Availability Logic
run: |
cd devops/scripts/azd/helpers
# Source the script
source preflight-checks.sh
# Test with cached data (no Azure auth needed)
export PREFLIGHT_LIVE_CHECKS=false
echo "Testing regional availability checks (cached mode)..."
for region in eastus2 swedencentral westus2 australiaeast; do
export AZURE_LOCATION="$region"
echo ""
echo "📍 Testing region: $region"
check_regional_availability || true
done
continue-on-error: true
- name: 🧪 Test Helper Functions
run: |
cd devops/scripts/azd/helpers
source preflight-checks.sh
# Test check_provider_region function exists
echo "Testing helper functions..."
# Test that functions are defined
if declare -f check_provider_region > /dev/null; then
echo "✅ check_provider_region function defined"
else
echo "❌ check_provider_region function not found"
fi
if declare -f check_cognitive_services_region > /dev/null; then
echo "✅ check_cognitive_services_region function defined"
else
echo "❌ check_cognitive_services_region function not found"
fi
if declare -f get_provider_regions > /dev/null; then
echo "✅ get_provider_regions function defined"
else
echo "❌ get_provider_regions function not found"
fi
- name: 🚀 Run Preprovision Hook via AZD
run: |
# Initialize azd environment properly
azd env select ${{ env.AZURE_ENV_NAME }} 2>/dev/null || azd env new ${{ env.AZURE_ENV_NAME }} --no-prompt
azd env set AZURE_LOCATION ${{ env.AZURE_LOCATION }}
azd env set LOCAL_STATE true
azd env set PREFLIGHT_LIVE_CHECKS false
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
echo "Running: azd hooks run preprovision"
azd hooks run preprovision
echo ""
echo "✅ Preprovision hook executed successfully via azd (macOS)"
- name: 📦 Run Postprovision Hook via AZD
run: |
# Use existing azd environment
azd env select ${{ env.AZURE_ENV_NAME }}
# Set mock values that postprovision expects
azd env set DB_INITIALIZED true
azd env set AZURE_APPCONFIG_ENDPOINT "https://mock-appconfig.azconfig.io"
azd env set BACKEND_API_URL "https://mock-backend.azurecontainerapps.io"
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
export CI=true
echo "Running: azd hooks run postprovision"
azd hooks run postprovision
echo ""
echo "✅ Postprovision hook executed successfully via azd (macOS)"
- name: 📋 macOS Test Summary
run: |
echo "## 🍎 macOS Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Script Syntax | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Helper Scripts | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Logging Functions | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Regional Checks | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run preprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run postprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Test Hooks on Windows
# ============================================================================
test-windows:
name: 🪟 Test on Windows
runs-on: windows-latest
needs: lint
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: ⚙️ Setup AZD
uses: Azure/setup-azd@v2
- name: 🔧 Setup Git Bash
run: |
echo "Git Bash version:"
& "C:\Program Files\Git\bin\bash.exe" --version
- name: 🔧 Setup Azure CLI
run: |
# Azure CLI is pre-installed on Windows GitHub runners
az version
Write-Host "✅ Azure CLI available"
- name: 🔧 Create Mock Environment
shell: bash
run: |
mkdir -p .azure/${{ env.AZURE_ENV_NAME }}
cat > .azure/${{ env.AZURE_ENV_NAME }}/.env << 'EOF'
AZURE_ENV_NAME="${{ env.AZURE_ENV_NAME }}"
AZURE_LOCATION="${{ env.AZURE_LOCATION }}"
LOCAL_STATE="true"
DB_INITIALIZED="true"
PREFLIGHT_LIVE_CHECKS="false"
EOF
- name: 📜 Validate Script Syntax (preprovision.sh)
shell: bash
run: bash -n devops/scripts/azd/preprovision.sh
- name: 📜 Validate Script Syntax (postprovision.sh)
shell: bash
run: bash -n devops/scripts/azd/postprovision.sh
- name: 📜 Validate Helper Scripts Syntax
shell: bash
run: |
for script in devops/scripts/azd/helpers/*.sh; do
echo "Validating syntax: $script"
bash -n "$script"
done
- name: 🧪 Test Logging Functions (Windows/Git Bash)
shell: bash
run: |
cd devops/scripts/azd/helpers
source preflight-checks.sh
# Test logging functions
log "Test log message (Windows)"
info "Test info message (Windows)"
success "Test success message (Windows)"
warn "Test warning message (Windows)"
echo "✅ Windows/Git Bash logging functions work correctly"
continue-on-error: true
- name: 🚀 Run Preprovision Hook via AZD
shell: bash
run: |
# Initialize azd environment properly
azd env select ${{ env.AZURE_ENV_NAME }} 2>/dev/null || azd env new ${{ env.AZURE_ENV_NAME }} --no-prompt
azd env set AZURE_LOCATION ${{ env.AZURE_LOCATION }}
azd env set LOCAL_STATE true
azd env set PREFLIGHT_LIVE_CHECKS false
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
echo "Running: azd hooks run preprovision"
azd hooks run preprovision
echo ""
echo "✅ Preprovision hook executed successfully via azd (Windows)"
- name: 📦 Run Postprovision Hook via AZD
shell: bash
run: |
# Use existing azd environment
azd env select ${{ env.AZURE_ENV_NAME }}
# Set mock values that postprovision expects
azd env set DB_INITIALIZED true
azd env set AZURE_APPCONFIG_ENDPOINT "https://mock-appconfig.azconfig.io"
azd env set BACKEND_API_URL "https://mock-backend.azurecontainerapps.io"
# Export vars for the hook script
export PREFLIGHT_LIVE_CHECKS=false
export LOCAL_STATE=true
export CI=true
echo "Running: azd hooks run postprovision"
azd hooks run postprovision
echo ""
echo "✅ Postprovision hook executed successfully via azd (Windows)"
- name: 📋 Windows Test Summary
shell: bash
run: |
echo "## 🪟 Windows Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Script Syntax | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Helper Scripts | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 🧪 Logging Functions | ✓ Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run preprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run postprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Test in Dev Container (Codespaces-like environment)
# ============================================================================
test-devcontainer:
name: 🐳 Test in Dev Container
runs-on: ubuntu-latest
needs: lint
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🐳 Build and Test in Dev Container
uses: devcontainers/ci@v0.3
with:
runCmd: |
echo "╭─────────────────────────────────────────────────────────────"
echo "│ 🐳 Testing AZD Hooks in Dev Container"
echo "├─────────────────────────────────────────────────────────────"
# Verify environment
echo "│ Environment:"
echo "│ OS: $(uname -a)"
echo "│ Shell: $SHELL"
echo "│ User: $(whoami)"
echo ""
# Check installed tools
echo "│ Installed Tools:"
echo "│ Azure CLI: $(az --version 2>/dev/null | head -1 || echo 'not found')"
echo "│ AZD: $(azd version 2>/dev/null | head -1 || echo 'not found')"
echo "│ Terraform: $(terraform version 2>/dev/null | head -1 || echo 'not found')"
echo "│ Node.js: $(node --version 2>/dev/null || echo 'not found')"
echo "│ Python: $(python3 --version 2>/dev/null || echo 'not found')"
echo "│ jq: $(jq --version 2>/dev/null || echo 'not found')"
echo "│ Docker: $(docker --version 2>/dev/null || echo 'not found')"
echo ""
# Validate script syntax
echo "│ Validating script syntax..."
bash -n devops/scripts/azd/preprovision.sh && echo "│ ✓ preprovision.sh"
bash -n devops/scripts/azd/postprovision.sh && echo "│ ✓ postprovision.sh"
for script in devops/scripts/azd/helpers/*.sh; do
bash -n "$script" && echo "│ ✓ $(basename $script)"
done
echo ""
# Create mock azd environment
export CI=true
export AZURE_ENV_NAME=ci-devcontainer
export AZURE_LOCATION=eastus2
export LOCAL_STATE=true
export PREFLIGHT_LIVE_CHECKS=false
mkdir -p .azure/$AZURE_ENV_NAME
cat > .azure/$AZURE_ENV_NAME/.env << EOF
AZURE_ENV_NAME="$AZURE_ENV_NAME"
AZURE_LOCATION="$AZURE_LOCATION"
LOCAL_STATE="true"
DB_INITIALIZED="true"
PREFLIGHT_LIVE_CHECKS="false"
EOF
# Initialize azd environment
azd env select $AZURE_ENV_NAME 2>/dev/null || azd env new $AZURE_ENV_NAME --no-prompt
azd env set AZURE_LOCATION $AZURE_LOCATION
azd env set LOCAL_STATE true
azd env set PREFLIGHT_LIVE_CHECKS false
# Run preprovision hook
echo "│ Running preprovision hook..."
azd hooks run preprovision
echo "│ ✓ Preprovision hook completed"
echo ""
# Set mock values for postprovision
azd env set DB_INITIALIZED true
azd env set AZURE_APPCONFIG_ENDPOINT "https://mock-appconfig.azconfig.io"
azd env set BACKEND_API_URL "https://mock-backend.azurecontainerapps.io"
# Run postprovision hook
echo "│ Running postprovision hook..."
azd hooks run postprovision
echo "│ ✓ Postprovision hook completed"
echo ""
echo "╰─────────────────────────────────────────────────────────────"
echo "✅ Dev Container tests passed!"
- name: 📋 Dev Container Test Summary
run: |
echo "## 🐳 Dev Container Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 🐳 Dev Container Build | ✓ Built |" >> $GITHUB_STEP_SUMMARY
echo "| 🔧 Tools Installed | ✓ Verified |" >> $GITHUB_STEP_SUMMARY
echo "| 📜 Script Syntax | ✓ Validated |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run preprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 azd hooks run postprovision | ✓ Executed |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "This validates the same environment users get in **GitHub Codespaces**." >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Integration Test (Requires Azure Auth - Optional)
# ============================================================================
integration-test:
name: 🔗 Integration Test
runs-on: ubuntu-latest
needs: [test-linux, test-macos, test-windows]
if: github.event_name == 'workflow_dispatch'
environment: dev
env:
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: ⚙️ Setup Tools
uses: Azure/setup-azd@v2
- name: 🔧 Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.9.0
- name: 🔐 Azure Login (OIDC)
uses: azure/login@v2
id: azure-login
with:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}
continue-on-error: true
- name: 🔐 AZD Login
if: steps.azure-login.outcome == 'success'
run: |
azd auth login \
--client-id "$AZURE_CLIENT_ID" \
--federated-credential-provider github \
--tenant-id "$AZURE_TENANT_ID"
continue-on-error: true
- name: ⚙️ Create Test Environment
run: |
azd env new ci-integration-test --no-prompt || true
azd env select ci-integration-test
azd env set AZURE_LOCATION eastus2
azd env set LOCAL_STATE true
continue-on-error: true
- name: 🧪 Test Live Regional Availability Checks
if: steps.azure-login.outcome == 'success'
run: |
cd devops/scripts/azd/helpers
source preflight-checks.sh
# Enable live checks with Azure auth
export PREFLIGHT_LIVE_CHECKS=true
export AZURE_LOCATION=eastus2
echo "🔍 Testing LIVE regional availability checks with Azure CLI..."
echo ""
# Test individual helper functions
echo "Testing check_provider_region for Cosmos DB..."
if check_provider_region "Microsoft.DocumentDB" "databaseAccounts" "eastus2"; then
echo "✅ Cosmos DB available in eastus2"
else
echo "⚠️ Cosmos DB check returned false (may still be available)"
fi
echo ""
echo "Testing check_cognitive_services_region for Speech..."
if check_cognitive_services_region "SpeechServices" "eastus2"; then
echo "✅ Speech Services available in eastus2"
else
echo "⚠️ Speech Services check returned false"
fi
echo ""
echo "Testing check_openai_model_region..."
if check_openai_model_region "eastus2"; then
echo "✅ Azure OpenAI available in eastus2"
else
echo "⚠️ Azure OpenAI check returned false"
fi
echo ""
echo "Getting available regions for Container Apps..."
regions=$(get_provider_regions "Microsoft.App" "containerApps")
echo "Container Apps regions: $regions"
echo ""
echo "Running full regional availability check..."
check_regional_availability
continue-on-error: true
- name: 🧪 Test Cached Regional Checks (Fallback)
run: |
cd devops/scripts/azd/helpers
source preflight-checks.sh
# Force cached mode
export PREFLIGHT_LIVE_CHECKS=false
export CI=true
echo "Testing cached regional availability checks..."
for region in eastus2 swedencentral westus2 westeurope japaneast; do
export AZURE_LOCATION="$region"
echo ""
echo "📍 Region: $region"
check_regional_availability || true
done
continue-on-error: true
- name: 🧪 Run Preprovision Hook (Dry Run)
run: |
export LOCAL_STATE=true
export AZURE_ENV_NAME=ci-integration-test
export AZURE_LOCATION=eastus2
export PREFLIGHT_LIVE_CHECKS=${{ steps.azure-login.outcome == 'success' && 'true' || 'false' }}
echo "Running preprovision hook..."
echo " LOCAL_STATE=$LOCAL_STATE"
echo " PREFLIGHT_LIVE_CHECKS=$PREFLIGHT_LIVE_CHECKS"
bash devops/scripts/azd/preprovision.sh terraform || true
continue-on-error: true
- name: 📋 Integration Test Summary
if: always()
run: |
echo "## 🔗 Integration Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Test | Status |" >> $GITHUB_STEP_SUMMARY
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 🔐 Azure Login | ${{ steps.azure-login.outcome == 'success' && '🟢 Authenticated' || '⚪ Skipped' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🌍 Live Region Checks | ${{ steps.azure-login.outcome == 'success' && '🟢 Tested' || '⚪ Skipped (no auth)' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 📦 Cached Region Checks | 🟢 Tested |" >> $GITHUB_STEP_SUMMARY
echo "| 🚀 Preprovision Hook | 🟢 Executed |" >> $GITHUB_STEP_SUMMARY
# ============================================================================
# JOB: Summary
# ============================================================================
summary:
name: 📊 Test Summary
runs-on: ubuntu-latest
needs: [lint, test-linux, test-macos, test-windows, test-devcontainer]
if: always()
steps:
- name: 📊 Generate Summary
run: |
echo "# 🧪 AZD Hooks Test Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Platform Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Platform | Status |" >> $GITHUB_STEP_SUMMARY
echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 🔍 Lint | ${{ needs.lint.result == 'success' && '🟢 Passed' || '🔴 Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🐧 Linux | ${{ needs.test-linux.result == 'success' && '🟢 Passed' || '🔴 Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🍎 macOS | ${{ needs.test-macos.result == 'success' && '🟢 Passed' || '🔴 Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🪟 Windows | ${{ needs.test-windows.result == 'success' && '🟢 Passed' || '🔴 Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🐳 Dev Container | ${{ needs.test-devcontainer.result == 'success' && '🟢 Passed' || '🔴 Failed' }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "## Tested Scripts" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- \`devops/scripts/azd/preprovision.sh\`" >> $GITHUB_STEP_SUMMARY
echo "- \`devops/scripts/azd/postprovision.sh\`" >> $GITHUB_STEP_SUMMARY
echo "- \`devops/scripts/azd/helpers/*.sh\`" >> $GITHUB_STEP_SUMMARY
- name: ✅ Check Results
run: |
if [[ "${{ needs.test-linux.result }}" != "success" ]] || \
[[ "${{ needs.test-macos.result }}" != "success" ]] || \
[[ "${{ needs.test-windows.result }}" != "success" ]] || \
[[ "${{ needs.test-devcontainer.result }}" != "success" ]]; then
echo "❌ Some platform tests failed"
exit 1
fi
echo "✅ All platform tests passed!"