Skip to content

Make notifcations integration test run conditional on code change det… #2

Make notifcations integration test run conditional on code change det…

Make notifcations integration test run conditional on code change det… #2

Workflow file for this run

name: 'Test stage'

Check failure on line 1 in .github/workflows/stage-2-test.yaml

View workflow run for this annotation

GitHub Actions / .github/workflows/stage-2-test.yaml

Invalid workflow file

(Line: 107, Col: 9): Unrecognized named-value: 'jobs'. Located at position 1 within expression: jobs.test.outputs.notifications-changed == 'true'
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 }}'