2626 export GPT_MIN_CAPACITY="30"
2727 export TEXT_EMBEDDING_MIN_CAPACITY="45"
2828 export AZURE_REGIONS="${{ vars.AZURE_REGIONS_RA }}"
29-
3029 chmod +x ResearchAssistant/Deployment/scripts/checkquota.sh
3130 if ! ResearchAssistant/Deployment/scripts/checkquota.sh; then
3231 # If quota check fails due to insufficient quota, set the flag
4746 }
4847 EOF
4948 )
50-
5149 curl -X POST "${{ secrets.LOGIC_APP_URL }}" \
5250 -H "Content-Type: application/json" \
5351 -d "$EMAIL_BODY" || echo "Failed to send notification"
54-
5552 - name : Fail Pipeline if Quota Check Fails
5653 if : env.QUOTA_FAILED == 'true'
5754 run : exit 1
@@ -60,28 +57,25 @@ jobs:
6057 run : |
6158 curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
6259 az --version # Verify installation
63-
6460 - name : Login to Azure
6561 run : |
6662 az login --service-principal -u ${{ secrets.AZURE_CLIENT_ID }} -p ${{ secrets.AZURE_CLIENT_SECRET }} --tenant ${{ secrets.AZURE_TENANT_ID }}
67-
6863 - name : Install Bicep CLI
6964 run : az bicep install
7065
7166 - name : Set Deployment Region
7267 run : |
7368 echo "Selected Region: $VALID_REGION"
7469 echo "AZURE_LOCATION=$VALID_REGION" >> $GITHUB_ENV
75-
7670 - name : Generate Resource Group Name
7771 id : generate_rg_name
7872 run : |
7973 echo "Generating a unique resource group name..."
80- TIMESTAMP=$(date +%Y%m%d%H%M%S)
81- COMMON_PART="pslautomationRes"
82- UNIQUE_RG_NAME="${COMMON_PART}${TIMESTAMP }"
74+ ACCL_NAME="rabyoc" # Account name as specified
75+ SHORT_UUID=$(uuidgen | cut -d'-' -f1)
76+ UNIQUE_RG_NAME="arg-${ACCL_NAME}-${SHORT_UUID }"
8377 echo "RESOURCE_GROUP_NAME=${UNIQUE_RG_NAME}" >> $GITHUB_ENV
84- echo "Generated Resource_GROUP_PREFIX : ${UNIQUE_RG_NAME}"
78+ echo "Generated RESOURCE_GROUP_NAME : ${UNIQUE_RG_NAME}"
8579
8680 - name : Check and Create Resource Group
8781 id : check_create_rg
9589 else
9690 echo "Resource group already exists."
9791 fi
98-
9992 - name : Generate Unique Solution Prefix
10093 id : generate_solution_prefix
10194 run : |
10699 UNIQUE_SOLUTION_PREFIX="${COMMON_PART}${UPDATED_TIMESTAMP}"
107100 echo "SOLUTION_PREFIX=${UNIQUE_SOLUTION_PREFIX}" >> $GITHUB_ENV
108101 echo "Generated SOLUTION_PREFIX: ${UNIQUE_SOLUTION_PREFIX}"
109-
110102 - name : Deploy Bicep Template
111103 id : deploy
112104 run : |
@@ -115,23 +107,19 @@ jobs:
115107 --resource-group ${{ env.RESOURCE_GROUP_NAME }} \
116108 --template-file ResearchAssistant/Deployment/bicep/main.bicep \
117109 --parameters solutionPrefix=${{ env.SOLUTION_PREFIX }}
118-
119110 - name : List KeyVaults and Store in Array
120111 id : list_keyvaults
121112 run : |
122-
123113 set -e
124114 echo "Listing all KeyVaults in the resource group ${RESOURCE_GROUP_NAME}..."
125115
126116 # Get the list of KeyVaults in the specified resource group
127117 keyvaults=$(az resource list --resource-group ${{ env.RESOURCE_GROUP_NAME }} --query "[?type=='Microsoft.KeyVault/vaults'].name" -o tsv)
128-
129118 if [ -z "$keyvaults" ]; then
130119 echo "No KeyVaults found in resource group ${RESOURCE_GROUP_NAME}."
131120 echo "KEYVAULTS=[]" >> $GITHUB_ENV # If no KeyVaults found, set an empty array
132121 else
133122 echo "KeyVaults found: $keyvaults"
134-
135123 # Format the list into an array with proper formatting (no trailing comma)
136124 keyvault_array="["
137125 first=true
@@ -144,101 +132,97 @@ jobs:
144132 fi
145133 done
146134 keyvault_array="$keyvault_array]"
147-
148135 # Output the formatted array and save it to the environment variable
149136 echo "KEYVAULTS=$keyvault_array" >> $GITHUB_ENV
150137 fi
151138
152139 - name : Delete Bicep Deployment
153- if : success ()
140+ if : always ()
154141 run : |
155142 set -e
156143 echo "Checking if resource group exists..."
157144 rg_exists=$(az group exists --name ${{ env.RESOURCE_GROUP_NAME }})
158145 if [ "$rg_exists" = "true" ]; then
159- echo "Resource group exist . Cleaning..."
160- az group delete \
161- --name ${{ env.RESOURCE_GROUP_NAME }} \
162- --yes \
163- --no-wait
164- echo "Resource group deleted... ${{ env.RESOURCE_GROUP_NAME }}"
146+ echo "Resource group exists . Cleaning..."
147+ az group delete --name ${{ env.RESOURCE_GROUP_NAME }} --yes --no-wait
148+ echo "Initiated deletion of resource group: ${{ env.RESOURCE_GROUP_NAME }}"
149+ echo "Waiting for resource group deletion to complete..."
150+ az group wait --deleted --name ${{ env.RESOURCE_GROUP_NAME }}
151+ echo "Resource group deletion completed: ${{ env.RESOURCE_GROUP_NAME }}"
165152 else
166- echo "Resource group does not exists ."
153+ echo "Resource group does not exist ."
167154 fi
168-
155+
169156 - name : Wait for resource deletion to complete
170157 run : |
171-
172- # List of keyvaults
173- KEYVAULTS="${{ env.KEYVAULTS }}"
174-
175- # Remove the surrounding square brackets, if they exist
176- stripped_keyvaults=$(echo "$KEYVAULTS" | sed 's/\[\|\]//g')
177-
178- # Convert the comma-separated string into an array
179- IFS=',' read -r -a resources_to_check <<< "$stripped_keyvaults"
180-
181- # Append new resources to the array
182- resources_to_check+=("${{ env.SOLUTION_PREFIX }}-openai" "${{ env.SOLUTION_PREFIX }}-cogser")
183-
184- echo "List of resources to check: ${resources_to_check[@]}"
185-
186- # Get the list of resources in YAML format
187- resource_list=$(az resource list --resource-group ${{ env.RESOURCE_GROUP_NAME }} --output yaml)
188-
189- # Maximum number of retries
190- max_retries=3
191-
192- # Retry intervals in seconds (30, 60, 120)
193- retry_intervals=(30 60 120)
194-
195- # Retry mechanism to check resources
196- retries=0
197- while true; do
198- resource_found=false
199-
200- # Iterate through the resources to check
201- for resource in "${resources_to_check[@]}"; do
202- echo "Checking resource: $resource"
203- if echo "$resource_list" | grep -q "name: $resource"; then
204- echo "Resource '$resource' exists in the resource group."
205- resource_found=true
158+ echo "Verifying if resource group '${{ env.RESOURCE_GROUP_NAME }}' still exists..."
159+ if az group exists --name ${{ env.RESOURCE_GROUP_NAME }} | grep -q "true"; then
160+ echo "Resource group exists. Proceeding with resource checks..."
161+ # List of keyvaults
162+ KEYVAULTS="${{ env.KEYVAULTS }}"
163+ # Remove the surrounding square brackets, if they exist
164+ stripped_keyvaults=$(echo "$KEYVAULTS" | sed 's/\[\|\]//g')
165+
166+ # Convert the comma-separated string into an array
167+ IFS=',' read -r -a resources_to_check <<< "$stripped_keyvaults"
168+
169+ # Append new resources to the array
170+ resources_to_check+=("${{ env.SOLUTION_PREFIX }}-openai" "${{ env.SOLUTION_PREFIX }}-cogser")
171+ echo "List of resources to check: ${resources_to_check[@]}"
172+
173+ # Get the list of resources in YAML format
174+ resource_list=$(az resource list --resource-group ${{ env.RESOURCE_GROUP_NAME }} --output yaml)
175+
176+ # Maximum number of retries
177+ max_retries=3
178+ # Retry intervals in seconds (30, 60, 120)
179+ retry_intervals=(30 60 120)
180+
181+ # Retry mechanism to check resources
182+ retries=0
183+ while true; do
184+ resource_found=false
185+ # Iterate through the resources to check
186+ for resource in "${resources_to_check[@]}"; do
187+ echo "Checking resource: $resource"
188+ if echo "$resource_list" | grep -q "name: $resource"; then
189+ echo "Resource '$resource' exists in the resource group."
190+ resource_found=true
191+ else
192+ echo "Resource '$resource' does not exist in the resource group."
193+ fi
194+ done
195+
196+ # If any resource exists, retry
197+ if [ "$resource_found" = true ]; then
198+ retries=$((retries + 1))
199+ if [ "$retries" -ge "$max_retries" ]; then
200+ echo "Maximum retry attempts reached. Exiting."
201+ break
202+ else
203+ # Wait for the appropriate interval for the current retry
204+ echo "Waiting for ${retry_intervals[$retries-1]} seconds before retrying..."
205+ sleep ${retry_intervals[$retries-1]}
206+ fi
206207 else
207- echo "Resource '$resource' does not exist in the resource group."
208- fi
209- done
210-
211- # If any resource exists, retry
212- if [ "$resource_found" = true ]; then
213- retries=$((retries + 1))
214- if [ "$retries" -ge "$max_retries" ]; then
215- echo "Maximum retry attempts reached. Exiting."
208+ echo "No resources found. Exiting."
216209 break
217- else
218- # Wait for the appropriate interval for the current retry
219- echo "Waiting for ${retry_intervals[$retries-1]} seconds before retrying..."
220- sleep ${retry_intervals[$retries-1]}
221210 fi
222- else
223- echo "No resources found. Exiting."
224- break
225- fi
226- done
227-
211+ done
212+ else
213+ echo "Resource group '${{ env.RESOURCE_GROUP_NAME }}' does not exist. Skipping resource listing."
214+ fi
228215 - name : Purging the Resources
229- if : success ()
216+ if : always ()
230217 run : |
231-
232218 set -e
233219 # Define variables
234220 OPENAI_COMMON_PART="-openai"
235221 openai_name="${{ env.SOLUTION_PREFIX }}${OPENAI_COMMON_PART}"
236222 echo "Azure OpenAI: $openai_name"
237-
238223 MULTISERVICE_COMMON_PART="-cogser"
239224 multiservice_account_name="${{ env.SOLUTION_PREFIX }}${MULTISERVICE_COMMON_PART}"
240225 echo "Azure MultiService Account: $multiservice_account_name"
241-
242226 # Purge OpenAI Resource
243227 echo "Purging the OpenAI Resource..."
244228 if ! az resource delete --ids /subscriptions/${{ secrets.AZURE_SUBSCRIPTION_ID }}/providers/Microsoft.CognitiveServices/locations/eastus2/resourceGroups/${{ env.RESOURCE_GROUP_NAME }}/deletedAccounts/$openai_name --verbose; then
0 commit comments