5252 UNIQUE_PREFIX : ${{ vars.UNIQUE_PREFIX }}
5353 TENANT_ID : ${{ vars.TENANT_ID }}
5454 CLUSTER_RESOURCE_GROUP_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
55- SQL_SERVER_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
56- SQL_SERVER_FQDN : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}.database.windows.net
55+ POSTGRES_SERVER_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
56+ POSTGRES_HOST : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}.postgres. database.azure.com
5757
5858 steps :
5959 - name : Checkout Code
@@ -83,15 +83,16 @@ jobs:
8383 working-directory : cloud-infrastructure/cluster
8484 env :
8585 CLUSTER_RESOURCE_GROUP_NAME : ${{ env.CLUSTER_RESOURCE_GROUP_NAME }}
86- SQL_SERVER_NAME : ${{ env.SQL_SERVER_NAME }}
87- SQL_DATABASE_NAME : ${{ inputs.database_name }}
86+ POSTGRES_SERVER_NAME : ${{ env.POSTGRES_SERVER_NAME }}
87+ DATABASE_NAME : ${{ inputs.database_name }}
8888 run : bash ./firewall.sh open
8989
9090 - name : Generate Script for Pending Migrations
9191 id : generate-migration-script
9292 working-directory : application
9393 run : |
94- CONNECTION_STRING="Server=tcp:${{ env.SQL_SERVER_FQDN }},1433;Database=${{ inputs.database_name }};Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication=Active Directory Default;"
94+ ENTRA_USER=$(az postgres flexible-server microsoft-entra-admin list --resource-group ${{ env.CLUSTER_RESOURCE_GROUP_NAME }} --server-name ${{ env.POSTGRES_SERVER_NAME }} --query "[0].principalName" --output tsv)
95+ CONNECTION_STRING="Host=${{ env.POSTGRES_HOST }};Database=${{ inputs.database_name }};Username=$ENTRA_USER;Password=$(az account get-access-token --resource-type oss-rdbms --query accessToken --output tsv);Ssl Mode=Require;"
9596
9697 echo "Checking for pending migrations..."
9798 MIGRATION_INFO=$(dotnet ef migrations list \
@@ -143,8 +144,8 @@ jobs:
143144 working-directory : cloud-infrastructure/cluster
144145 env :
145146 CLUSTER_RESOURCE_GROUP_NAME : ${{ env.CLUSTER_RESOURCE_GROUP_NAME }}
146- SQL_SERVER_NAME : ${{ env.SQL_SERVER_NAME }}
147- SQL_DATABASE_NAME : ${{ inputs.database_name }}
147+ POSTGRES_SERVER_NAME : ${{ env.POSTGRES_SERVER_NAME }}
148+ DATABASE_NAME : ${{ inputs.database_name }}
148149 run : bash ./firewall.sh close
149150
150151 - name : Upload Migration Script
@@ -239,8 +240,8 @@ jobs:
239240 UNIQUE_PREFIX : ${{ vars.UNIQUE_PREFIX }}
240241 TENANT_ID : ${{ vars.TENANT_ID }}
241242 CLUSTER_RESOURCE_GROUP_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
242- SQL_SERVER_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
243- SQL_SERVER_FQDN : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}.database.windows.net
243+ POSTGRES_SERVER_NAME : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
244+ POSTGRES_HOST : ${{ vars.UNIQUE_PREFIX }}-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}.postgres. database.azure.com
244245
245246 steps :
246247 - name : Checkout Code
@@ -259,25 +260,23 @@ jobs:
259260 name : migration-script-${{ inputs.azure_environment }}-${{ inputs.cluster_location_acronym }}
260261 path : .
261262
262- - name : Install Microsoft sqlcmd Utility
263- run : |
264- curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc &&
265- sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/prod.list)" &&
266- sudo apt-get update &&
267- sudo apt-get install -y sqlcmd
263+ - name : Install PostgreSQL Client
264+ run : sudo apt-get update && sudo apt-get install -y postgresql-client
268265
269266 - name : Open Firewall
270267 working-directory : cloud-infrastructure/cluster
271268 env :
272269 CLUSTER_RESOURCE_GROUP_NAME : ${{ env.CLUSTER_RESOURCE_GROUP_NAME }}
273- SQL_SERVER_NAME : ${{ env.SQL_SERVER_NAME }}
274- SQL_DATABASE_NAME : ${{ inputs.database_name }}
270+ POSTGRES_SERVER_NAME : ${{ env.POSTGRES_SERVER_NAME }}
271+ DATABASE_NAME : ${{ inputs.database_name }}
275272 run : bash ./firewall.sh open
276273
277274 - name : Apply Migrations
278275 run : |
279- echo "Applying migrations to ${{ inputs.database_name }} database on ${{ env.SQL_SERVER_FQDN }}..."
280- sqlcmd -S "tcp:${{ env.SQL_SERVER_FQDN }},1433" -d "${{ inputs.database_name }}" --authentication-method=ActiveDirectoryDefault --exit-on-error -i migration.sql
276+ echo "Applying migrations to ${{ inputs.database_name }} database on ${{ env.POSTGRES_HOST }}..."
277+ ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --query accessToken --output tsv)
278+ ENTRA_USER=$(az postgres flexible-server microsoft-entra-admin list --resource-group ${{ env.CLUSTER_RESOURCE_GROUP_NAME }} --server-name ${{ env.POSTGRES_SERVER_NAME }} --query "[0].principalName" --output tsv)
279+ PGPASSWORD=$ACCESS_TOKEN psql "host=${{ env.POSTGRES_HOST }} dbname=${{ inputs.database_name }} user='$ENTRA_USER' sslmode=require" -f migration.sql
281280 echo "Migrations applied successfully!"
282281
283282 - name : Display Migration Summary
@@ -290,6 +289,6 @@ jobs:
290289 working-directory : cloud-infrastructure/cluster
291290 env :
292291 CLUSTER_RESOURCE_GROUP_NAME : ${{ env.CLUSTER_RESOURCE_GROUP_NAME }}
293- SQL_SERVER_NAME : ${{ env.SQL_SERVER_NAME }}
294- SQL_DATABASE_NAME : ${{ inputs.database_name }}
292+ POSTGRES_SERVER_NAME : ${{ env.POSTGRES_SERVER_NAME }}
293+ DATABASE_NAME : ${{ inputs.database_name }}
295294 run : bash ./firewall.sh close
0 commit comments