Skip to content

Added fixes while testing against CRM build environment data #3871

Added fixes while testing against CRM build environment data

Added fixes while testing against CRM build environment data #3871

Workflow file for this run

name: Pull request build
on:
pull_request:
merge_group:
permissions:
checks: write
deployments: write
packages: write
pull-requests: write
id-token: write
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: extractions/setup-just@v2
- name: Install tools
run: just install-tools
- name: Lint
run: |
git fetch origin main --quiet --depth=1
CHANGED_FILES=$(git diff --name-only origin/main $GITHUB_SHA | { grep -oP '^TeachingRecordSystem\/\K.*\.cs(proj)?$' || true; })
if [ "$CHANGED_FILES" == "" ]; then
echo "::notice::No changes to lint"
exit 0
fi
# If project files have changed then dependencies may have been updated, which may effect lint results (e.g. namespace imports);
# lint everything.
if [ $(echo "$CHANGED_FILES" | grep -c '\.csproj$') -gt 0 ]; then
INCLUDE_ARG=""
echo "::notice::Linting entire codebase"
else
INCLUDE_ARG="--include $(echo "$CHANGED_FILES" | grep '\.cs$' | tr '\n' ' ')"
echo "::notice::Linting changed files only"
fi
dotnet dotnet-format --verify-no-changes $INCLUDE_ARG
working-directory: TeachingRecordSystem
validate_terraform:
name: Validate Terraform
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.5.0
- name: Check formatting
run: terraform fmt -check -diff
working-directory: terraform/aks
- name: Download terraform modules
run: make ci dev vendor-modules
- name: Validate
run: |
terraform init -backend=false
terraform validate -no-color
working-directory: terraform/aks
- name: Lint
uses: reviewdog/action-tflint@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tflint_rulesets: azurerm
working_directory: terraform/aks
continue-on-error: true # temporary- we're getting sporadic 503 errors here in action setup
tests:
name: Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
project:
[
TeachingRecordSystem.Core.Tests,
TeachingRecordSystem.Api.Tests,
TeachingRecordSystem.SupportUi.Tests,
TeachingRecordSystem.AuthorizeAccess.Tests,
TeachingRecordSystem.SupportUi.EndToEndTests,
TeachingRecordSystem.AuthorizeAccess.EndToEndTests,
TeachingRecordSystem.WebCommon.Tests,
]
services:
postgres:
image: postgres:15
env:
POSTGRES_PASSWORD: trs
POSTGRES_DB: trs
options: >-
--name postgres
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Set postgres wal_level to logical
run: |
docker exec -i postgres bash << EOF
echo "wal_level = logical" >> /var/lib/postgresql/data/postgresql.conf
EOF
docker restart --time 0 postgres
- uses: actions/checkout@v4
- uses: extractions/setup-just@v2
- name: Install tools
run: just install-tools
- name: Restore cached packages
id: cache-packages-restore
uses: actions/cache/restore@v4
with:
path: |
~/.nuget/packages
~/.local/share/.librarymanager/cache
key: ${{ hashFiles('**/packages.lock.json', '**/libman.json') }}
- name: Restore
run: just restore
- name: Cache restored packages
id: cache-packages-save
uses: actions/cache/save@v4
with:
path: |
~/.nuget/packages
~/.local/share/.librarymanager/cache
key: ${{ steps.cache-packages-restore.outputs.cache-primary-key }}
if: steps.cache-packages-restore.outputs.cache-hit != 'true'
- name: Build project
run: dotnet build -c Release --no-restore
working-directory: TeachingRecordSystem/tests/${{ matrix.project }}
- name: Install Playwright if required
run: |
if [[ "$PROJECT_NAME" =~ .*EndToEndTests ]]; then
pwsh ./bin/Release/net8.0/playwright.ps1 install chromium
fi
working-directory: TeachingRecordSystem/tests/${{ matrix.project }}
env:
PROJECT_NAME: ${{ matrix.project }}
- name: Run tests
uses: ./.github/workflows/actions/test
with:
test_project_path: TeachingRecordSystem/tests/${{ matrix.project }}
report_name: "${{ matrix.project }} test results"
dotnet_test_args: >-
--no-build
-e ConnectionStrings__DefaultConnection="Host=localhost;Username=postgres;Password=trs;Database=trs"
timeout-minutes: 15
package:
name: Package application
uses: ./.github/workflows/package.yml
secrets: inherit
deploy_dev:
name: Deploy dev environment
runs-on: ubuntu-latest
needs: [lint, validate_terraform, tests, package]
environment: dev
concurrency: deploy_dev
steps:
- uses: actions/checkout@v4
- uses: ./.github/workflows/actions/deploy-aks-environment
id: deploy
with:
environment_name: dev
docker_image: ${{ needs.package.outputs.docker_image }}
azure_credentials: ${{ secrets.AZURE_CREDENTIALS }}