bria 0.1.4

Multi-pipeline job orchestrator
Documentation
name: E2E

on:
  push:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  e2e:
    name: E2E (Docker Compose)
    runs-on: ubuntu-latest
    timeout-minutes: 30

    steps:
      - uses: actions/checkout@v6

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Build bria image
        uses: docker/build-push-action@v7
        with:
          context: .
          file: ./Dockerfile
          tags: bria:e2e
          load: true
          platforms: linux/amd64
          cache-from: type=gha
          cache-to: type=gha,mode=max

      - name: Start shared infra
        working-directory: tests/e2e
        run: ./run.sh --infra-up

      - name: Run e2e
        working-directory: tests/e2e
        run: |
          scenarios=(
            http-pg
            file-file
            file-sqlite
            http-file
            http-sqlite
            http-sse
            webhook-pg
            cron-file
            pg-pg
            sqlite-file
            queue-file
            http-queue
            http-webhook
            http-pg-recovery
            http-nonzero
            http-413
            http-cancel
            http-condition-false
            webhook-hmac-401
          )

          failed=0
          for s in "${scenarios[@]}"; do
            echo "::group::$s"
            if ./run.sh "$s"; then
              echo "PASS"
            else
              echo "FAIL"
              failed=1
            fi
            echo "::endgroup::"
          done
          exit "$failed"

      - name: Tear down shared infra
        if: always()
        working-directory: tests/e2e
        run: ./run.sh --infra-down