Skip to content

Commit

Permalink
use a single deployment workflow that is aware of PR vs merge
Browse files Browse the repository at this point in the history
  • Loading branch information
TimHess committed Feb 6, 2024
1 parent 1bde7a0 commit 3741261
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 103 deletions.
46 changes: 42 additions & 4 deletions .github/workflows/build-and-stage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,56 @@ name: Build and stage
env:
AZURE_WEBAPP_PACKAGE_PATH: '.'
DOTNET_VERSION: '8.0'
SLOT_NAME: staging

on:
push:
branches: [ "main" ]
pull_request:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
set-environment:
name: Determine workflow environment
runs-on: ubuntu-latest
outputs:
Slot_Name: ${{ steps.set-name.outputs.name }}
steps:
- id: set-name
run: echo "Slot_Name=${{ github.event_name == 'pull_request' && format('pr-', github.event.number) || vars.STAGING_SLOT_NAME }}" >> "$GITHUB_OUTPUT"

build:
name: Build and publish app
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Set up .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Set up dependency caching for faster builds
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Build with dotnet
- name: dotnet build
run: dotnet build src/Client --configuration Release

- name: dotnet publish
run: dotnet publish src/Client -c Release -o ${{ env.DOTNET_ROOT }}/mainsite

- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
Expand All @@ -48,8 +66,10 @@ jobs:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Staging'
name: ${{ needs.set-environment.outputs.Slot_Name }}
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
env:
SLOT_NAME: ${{ needs.set-environment.outputs.Slot_Name }}

steps:
- name: Download artifact from build job
Expand All @@ -62,10 +82,28 @@ jobs:
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}

- name: If PR, create a new staging slot
if: ${{ github.event_name == 'pull_request' }}
run: az webapp deployment slot create --resource-group ${{ vars.AZURE_RESOURCE_GROUP }} --name ${{ vars.AZURE_WEBAPP_NAME}} --slot ${{ env.SLOT_NAME }}

- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: ${{ vars.AZURE_WEBAPP_NAME }}
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}
slot-name: ${{ env.SLOT_NAME }}

- name: If PR, comment with the preview link
if: ${{ github.event_name == 'pull_request' }}
uses: mshick/add-pr-comment@v2
with:
message: |
## Preview link: https://${{ vars.AZURE_WEBAPP_NAME }}-${{ env.SLOT_NAME }}.azurewebsites.net
- Your changes have been deployed to the preview site. The preview site will update as you add more commits to this branch.
- The preview link is shareable, but will be deleted when the pull request is merged or closed.
> *This is an automated message.*
repo-token: ${{ secrets.GITHUB_TOKEN }}

1 change: 0 additions & 1 deletion .github/workflows/pr-cleanup.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

name: Delete a preview environment

on:
Expand Down
98 changes: 0 additions & 98 deletions .github/workflows/pr-deploy.yml

This file was deleted.

0 comments on commit 3741261

Please sign in to comment.