name: jpa-next-postgresql19 # PostgreSQL 19 compatibility lane (experimental plan Task 9). # # This lane is NOT_EXECUTABLE against its target. # # It runs the current runtime's policy and lane-definition tests; it does not resolve the target # dependency or start a container of the target version. A green run therefore says "the target is # absent from this build", which is not the same claim as "we are compatible with the target" — and # the workflow's name reads as the second one. The status artifact says which it is. # # Promotion needs evidence, not availability. Two supported patch runs with no unresolved semantic # regression, plus a reviewed ADR, before the Stable support matrix changes — which is what # ExperimentalPromotionGate encodes. on: workflow_dispatch: schedule: - cron: '0 6 * * 1' permissions: contents: read jobs: postgresql19-compatibility: runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # actions/checkout@v4.2.2 - uses: ./.github/actions/setup-gradle-java - name: Report PostgreSQL 19 compatibility id: compatibility-probe working-directory: src run: >- ./gradlew :adapter:outbound:persistence-jpa:test --tests '*ExperimentalPromotionGateTest' --no-daemon --stacktrace - name: Record what this lane did and did not execute if: always() env: PROBE_OUTCOME: ${{ steps.compatibility-probe.outcome }} run: | mkdir -p compatibility-evidence { echo "target=PostgreSQL 19" echo "target-coordinate=postgres:19-alpine" echo "status=NOT_EXECUTABLE" echo "probe-result=${PROBE_OUTCOME}" echo "reason=no PostgreSQL 19 image is published yet, so no container of that major has ever been started by this lane" echo "what-ran=the current runtime's own policy and lane-definition tests" echo "sha=${{ github.sha }}" } > compatibility-evidence/status.properties echo "::notice::PostgreSQL 19 compatibility is NOT_EXECUTABLE: no PostgreSQL 19 image is published yet, so no container of that major has ever been started by this lane" - name: Upload the compatibility status if: always() uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # actions/upload-artifact@v4.6.2 with: name: compatibility-status-postgresql-19 path: compatibility-evidence/status.properties retention-days: 30 if-no-files-found: error