name: 10 .NET on: workflow_dispatch: push: branches: [main] paths: - '!**' - 'dotnet-sample/**' pull_request: branches: [main] paths: - '!**' - 'dotnet-sample/**' permissions: id-token: write contents: read defaults: run: working-directory: dotnet-sample jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v3 with: dotnet-version: 7.0.x - name: Set up dependency caching for faster builds uses: actions/cache@v3 with: path: ~/.nuget/packages key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} restore-keys: | ${{ runner.os }}-nuget- - name: Restore dependencies run: dotnet restore - name: Build run: dotnet build --configuration Release --no-restore - name: Test run: dotnet test --no-build --verbosity normal - name: dotnet publish run: dotnet publish -c Release -o ./webapp - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: webapp path: ./dotnet-sample/webapp - name: Upload artifact for deployment job uses: actions/upload-artifact@v3 with: name: iac path: ./dotnet-sample/iac deploy-webapp: needs: [build] environment: dotnet runs-on: ubuntu-latest steps: # Checkout code - name: Download IaC uses: actions/download-artifact@v3 with: name: iac path: iac # Log into Azure - uses: azure/login@v1 name: Sign in to Azure with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Deploy Bicep file - name: deploy id: deploy uses: azure/arm-deploy@v1 with: resourceGroupName: ${{ secrets.AZURE_RG }} template: ./iac/main.bicep parameters: webAppName=${{ secrets.AZURE_APP_NAME }} failOnStdErr: false - name: Download App uses: actions/download-artifact@v3 with: name: webapp path: webapp - name: 'Run Azure webapp deploy action using publish profile credentials' uses: azure/webapps-deploy@v2 with: app-name: ${{ steps.deploy.outputs.webAppName }} # Replace with your app name package: 'webapp'