|
107 | 107 |
|
108 | 108 | # Deploy the Bicep template |
109 | 109 | echo "Deploying Bicep template [$TEMPLATE]..." |
110 | | -echo "DEBUG: Listing existing resource groups before deployment..." |
111 | | -$AZ group list --query "[].name" -o table || true |
112 | | - |
113 | | -# Capture full deployment output for debugging |
114 | | -DEPLOYMENT_RESULT=$($AZ deployment group create \ |
| 110 | +if DEPLOYMENT_OUTPUTS=$($AZ deployment group create \ |
115 | 111 | --resource-group $RESOURCE_GROUP_NAME \ |
| 112 | + --only-show-errors \ |
116 | 113 | --template-file $TEMPLATE \ |
117 | 114 | --parameters $PARAMETERS \ |
118 | 115 | --parameters location=$LOCATION \ |
119 | 116 | prefix=$PREFIX \ |
120 | 117 | suffix=$SUFFIX \ |
121 | 118 | managedIdentityType=$MANAGED_IDENTITY_TYPE \ |
122 | | - -o json 2>&1) || true |
123 | | - |
124 | | -echo "DEBUG: Full deployment result:" |
125 | | -echo "$DEPLOYMENT_RESULT" | jq . 2>/dev/null || echo "$DEPLOYMENT_RESULT" |
126 | | - |
127 | | -# Check if deployment succeeded |
128 | | -PROVISIONING_STATE=$(echo "$DEPLOYMENT_RESULT" | jq -r '.properties.provisioningState // empty' 2>/dev/null) |
129 | | -echo "DEBUG: Provisioning State: $PROVISIONING_STATE" |
130 | | - |
131 | | -if [[ "$PROVISIONING_STATE" == "Succeeded" ]]; then |
132 | | - echo "Bicep template [$TEMPLATE] deployed successfully." |
133 | | - |
134 | | - # Extract outputs |
135 | | - DEPLOYMENT_OUTPUTS=$(echo "$DEPLOYMENT_RESULT" | jq '.properties.outputs // empty' 2>/dev/null) |
136 | | - |
137 | | - if [[ -n "$DEPLOYMENT_OUTPUTS" ]] && echo "$DEPLOYMENT_OUTPUTS" | jq empty 2>/dev/null; then |
138 | | - echo "Outputs:" |
139 | | - echo "$DEPLOYMENT_OUTPUTS" | jq . |
140 | | - APP_SERVICE_PLAN_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.appServicePlanName.value // empty') |
141 | | - WEB_APP_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.webAppName.value // empty') |
142 | | - WEB_APP_URL=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.webAppUrl.value // empty') |
143 | | - STORAGE_ACCOUNT_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.storageAccountName.value // empty') |
144 | | - echo "Deployment details:" |
145 | | - echo "- appServicePlanName: $APP_SERVICE_PLAN_NAME" |
146 | | - echo "- webAppName: $WEB_APP_NAME" |
147 | | - echo "- webAppUrl: $WEB_APP_URL" |
148 | | - echo "- storageAccountName: $STORAGE_ACCOUNT_NAME" |
149 | | - else |
150 | | - echo "Warning: Could not parse deployment outputs. Attempting to retrieve resource names directly..." |
151 | | - |
152 | | - WEB_APP_NAME=$($AZ webapp list \ |
153 | | - --resource-group $RESOURCE_GROUP_NAME \ |
154 | | - --query "[0].name" \ |
155 | | - -o tsv 2>/dev/null || echo "") |
156 | | - |
157 | | - STORAGE_ACCOUNT_NAME=$($AZ storage account list \ |
158 | | - --resource-group $RESOURCE_GROUP_NAME \ |
159 | | - --query "[0].name" \ |
160 | | - -o tsv 2>/dev/null || echo "") |
161 | | - |
162 | | - APP_SERVICE_PLAN_NAME=$($AZ appservice plan list \ |
163 | | - --resource-group $RESOURCE_GROUP_NAME \ |
164 | | - --query "[0].name" \ |
165 | | - -o tsv 2>/dev/null || echo "") |
166 | | - |
167 | | - echo "Retrieved resource names:" |
168 | | - echo "- appServicePlanName: $APP_SERVICE_PLAN_NAME" |
169 | | - echo "- webAppName: $WEB_APP_NAME" |
170 | | - echo "- storageAccountName: $STORAGE_ACCOUNT_NAME" |
171 | | - fi |
| 119 | + --query 'properties.outputs' -o json); then |
| 120 | + echo "Bicep template [$TEMPLATE] deployed successfully. Outputs:" |
| 121 | + echo "$DEPLOYMENT_OUTPUTS" | jq . |
| 122 | + APP_SERVICE_PLAN_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.appServicePlanName.value') |
| 123 | + WEB_APP_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.webAppName.value') |
| 124 | + WEB_APP_URL=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.webAppUrl.value') |
| 125 | + STORAGE_ACCOUNT_NAME=$(echo "$DEPLOYMENT_OUTPUTS" | jq -r '.storageAccountName.value') |
| 126 | + echo "Deployment details:" |
| 127 | + echo "- appServicePlanName: $APP_SERVICE_PLAN_NAME" |
| 128 | + echo "- webAppName: $WEB_APP_NAME" |
| 129 | + echo "- webAppUrl: $WEB_APP_URL" |
| 130 | + echo "- storageAccountName: $STORAGE_ACCOUNT_NAME" |
172 | 131 | else |
173 | | - echo "ERROR: Bicep template [$TEMPLATE] deployment failed!" |
174 | | - echo "Provisioning State: $PROVISIONING_STATE" |
175 | | - echo "" |
176 | | - echo "Full deployment error details:" |
177 | | - echo "$DEPLOYMENT_RESULT" | jq . 2>/dev/null || echo "$DEPLOYMENT_RESULT" |
178 | | - echo "" |
179 | | - |
180 | | - # Try to extract specific error message |
181 | | - ERROR_MESSAGE=$(echo "$DEPLOYMENT_RESULT" | jq -r '.properties.error.message // .error.message // .message // empty' 2>/dev/null) |
182 | | - ERROR_CODE=$(echo "$DEPLOYMENT_RESULT" | jq -r '.properties.error.code // .error.code // .code // empty' 2>/dev/null) |
183 | | - if [[ -n "$ERROR_MESSAGE" ]]; then |
184 | | - echo "Error Code: $ERROR_CODE" |
185 | | - echo "Error Message: $ERROR_MESSAGE" |
186 | | - fi |
187 | | - |
188 | | - # Check for resource-specific errors |
189 | | - echo "" |
190 | | - echo "DEBUG: Checking LocalStack logs..." |
191 | | - docker logs localstack-main --tail 50 2>&1 | grep -i "error\|exception\|fail" || true |
192 | | - |
| 132 | + echo "Failed to deploy Bicep template [$TEMPLATE]" |
193 | 133 | exit 1 |
194 | 134 | fi |
195 | 135 |
|
|
0 commit comments