Make notifcations integration test run conditional on code change det… #2
Workflow file for this run
This file contains hidden or 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
| name: 'Test stage' | ||
|
Check failure on line 1 in .github/workflows/stage-2-test.yaml
|
||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| build_datetime: | ||
| description: 'Build datetime, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| build_timestamp: | ||
| description: 'Build timestamp, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| build_epoch: | ||
| description: 'Build epoch, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| nodejs_version: | ||
| description: 'Node.js version, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| python_version: | ||
| description: 'Python version, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| terraform_version: | ||
| description: 'Terraform version, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| version: | ||
| description: 'Version of the software, set by the CI/CD pipeline workflow' | ||
| required: true | ||
| type: string | ||
| jobs: | ||
| test: | ||
| name: 'Tests' | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 5 | ||
| outputs: | ||
| notifications-changed: ${{ steps.notifications-changes-result.outputs.changed }} | ||
| services: | ||
| postgres: | ||
| image: postgres:17.4-alpine3.21 | ||
| ports: | ||
| - 5432:5432 | ||
| env: | ||
| POSTGRES_PASSWORD: postgres | ||
| options: >- | ||
| --health-cmd pg_isready | ||
| --health-interval 10s | ||
| --health-timeout 5s | ||
| --health-retries 5 | ||
| steps: | ||
| - name: 'Checkout code' | ||
| uses: actions/checkout@v5 | ||
| - name: Detect notifications code changes | ||
| uses: dorny/paths-filter@v3 | ||
| id: notifications-changes | ||
| with: | ||
| filters: | | ||
| notifications: | ||
| - 'manage_breast_screening/notifications/**' | ||
| - name: Store notification code changes check | ||
| id: notification-changes-result | ||
| if: steps.notifications-changes.outputs.notifications == 'true' | ||
| run: echo "changed=true" >> "$GITHUB_OUTPUT" | ||
| - name: Install poetry | ||
| run: pipx install poetry | ||
| - name: Set up Python | ||
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 | ||
| with: | ||
| python-version: '${{inputs.python_version}}' | ||
| cache: poetry | ||
| cache-dependency-path: ./poetry.lock | ||
| - name: Install dependencies | ||
| run: make dependencies | ||
| - name: Install Playwright browsers | ||
| run: poetry run playwright install chromium --with-deps | ||
| - name: 'Run unit test suite' | ||
| run: make test-unit | ||
| env: | ||
| DATABASE_NAME: postgres | ||
| DATABASE_PASSWORD: postgres | ||
| DATABASE_USER: postgres | ||
| DATABASE_HOST: localhost | ||
| - name: 'Run system test suite' | ||
| run: make test-ui | ||
| env: | ||
| DATABASE_NAME: postgres | ||
| DATABASE_PASSWORD: postgres | ||
| DATABASE_USER: postgres | ||
| DATABASE_HOST: localhost | ||
| notifications-integration-test: | ||
| needs: test | ||
| if: jobs.test.outputs.notifications-changed == 'true' | ||
| name: 'Notifications Integration Tests' | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 5 | ||
| services: | ||
| postgres: | ||
| image: postgres:17.4-alpine3.21 | ||
| ports: | ||
| - 5432:5432 | ||
| env: | ||
| POSTGRES_PASSWORD: postgres | ||
| options: >- | ||
| --health-cmd pg_isready | ||
| --health-interval 10s | ||
| --health-timeout 5s | ||
| --health-retries 5 | ||
| steps: | ||
| - name: 'Checkout code' | ||
| uses: actions/checkout@v5 | ||
| - name: Detect notifications code changes | ||
| uses: dorny/paths-filter@v3 | ||
| id: filter | ||
| with: | ||
| filters: | | ||
| notifications: | ||
| - 'manage_breast_screening/notifications/**' | ||
| - name: Install poetry | ||
| run: pipx install poetry | ||
| - name: Set up Python | ||
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 | ||
| with: | ||
| python-version: '${{inputs.python_version}}' | ||
| cache: poetry | ||
| cache-dependency-path: ./poetry.lock | ||
| - name: Install dependencies | ||
| run: make dependencies | ||
| - name: 'Run notifications integration test suite' | ||
| if: steps.filter.outputs.notifications == 'true' | ||
| run: make test-integration | ||
| env: | ||
| DATABASE_NAME: postgres | ||
| DATABASE_PASSWORD: postgres | ||
| DATABASE_USER: postgres | ||
| DATABASE_HOST: localhost | ||
| test-lint: | ||
| name: 'Linting' | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 5 | ||
| steps: | ||
| - name: 'Checkout code' | ||
| uses: actions/checkout@v5 | ||
| - name: Install poetry | ||
| run: pipx install poetry | ||
| - name: Set up Python | ||
| uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 | ||
| with: | ||
| python-version: '${{inputs.python_version}}' | ||
| cache: poetry | ||
| cache-dependency-path: ./poetry.lock | ||
| - name: Install dependencies | ||
| run: make dependencies | ||
| - name: Run linting | ||
| run: make test-lint | ||
| perform-static-analysis: | ||
| name: 'Perform static analysis' | ||
| needs: [test] | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| id-token: write | ||
| contents: read | ||
| timeout-minutes: 5 | ||
| steps: | ||
| - name: 'Checkout code' | ||
| uses: actions/checkout@v5 | ||
| with: | ||
| fetch-depth: 0 # Full history is needed to improving relevancy of reporting | ||
| - name: 'Perform static analysis' | ||
| uses: ./.github/actions/perform-static-analysis | ||
| with: | ||
| sonar_organisation_key: '${{ vars.SONAR_ORGANISATION_KEY }}' | ||
| sonar_project_key: '${{ vars.SONAR_PROJECT_KEY }}' | ||
| sonar_token: '${{ secrets.SONAR_TOKEN }}' | ||