name: CI on: workflow_call: workflow_dispatch: merge_group: pull_request: branches: [main, dev, 'release/**'] push: branches: [main, dev, 'release/**'] concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: ${{ github.ref_name != 'main' }} permissions: read-all jobs: check-backend: uses: ./.github/workflows/check-backend.yaml secrets: inherit check-frontend: uses: ./.github/workflows/check-frontend.yaml secrets: inherit tests: uses: ./.github/workflows/tests.yaml secrets: inherit e2e-tests: uses: ./.github/workflows/e2e-tests.yaml secrets: inherit ci: runs-on: ubuntu-slim name: Run CI if: always() # This ensures the job always runs needs: [check-backend, check-frontend, tests, e2e-tests] steps: # Propagate failure - name: Check dependent jobs if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'action_required') || contains(needs.*.result, 'timed_out') run: | echo "Not all required jobs succeeded" exit 1