1+ name : Deploy MessageQueueProcessor to Test
2+ on :
3+ push :
4+ branches :
5+ - RC
6+
7+ permissions :
8+ id-token : write
9+ contents : read
10+
11+ jobs :
12+ terraform :
13+ runs-on : ubuntu-latest
14+ environment : test
15+ name : ' Terraform MessageQueueProcessor'
16+ env :
17+ ARM_CLIENT_ID : ${{ secrets.AZURE_CLIENT_ID }}
18+ ARM_CLIENT_SECRET : ${{ secrets.AZURE_CLIENT_SECRET }}
19+ ARM_SUBSCRIPTION_ID : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
20+ ARM_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
21+
22+ steps :
23+ - uses : actions/checkout@v2
24+
25+ - name : Set up Terraform
26+ uses : hashicorp/setup-terraform@v3
27+ with :
28+ terraform_wrapper : false # Skip wrapper script installation
29+
30+ - name : ' Terraform init'
31+ id : init
32+ run : |
33+ cd LearningHub.Nhs.MessageQueueProcessor/Terraform
34+ terraform init "-backend-config=backend-test.tfvars"
35+
36+ - name : ' Terraform apply'
37+ id : apply
38+ run : |
39+ cd LearningHub.Nhs.MessageQueueProcessor/Terraform
40+ terraform apply -auto-approve \
41+ -var="ResourceGroupName=${{ vars.AZURE_RESOURCE_GROUP_NAME }}" \
42+ -var="ResourceGroupLocation=${{ vars.AZURE_RESOURCE_GROUP_LOCATION }}" \
43+ -var="SqlmiName=${{ vars.SQLMI_NAME }}" \
44+ -var="SQLAdministratorLogin=${{ vars.SQL_ADMINISTRATOR_LOGIN }}" \
45+ -var="SQLAdministratorLoginPassword=${{ secrets.SQL_ADMINISTRATOR_LOGIN_PASSWORD }}" \
46+ -var="SQLSkuName=${{ vars.SQL_SKU_NAME }}" \
47+ -var="SQLStorageSize=${{ vars.SQL_STORAGE_SIZE }}" \
48+ -var="SQLVcores=${{ vars.SQL_VCORES }}" \
49+ -var="Environment=Test"
50+
51+ build_and_deploy :
52+ needs : terraform
53+ runs-on : ubuntu-latest
54+ environment : test
55+ name : ' Build and deploy the MessageQueueProcessor'
56+ env :
57+ AZURE_SUBSCRIPTION_ID : ${{ secrets.AZURE_CLIENT_ID }}
58+ AZURE_TENANT_ID : ${{ secrets.AZURE_TENANT_ID }}
59+
60+ steps :
61+ - name : Checkout code
62+ uses : actions/checkout@v2
63+
64+ - name : Setup .NET
65+ uses : actions/setup-dotnet@v4
66+ with :
67+ dotnet-version : ' 8.0.x'
68+
69+ - name : Add Azure artifact
70+ run : dotnet nuget add source 'https://pkgs.dev.azure.com/e-LfH/_packaging/LearningHubFeed/nuget/v3/index.json' --name 'LearningHubFeed' --username 'colin.beeby' --password ${{ secrets.AZURE_DEVOPS_PAT }} --store-password-in-clear-text
71+
72+ - name : Restore dependencies
73+ run : |
74+ cd LearningHub.Nhs.MessageQueueProcessor
75+ dotnet restore
76+
77+ - name : Replace values in appsettings.json
78+ run : |
79+ cd LearningHub.Nhs.MessageQueueProcessor
80+ sed -i -e 's|INSTRUMENTATION_KEY|${{ secrets.APPLICATION_INSIGHTS_INSTRUMENTATION_KEY }}|g' appsettings.json
81+ sed -i -e 's|BASE_URL|${{ vars.SETTINGS_BASE_URL }}|g' appsettings.json
82+ sed -i -e 's|API_KEY|${{ secrets.SETTINGS_API_KEY }}|g' appsettings.json
83+
84+ - name : Build project
85+ run : dotnet build
86+
87+ - name : Publish Project
88+ run : dotnet publish --output ./publish
89+
90+ - name : Zip published output
91+ run : |
92+ cd publish
93+ zip -r ../functionapp.zip .
94+
95+ - name : ' Az CLI login'
96+ uses : azure/login@v1
97+ with :
98+ client-id : ${{ secrets.AZURE_CLIENT_ID }}
99+ tenant-id : ${{ secrets.AZURE_TENANT_ID }}
100+ subscription-id : ${{ secrets.AZURE_SUBSCRIPTION_ID }}
101+
102+ - name : Deploy to Azure Function App
103+ uses : Azure/Functions-action@v1
104+ with :
105+ app-name : ' MessageQueueProcessorApp'
106+ package : ' ./functionapp.zip'
107+ publish-profile : ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
0 commit comments