diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e0227793..81860fce0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,7 +111,7 @@ jobs: rg_exists=$(az group exists --name ${{ env.RESOURCE_GROUP_NAME }}) if [ "$rg_exists" = "false" ]; then echo "Resource group does not exist. Creating..." - az group create --name ${{ env.RESOURCE_GROUP_NAME }} --location ${{ env.AZURE_LOCATION }} --tags SecurityControl=Ignore CreatedBy="Pipeline" || { echo "Error creating resource group"; exit 1; } + az group create --name ${{ env.RESOURCE_GROUP_NAME }} --location ${{ env.AZURE_LOCATION }} --tags SecurityControl=Ignore CreatedBy="Pipeline" || { echo "Error creating resource group"; exit 1; } else echo "Resource group already exists." fi @@ -170,10 +170,15 @@ jobs: az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID az account set --subscription $AZURE_SUBSCRIPTION_ID - # Capture deployment output to a log file + # Run CI tests + echo "=== Running CI Tests ===" make ci 2>&1 | tee ci_output.log + + # Deploy with verbose output + echo "=== Starting Deployment ===" make deploy 2>&1 | tee deploy_output.log + # Try to extract URLs from deployment logs as backup echo "=== Extracting URLs from deployment logs ===" grep -oE "https://[a-zA-Z0-9.-]*\.azurewebsites\.net/" deploy_output.log | sort | uniq | head -2 | tee extracted_urls.txt || echo "No URLs found in logs" @@ -195,6 +200,7 @@ jobs: AZURE_ENV_NAME AZURE_LOCATION AZURE_RESOURCE_GROUP + AZURE_APP_SERVICE_HOSTING_MODEL=code AUTH_ENABLED=false AZURE_USE_AUTHENTICATION=false AZURE_ENABLE_AUTH=false @@ -288,6 +294,72 @@ jobs: AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} + - name: Verify Deployment URLs + run: | + echo "=== Verifying Deployed Applications ===" + echo "" + + # Wait a bit for services to be ready + echo "⏳ Waiting 2 minutes for services to stabilize..." + sleep 120 + + # Check Frontend URL + if [ -n "${{ env.FRONTEND_WEBSITE_URL }}" ]; then + echo "🔍 Checking Frontend URL: ${{ env.FRONTEND_WEBSITE_URL }}" + + HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -L "${{ env.FRONTEND_WEBSITE_URL }}" || echo "000") + + if [ "$HTTP_CODE" = "200" ]; then + echo "✅ Frontend is UP and responding (HTTP $HTTP_CODE)" + + # Check if it's the actual app or default page + RESPONSE=$(curl -s -L "${{ env.FRONTEND_WEBSITE_URL }}") + if echo "$RESPONSE" | grep -q "Hey, Python developers"; then + echo "❌ WARNING: Frontend is showing DEFAULT Azure page - deployment failed!" + echo "This indicates the application code was NOT deployed correctly" + exit 1 + else + echo "✅ Frontend appears to be the actual application" + fi + else + echo "❌ Frontend is DOWN or not responding properly (HTTP $HTTP_CODE)" + echo "⚠️ This may indicate a deployment issue - check App Service logs" + fi + else + echo "⚠️ Frontend URL not available" + fi + + echo "" + + # Check Admin URL + if [ -n "${{ env.ADMIN_WEBSITE_URL }}" ]; then + echo "🔍 Checking Admin URL: ${{ env.ADMIN_WEBSITE_URL }}" + + HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -L "${{ env.ADMIN_WEBSITE_URL }}" || echo "000") + + if [ "$HTTP_CODE" = "200" ]; then + echo "✅ Admin is UP and responding (HTTP $HTTP_CODE)" + + # Check if it's the actual app or default page + RESPONSE=$(curl -s -L "${{ env.ADMIN_WEBSITE_URL }}") + if echo "$RESPONSE" | grep -q "Hey, Python developers"; then + echo "❌ WARNING: Admin is showing DEFAULT Azure page - deployment failed!" + echo "This indicates the application code was NOT deployed correctly" + exit 1 + else + echo "✅ Admin appears to be the actual application" + fi + else + echo "❌ Admin is DOWN or not responding properly (HTTP $HTTP_CODE)" + echo "⚠️ This may indicate a deployment issue - check App Service logs" + fi + else + echo "⚠️ Admin URL not available" + fi + + echo "" + echo "=== Deployment URL Verification Complete ===" + - name: Export PostgreSQL Host Endpoint from Makefile run: | # Only extract the PostgreSQL host endpoint from Makefile output diff --git a/Makefile b/Makefile index da9566de8..be741c08c 100644 --- a/Makefile +++ b/Makefile @@ -71,12 +71,16 @@ deploy: azd-login ## Deploy everything to Azure @azd env new ${AZURE_ENV_NAME} --location ${AZURE_LOCATION} @azd env set AZURE_RESOURCE_GROUP ${AZURE_RESOURCE_GROUP} + @azd env set AZURE_APP_SERVICE_HOSTING_MODEL code # Provision and deploy @azd provision --no-prompt + @azd deploy web --no-prompt || true @azd deploy function --no-prompt || true @azd deploy adminweb --no-prompt + + @azd env get-values > .env.temp @cat .env.temp