This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy | |
# More GitHub Actions for Azure: https://github.com/Azure/actions | |
name: Build and deploy ASP.Net Core app to Azure Web App - BlotzTaskApp | |
on: | |
push: | |
paths: | |
- 'blotztask-api/**' | |
branches: | |
- main | |
workflow_dispatch: | |
permissions: # Do i need a permission write here ? | |
id-token: write | |
contents: read | |
jobs: | |
build: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up .NET Core | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: '8.0' | |
- name: Build with dotnet | |
working-directory: ./blotztask-api | |
run: dotnet build --configuration Release | |
- name: .Net - Tool restore | |
working-directory: ./blotztask-api | |
run: dotnet tool restore | |
- name: dotnet publish | |
working-directory: ./blotztask-api | |
run: dotnet publish -c Release -o ${{ runner.temp }}/blotztask-api | |
- name: Upload artifacts for deployment job | |
uses: actions/upload-artifact@v4 | |
with: | |
name: .net-app | |
path: ${{ runner.temp }}/blotztask-api | |
- name: Generate EF Core migration script | |
working-directory: ./blotztask-api | |
run: dotnet ef migrations script -o ${{ runner.temp }}/migrations.sql | |
- name: Upload migration script for deployment job | |
uses: actions/upload-artifact@v4 | |
with: | |
name: db-migrations | |
path: ${{ runner.temp }}/migrations.sql | |
deploy: | |
runs-on: windows-latest | |
needs: build | |
environment: | |
name: 'Production' | |
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} | |
steps: | |
- name: Download artifact from build job | |
uses: actions/download-artifact@v4 | |
with: | |
name: .net-app | |
- name: Download artifact from build job | |
uses: actions/download-artifact@v4 | |
with: | |
name: db-migrations | |
- name: Azure login | |
uses: azure/login@v2 | |
with: | |
client-id: ${{ vars.AZURE_CLIENT_ID }} | |
tenant-id: ${{ vars.AZURE_TENANT_ID }} | |
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }} | |
- uses: Azure/get-keyvault-secrets@v1 | |
with: | |
keyvault: "kv-blotztask-prod" # TODO: do different way to get this | |
secrets: 'db-string-connection' | |
id: get-secret-connection-strings | |
- name: EF - Apply Migration SQL Script | |
uses: azure/sql-action@v2.3 | |
with: | |
connection-string: ${{ steps.get-secret-connection-strings.outputs.db-string-connection }} # TODO: do different way to get this | |
path: ./migrations.sql | |
skip-firewall-check: true | |
- name: Deploy to Azure Web App #What if my deployment failed here? can i rollback the above script deployment? You cant, you just need to make the schema changes is backward compitatble | |
id: deploy-to-webapp | |
uses: azure/webapps-deploy@v3 | |
with: | |
app-name: 'wapp-blotztaskapp' | |
slot-name: 'Production' | |
package: './' | |
- name: azure logout | |
run: | | |
az logout |