fix(deps): update dependency govuk-frontend to v5 #995
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
# This workflow will build a .NET project | |
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net | |
name: CI/CD | |
env: | |
DOTNET_VERSION: '8.x' | |
NODE_VERSION: '20' | |
APP_NAME: SAS-App | |
AZURE_WEBAPP_NAME: service-assessment-service # set this to the name of your Azure Web App | |
AZURE_WEBAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
build-test-package: | |
runs-on: ubuntu-latest | |
steps: | |
## Include all git history (fetch depth 0) for enhanced SonarCloud analysis (default is 1 for most recent commit) | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@87b7050bc53ea08284295505d98d2aa94301e852 # v4 | |
with: | |
dotnet-version: ${{ env.DOTNET_VERSION }} | |
- name: Setup Node.js environment | |
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
#### | |
## Setup for SonarCloud | |
#### | |
- name: Set up JDK 17 | |
uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4 | |
with: | |
java-version: 17 | |
distribution: 'zulu' | |
- name: Cache SonarCloud packages | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 | |
with: | |
path: ~\sonar\cache | |
key: ${{ runner.os }}-sonar | |
restore-keys: ${{ runner.os }}-sonar | |
- name: Install SonarCloud scanner | |
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' | |
shell: pwsh | |
working-directory: ./src/ServiceAssessmentService | |
run: | | |
dotnet tool install --global dotnet-sonarscanner | |
#### | |
## Build and test the Web UI code | |
#### | |
- name: Cache node_modules | |
id: node_modules-cache-webapp | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 | |
with: | |
path: ./src/ServiceAssessmentService/ServiceAssessmentService.WebApp/node_modules | |
key: ${{ runner.os }}-node_modules-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
- name: Install NPM dependencies (Web UI) | |
working-directory: ./src/ServiceAssessmentService/ServiceAssessmentService.WebApp | |
run: npm install | |
- name: Set up dependency caching for faster builds | |
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4 | |
with: | |
path: ~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: Build Web UI (webpack) | |
working-directory: ./src/ServiceAssessmentService/ServiceAssessmentService.WebApp | |
run: npm run buildCi | |
## TODO: npm run test | |
#### | |
## Build and test the Backend which serves the Web UI | |
#### | |
- name: Restore dependencies | |
working-directory: ./src/ServiceAssessmentService | |
run: dotnet restore | |
- name: Verify formatting | |
working-directory: ./src/ServiceAssessmentService | |
run: dotnet format --no-restore --verify-no-changes | |
- name: Begin SonarCloud analysis (start before any build/test steps) | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
working-directory: ./src/ServiceAssessmentService | |
shell: pwsh | |
run: | | |
dotnet-sonarscanner begin /k:"DFE-Digital_service-assessment-service" /o:"dfe-digital" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" | |
- name: Build with dotnet | |
working-directory: ./src/ServiceAssessmentService | |
run: dotnet build --no-restore --configuration Release | |
- name: Test | |
working-directory: ./src/ServiceAssessmentService | |
run: dotnet test --no-build --verbosity normal --configuration Release | |
- name: End SonarCloud analysis and upload results (end after all build/test steps) | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
working-directory: ./src/ServiceAssessmentService | |
shell: pwsh | |
run: | | |
dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" | |
- name: dotnet publish | |
working-directory: ./src/ServiceAssessmentService | |
run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp | |
- name: Upload artifact for deployment job | |
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4 | |
with: | |
name: ${{ env.APP_NAME }} | |
path: ${{env.DOTNET_ROOT}}/myapp | |
deploy-dev: | |
permissions: | |
contents: none | |
runs-on: ubuntu-latest | |
needs: build-test-package | |
if: github.ref == 'refs/heads/main' | |
environment: | |
name: "Dev" | |
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} | |
steps: | |
- name: Download artifact from build job | |
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4 | |
with: | |
name: ${{ env.APP_NAME }} | |
- name: Deploy to Azure Web App | |
id: deploy-to-webapp | |
uses: azure/webapps-deploy@2fdd5c3ebb4e540834e86ecc1f6fdcd5539023ee # v3 | |
with: | |
app-name: ${{ env.AZURE_WEBAPP_NAME }} | |
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }} | |
package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }} |