name: Build and deploy ASP.Net Core app to Azure Web App - criminalmindsapi
env:
  WORKING_DIRECTORY: ./server
on:
  push:
    branches:
      - production
  workflow_dispatch:
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.x'
      - name: Build with dotnet
        run: dotnet build --configuration Release
        working-directory: ${{ env.WORKING_DIRECTORY }}
      - name: dotnet publish
        run: dotnet publish -c Release -o release
        working-directory: ${{ env.WORKING_DIRECTORY }}
      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v4
        with:
          name: server
          path: ./server/release
  deploy:
    runs-on: windows-latest
    needs: build
    environment:
      name: 'production'
      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
    permissions:
      id-token: write
    steps:
      - name: Download artifact from build job
        uses: actions/download-artifact@v4.1.7
        with:
          name: server
      - name: Login to Azure
        uses: azure/login@v1
        with:
          client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_936FD4F727B94B4CA24C582D0863DF06 }}
          tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_0FB05F3F513C480395D15114ABAF36E0 }}
          subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_D1C0B88C12EF49D0BEEB5F2ACE6EC4FC }}
      - name: Deploy to Azure Web App
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'criminalmindsapi'
          slot-name: 'production'
          package: .
          
