Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
9d7e55d
ci(repo): run the test suite on stack-architecture branch pushes
jgoux Oct 2, 2026
df2fe83
fix(cli): remove the functions deploy bundle directory on failure and…
jgoux Oct 2, 2026
ec079c9
ci(stack): add native platform scenarios and a repeated idle/parallel…
jgoux Oct 2, 2026
9acb1de
ci(stack): run native platform scenarios on macOS only
jgoux Oct 2, 2026
ce745bb
refactor(cli): make functions deploy idiomatic Effect with typed erro…
jgoux Oct 2, 2026
5e61ab4
refactor(stack): move lease, registry and atomic publication into Sta…
jgoux Oct 3, 2026
3254e7d
fix(stack): skip directory fsync on Windows and track Schema.TaggedEr…
jgoux Oct 3, 2026
c28bce8
fix(stack): replace the lease holder record atomically and drop the h…
jgoux Oct 3, 2026
e06e30c
test(stack): confirm owner exit before removing the SIGKILL scenario'…
jgoux Oct 3, 2026
e935859
test(stack): stop test git from detaching background maintenance duri…
jgoux Oct 3, 2026
94f0c0f
fix(stack): wait for container loopback publication instead of readin…
jgoux Oct 3, 2026
85e99f6
test(stack): give the real-engine removal wait the container test budget
jgoux Oct 3, 2026
380adee
refactor(stack): own resource claims, paths, environments and the eng…
jgoux Oct 3, 2026
bf602c3
fix(stack): keep caller-owned mounts owned by the host user and gate …
jgoux Oct 3, 2026
ba2ad45
refactor(stack): publish native artifacts as immutable pinned generat…
jgoux Oct 3, 2026
9b99077
chore(stack): keep the pin table helper private to its driver
jgoux Oct 4, 2026
ee990a0
feat(stack): keep public ports stable through a per-user reservation …
jgoux Oct 4, 2026
63b0112
fix(stack): publish Vector and Functions configs content-addressed so…
jgoux Oct 4, 2026
f39e96a
chore(stack): enforce namespace import boundaries with lint
jgoux Oct 4, 2026
0f9d06e
test(stack): seed the database artifact so the native cleanup test ne…
jgoux Oct 4, 2026
871140c
fix(stack): reserve native backend ports below the ephemeral range
jgoux Oct 4, 2026
76be6e6
test(stack): identify native workload processes by marker, never by a…
jgoux Oct 4, 2026
9eb3cc3
fix(cli): name the changed setting and the fix when a saved stack rej…
jgoux Oct 4, 2026
9d79b09
refactor(stack): own launch scopes before preparation, add gateway dr…
jgoux Oct 4, 2026
9d260b3
fix(stack): serialize artifact retirement with local pins and observe…
jgoux Oct 4, 2026
a9581b5
feat(stack): add a pure lifecycle reducer for wake, sleep, demand and…
jgoux Oct 4, 2026
e7becbf
fix(stack): bind native Functions, Storage, PostgREST and Analytics t…
jgoux Oct 4, 2026
3787aa4
fix(stack): bind native Realtime, Pooler, and Analytics gRPC to loopback
jgoux Oct 4, 2026
7df785f
test(stack): show the response body when a whole-stack status asserti…
jgoux Oct 4, 2026
00bce64
fix(stack): pin the Realtime, Pooler and Analytics r1 artifacts that …
jgoux Oct 4, 2026
bcd03d6
test(stack): assert every native workload listener binds loopback
jgoux Oct 4, 2026
c7e2f6e
refactor(stack): make the lifecycle reducer the single authority over…
jgoux Oct 5, 2026
e6ff9b8
feat(stack): drain connections and exit on abandoned registration
jgoux Oct 5, 2026
5ec7da9
fix(stack): close review findings in shutdown drain and abandonment
jgoux Oct 5, 2026
2844c97
fix(stack): fix scoped temp-dir cleanup panic and classify engine err…
jgoux Oct 5, 2026
408b55f
fix(stack): stop abandonment from touching port reservations and fix …
jgoux Oct 5, 2026
7bb1feb
refactor(stack): unify shutdown modes and probe engine availability f…
jgoux Oct 5, 2026
5baf334
test(stack): cover registration loss mid-drain and retry-while-reacha…
jgoux Oct 5, 2026
f1f4cb7
test(stack): cover gateway drain through a real owner shutdown
jgoux Oct 5, 2026
5851a6f
test(stack): attach file watchers before triggering the awaited change
jgoux Oct 5, 2026
cf30473
refactor(stack): track containers by labels only and let a failed des…
jgoux Oct 5, 2026
10584a4
refactor(stack): drop dead lifecycle state and use a fixed crash-loop…
jgoux Oct 5, 2026
46525d0
refactor(stack): drop the redundant lease interlock and share the tra…
jgoux Oct 5, 2026
0a51dcd
refactor(cli): list changed keys and the recreate command when a save…
jgoux Oct 5, 2026
7f736a6
fix(stack): re-resolve the backend on proxy retry and carry full unix…
jgoux Oct 5, 2026
099532d
fix(stack): keep a destroyed stack's directories so a same-id restart…
jgoux Oct 5, 2026
cb59cb4
refactor(stack): share one shutdown body between stop and destroy
jgoux Oct 5, 2026
5ffd013
refactor(stack): surface a failed destroy without waiting for an owne…
jgoux Oct 5, 2026
062b354
refactor(stack): drop the forwarding instance cleanup wrapper
jgoux Oct 5, 2026
67bef7c
fix(stack): abandon a stack whose registration disappears during an H…
jgoux Oct 5, 2026
c357fac
test(stack): assert a destroyed stack's state and data are gone inste…
jgoux Oct 5, 2026
f2850f0
test(cli): assert registered stacks after db diff instead of stack di…
jgoux Oct 5, 2026
eca69d7
fix(stack): drain HTTP listeners without waiting on idle keep-alive c…
jgoux Oct 5, 2026
1299c5c
chore(cli): move the functions deploy changes off the stack branch
jgoux Oct 5, 2026
add89b8
fix(stack): drain only in-flight HTTP work and never resume serving a…
jgoux Oct 5, 2026
076c9ec
test(stack): relay docker service tests through the IPv4-only host alias
jgoux Oct 5, 2026
3eee00c
fix(stack): reject HTTP work after drain begins and stop ownerless st…
jgoux Oct 5, 2026
88627e5
refactor(stack): sweep artifact generations only on cache misses and …
jgoux Oct 5, 2026
fc01575
chore(cli): drop functions deploy error tags from the telemetry snapshot
jgoux Oct 5, 2026
c251ccf
fix(stack): reap orphan staging in every key root and retire generati…
jgoux Oct 5, 2026
8aed0ac
refactor(stack): derive the native postgres socket directory instead …
jgoux Oct 5, 2026
11c121d
test(stack): prove a pin is not blocked by a retirement's slow delete
jgoux Oct 5, 2026
c111e5d
fix(stack): tie native socket directory removal to instance destroy a…
jgoux Oct 5, 2026
01b0de9
chore(stack): drop lint exceptions for removed claims consumers
jgoux Oct 5, 2026
18c9365
refactor(stack): reject pinned public ports in the native range inste…
jgoux Oct 5, 2026
7a6a5ee
refactor(stack): keep port assignments only in the reservation registry
jgoux Oct 5, 2026
74d92cd
fix(stack): remove the stack registration before releasing its port r…
jgoux Oct 5, 2026
13d224c
test(stack): keep port registry fixtures scoped and let cleanup reach…
jgoux Oct 5, 2026
6d5ee55
refactor(stack): enforce the waiter budget with one timeout and name …
jgoux Oct 6, 2026
6b69cf2
fix(stack): prune destroyed stack directories after the restart window
jgoux Oct 6, 2026
f98d091
fix(stack): stop services in dependency order without draining listen…
jgoux Oct 6, 2026
f230883
test(stack): release the docker stop hold from the test scope
jgoux Oct 6, 2026
c393983
test(stack): wait for the owner to exit after its lease is released
jgoux Oct 6, 2026
9605292
fix(stack): let analytics stop without its fifteen second drain delay
jgoux Oct 6, 2026
756bbe3
ci(stack): run the stack stress scenarios only on manual dispatch
jgoux Oct 6, 2026
36f7b68
fix(stack): reap only staging directories so a preparer's fresh lock …
jgoux Oct 6, 2026
f37dfe5
fix(stack): keep the traverse grant on the port registry directory
jgoux Oct 6, 2026
0a9920e
fix(stack): count only recent failures toward the crash-loop breaker
jgoux Oct 6, 2026
36313f8
fix(cli): name the stack in destroy retry hints
jgoux Oct 6, 2026
324d3ad
ci(stack): reject stress iteration counts below one
jgoux Oct 6, 2026
d235953
docs(stack): align stack docs with ordered stop, breaker and engine s…
jgoux Oct 6, 2026
658e5e9
fix(stack): remove everything a destroyed stack left under its data root
jgoux Oct 6, 2026
e58ebb1
fix(stack): let an instance destroy remove the service despite open l…
jgoux Oct 6, 2026
f27779e
fix(stack): prune destroyed stack directories under the registry lock
jgoux Oct 6, 2026
4b40935
test(stack): keep port collision tests independent of foreign listene…
jgoux Oct 6, 2026
d2cac32
test(stack): observe the database stop through a live docker events s…
jgoux Oct 6, 2026
9b6a3f5
test(stack): report a foreign-held port candidate as a collision
jgoux Oct 6, 2026
9e993bb
feat(stack): run container stacks on Podman through the pinned engine…
jgoux Oct 6, 2026
c6bcab0
feat(cli): select Podman for stacks when Docker is unavailable
jgoux Oct 6, 2026
867e640
test(stack): run the real-engine stack suites against Podman in CI
jgoux Oct 6, 2026
13a2c7d
test(stack): keep the registry traverse-bit test to POSIX hosts
jgoux Oct 6, 2026
e997abc
fix(stack): give the Functions container a HOME on engines that leave…
jgoux Oct 6, 2026
ad2169d
test(stack): list Podman workloads through its own label template
jgoux Oct 6, 2026
055877d
test(stack): hand Podman's event stream an RFC 3339 start time
jgoux Oct 6, 2026
162832b
test(stack): treat rpm's package database as Podman's own state in th…
jgoux Oct 6, 2026
a0c1e27
test(stack): hold the gated engine stop only once the stack is running
jgoux Oct 6, 2026
28206e1
docs(stack): describe Podman as a container runtime of the stack
jgoux Oct 6, 2026
db671fd
test(stack): list Podman workloads through its JSON output, stable ac…
jgoux Oct 6, 2026
3391de2
test(stack): treat the Podman client's SSH and runtime state as its o…
jgoux Oct 6, 2026
11e56f5
docs(stack): note the podman machine memory a full stack needs on macOS
jgoux Oct 6, 2026
7a51475
ci(stack): share the rootless Podman setup, stress Podman, and run th…
jgoux Oct 6, 2026
614bdb2
refactor(stack): check only the native runtime base directory's owner…
jgoux Oct 6, 2026
93c734f
docs(stack): describe reservations left by a failed individual-servic…
jgoux Oct 6, 2026
a44dcde
refactor(stack): run the short-poll owner fixture through runHostProcess
jgoux Oct 6, 2026
0c7249f
test(stack): drop tests whose contracts are covered elsewhere
jgoux Oct 6, 2026
dd637b8
refactor(cli): derive stack port env overrides from the config path
jgoux Oct 6, 2026
df65d94
refactor(cli): use snake_case keys in stack stop and destroy JSON output
jgoux Oct 6, 2026
7752e03
test(cli): fold duplicated stack start and runtime tests into their i…
jgoux Oct 6, 2026
ff7c637
fix(stack): stop routing to a crashed workload while its cleanup runs
jgoux Oct 6, 2026
824c492
refactor(stack): let the lifecycle reducer own restart candidates and…
jgoux Oct 6, 2026
c84cf75
refactor(stack): drop the registered observation now that destroy unr…
jgoux Oct 6, 2026
1b0834d
refactor(stack): end an abandoned stack through the ordinary destroy
jgoux Oct 6, 2026
a33ace9
fix(stack): keep a crash outcome through a failed cleanup
jgoux Oct 6, 2026
99e3eb8
fix(stack): confirm a vanished registration when destroy cannot take …
jgoux Oct 6, 2026
aa0da1c
refactor(stack): drop status fields no consumer reads
jgoux Oct 7, 2026
c4a1594
test(stack): keep shared artifact caches out of OS-aged temp directories
jgoux Oct 7, 2026
3f88731
fix(stack): refresh stopped credential consumers when stack credentia…
jgoux Oct 7, 2026
e5f0f61
test(cli): prove a service was not relaunched through its runtime ide…
jgoux Oct 7, 2026
c800011
chore(stack): merge develop into stack-architecture
jgoux Oct 7, 2026
340fdbb
chore(stack): merge develop into stack-architecture
jgoux Oct 7, 2026
cfcda3b
refactor(stack): share the sharing-violation retry and safe-id schema
jgoux Oct 7, 2026
57c8fd2
ci(repo): drop the temporary stack-architecture branch workflow
jgoux Oct 7, 2026
9671191
fix(stack): keep launch crashes across retried cleanup and idle unhea…
jgoux Oct 7, 2026
e2155af
fix(stack): never follow symlinks in the artifact cache sweep
jgoux Oct 7, 2026
7157b3b
docs(stack): record the native Postgres step-down in ADR 0028 and fix…
jgoux Oct 7, 2026
1d74624
fix(stack): end lost ownership without destroying and refuse a symlin…
jgoux Oct 7, 2026
6812547
test(stack): assert that lost ownership stops containers and keeps data
jgoux Oct 7, 2026
c729340
fix(stack): serialize credential refresh with service starts
jgoux Oct 7, 2026
0cf6331
fix(stack): fail destroy when the container engine is unreachable and…
jgoux Oct 7, 2026
0e65ab3
refactor(stack): make stack destroy succeed with no result value
jgoux Oct 7, 2026
ae3854a
fix(stack): hold pinned port reservations only while their listener i…
jgoux Oct 7, 2026
c674218
docs(stack): describe lost ownership, pinned port reservations and fa…
jgoux Oct 7, 2026
ad75865
fix(cli): name the config setting when a stack start hits a port conf…
jgoux Oct 7, 2026
26fa409
fix(cli): resolve the conflicting port setting by its configured port…
jgoux Oct 7, 2026
87cd62a
fix(stack): check the data root before a service destroy and skip a s…
jgoux Oct 7, 2026
cdf3db2
docs(stack): qualify reservation release and destroy coverage after l…
jgoux Oct 7, 2026
f7b0da3
test(stack): wait for a swept session stack's directory to disappear
jgoux Oct 7, 2026
454bf17
test(stack): drop the socket sweep case for a symlinked data root, wh…
jgoux Oct 7, 2026
d74142f
test(stack): share one host gateway probe across container adapter tests
jgoux Oct 7, 2026
e8550ee
Merge remote-tracking branch 'origin/develop' into stack-architecture
jgoux Oct 7, 2026
0682388
test(stack): align port reservation e2e with configured-port takeover…
jgoux Oct 7, 2026
46354e9
Merge remote-tracking branch 'origin/develop' into stack-architecture
jgoux Oct 7, 2026
6c1888f
Merge remote-tracking branch 'origin/develop' into stack-architecture
jgoux Oct 7, 2026
8f81ff3
fix(stack): run the attached database helper through the owner's pinn…
jgoux Oct 7, 2026
9f31cf7
fix(stack): refuse a stack directory that is a symlink or resolves ou…
jgoux Oct 7, 2026
e5939fe
fix(stack): report a structured owner startup error without the owner…
jgoux Oct 7, 2026
ab4c0da
fix(stack): let a configured port take over a reservation held only b…
jgoux Oct 7, 2026
9b201cd
Merge remote-tracking branch 'origin/develop' into stack-architecture
jgoux Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/actions/setup-podman/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Setup Podman
description: Install rootless Podman and prepare its per-user runtime directory

runs:
using: composite
steps:
# Rootless Podman needs subordinate id ranges and a per-user runtime directory; the user
# service is started explicitly so /run/user/<uid> exists before the first podman call.
- name: Prepare rootless Podman
shell: bash
run: |
if ! command -v podman >/dev/null; then
sudo apt-get update
sudo apt-get install -y podman
fi
user="$(id -un)"
grep -q "^${user}:" /etc/subuid || sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 "${user}"
sudo loginctl enable-linger "${user}"
sudo systemctl start "user@$(id -u).service"
echo "XDG_RUNTIME_DIR=/run/user/$(id -u)" >> "$GITHUB_ENV"
XDG_RUNTIME_DIR="/run/user/$(id -u)" podman system migrate
podman version
podman info
59 changes: 59 additions & 0 deletions .github/workflows/stack-stress.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Stack stress

# Repeats the idle/wake and parallel-stack scenarios back to back on each
# backend to surface timing-dependent races. Manual only: a failing iteration
# fails the job outright and is never retried.
on:
workflow_dispatch:
inputs:
iterations:
description: Runs per backend
type: number
default: 10

permissions:
contents: read

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

jobs:
stress:
name: Run stack stress scenarios (${{ matrix.runtime }})
runs-on: blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 90
env:
SUPABASE_STACK_TEST_ENGINE: ${{ matrix.runtime == 'podman' && 'podman' || 'docker' }}
strategy:
fail-fast: false
matrix:
runtime: [native, docker, podman]
steps:
- name: Checkout
uses: useblacksmith/checkout@6fd481652155169ed4d2f25ebaf97464f685175f # v1.0.0-beta

- name: Setup
uses: ./.github/actions/setup
with:
dependency-firewall-token: ${{ secrets.DF_FIREWALL_TOKEN }}
go-cache: "false"

- name: Setup Podman
if: matrix.runtime == 'podman'
uses: ./.github/actions/setup-podman

# vitest's --repeats counts the runs after the first.
- name: Run idle and parallel-stack scenarios repeatedly
working-directory: packages/stack
env:
ITERATIONS: ${{ inputs.iterations }}
run: |
if ! [ "$ITERATIONS" -ge 1 ] 2>/dev/null; then
echo "iterations must be a whole number of at least 1, got '$ITERATIONS'" >&2
exit 1
fi
pnpm run test:e2e:run \
whole-stack.${{ matrix.runtime }}.idle-parallel \
--repeats=$((ITERATIONS - 1)) \
--passWithNoTests=false
124 changes: 115 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,16 @@ jobs:
- name: Run integration tests
run: pnpm run test:integration

# Not covered by test:integration above (a different vitest project); runs here so the
# registry cross-process and publication-crash scenarios run on Linux too.
- name: Run stack namespace e2e tests
working-directory: packages/stack
run: >-
pnpm test:e2e:run
src/namespace/Namespace.e2e.test.ts
src/port-reservation.e2e.test.ts
--passWithNoTests=false

test-stack-ports:
if: |
!startsWith(github.head_ref, 'release-notes/') &&
Expand Down Expand Up @@ -160,16 +170,25 @@ jobs:
pnpm test:integration
src/Ports.integration.test.ts
src/storage/DirectoryCopy.integration.test.ts
src/State.integration.test.ts
src/State.windows.integration.test.ts
src/State.process.integration.test.ts
src/namespace/Namespace.integration.test.ts
src/namespace/Paths.integration.test.ts
src/HostProcess.integration.test.ts
src/Network.integration.test.ts
src/Proxy.integration.test.ts
src/HttpProxy.integration.test.ts
--passWithNoTests=false

# Windows-only CLI subset: paths, PATH lookup, and permission semantics diverge there.
- name: Run stack namespace e2e tests
working-directory: packages/stack
run: pnpm test:e2e:run src/namespace/Namespace.e2e.test.ts --passWithNoTests=false

# Windows-only: sharing-violation retries and CLI paths, PATH lookup, and permission
# semantics that only diverge there.
- name: Run stack namespace Windows e2e tests
if: runner.os == 'Windows'
working-directory: packages/stack
run: pnpm test:e2e:run src/namespace/Namespace.windows.e2e.test.ts --passWithNoTests=false

- name: Run CLI integration tests
if: runner.os == 'Windows'
working-directory: apps/cli
Expand All @@ -179,6 +198,37 @@ jobs:
src/commands/experimental/stack/start/start.integration.test.ts
--passWithNoTests=false

test-stack-native-scenarios:
if: |
!startsWith(github.head_ref, 'release-notes/') &&
(github.event_name == 'merge_group' ||
inputs.force ||
github.event.pull_request.draft == false)
name: Run stack native scenarios (${{ matrix.os }})
runs-on: ${{ matrix.os }}
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
# Native artifacts exist for macOS and Linux only, and macOS runners have
# no Docker; Linux coverage for both backends comes from test-stack-e2e.
os: [macos-latest]
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false

- name: Setup
uses: ./.github/actions/setup
with:
dependency-firewall-token: ${{ secrets.DF_FIREWALL_TOKEN }}
go-cache: "false"

- name: Run stack native whole-stack scenarios
working-directory: packages/stack
run: pnpm test:e2e:native-scenarios --passWithNoTests=false

test-summary:
if: |
always() &&
Expand Down Expand Up @@ -285,8 +335,10 @@ jobs:
strategy:
fail-fast: false
matrix:
runtime: [native, docker]
runtime: [native, docker, podman]
suite: [lifecycle, idle-parallel]
env:
SUPABASE_STACK_TEST_ENGINE: ${{ matrix.runtime == 'podman' && 'podman' || 'docker' }}
steps:
- name: Checkout
uses: useblacksmith/checkout@6fd481652155169ed4d2f25ebaf97464f685175f # v1.0.0-beta
Expand All @@ -297,6 +349,10 @@ jobs:
dependency-firewall-token: ${{ secrets.DF_FIREWALL_TOKEN }}
go-cache: "false"

- name: Setup Podman
if: matrix.runtime == 'podman'
uses: ./.github/actions/setup-podman

- name: Run stack end-to-end tests
run: >-
pnpm --filter @supabase/stack test:e2e:run
Expand All @@ -310,6 +366,53 @@ jobs:
src/public.e2e.test.ts
--passWithNoTests=false

test-stack-podman-integration:
if: |
!startsWith(github.head_ref, 'release-notes/') &&
(github.event_name == 'merge_group' ||
inputs.force ||
github.event.pull_request.draft == false)
name: Run stack Podman integration tests
runs-on: blacksmith-8vcpu-ubuntu-2404
env:
SUPABASE_STACK_TEST_ENGINE: podman
steps:
- name: Checkout
uses: useblacksmith/checkout@6fd481652155169ed4d2f25ebaf97464f685175f # v1.0.0-beta

- name: Setup
uses: ./.github/actions/setup
with:
dependency-firewall-token: ${{ secrets.DF_FIREWALL_TOKEN }}
go-cache: "false"

- name: Setup Podman
uses: ./.github/actions/setup-podman

# The suites that drive a real container engine; the rest of the integration project is
# engine-independent and runs in test-integration.
- name: Run stack Podman integration tests
working-directory: packages/stack
run: >-
pnpm test:integration:run
src/Owner.integration.test.ts
src/Sweep.integration.test.ts
src/Commands.integration.test.ts
src/StackHost.container-shutdown.integration.test.ts
src/runtime/Container.integration.test.ts
src/storage/DockerDatabaseStorage.integration.test.ts
src/services/Database.integration.test.ts
src/services/Functions.integration.test.ts
src/services/Realtime.integration.test.ts
src/services/Rest.integration.test.ts
src/services/AuthStorage.integration.test.ts
src/services/StorageGateway.integration.test.ts
src/services/AnalyticsImgproxy.integration.test.ts
src/services/Mail.integration.test.ts
src/services/Pooler.integration.test.ts
tests/docker-volume-run.integration.test.ts
--passWithNoTests=false

# Summary job that gates branch protection. It preserves the original check
# name and succeeds iff every CLI shard and stack runtime succeeded.
test-e2e-summary:
Expand All @@ -320,13 +423,16 @@ jobs:
inputs.force ||
github.event.pull_request.draft == false)
name: Run end-to-end tests
needs: [test-e2e, test-stack-e2e]
needs: [test-e2e, test-stack-e2e, test-stack-native-scenarios, test-stack-podman-integration]
runs-on: ubuntu-latest
steps:
- name: Verify all shards succeeded
run: |
if [ "${{ needs.test-e2e.result }}" = "failure" ] || [ "${{ needs.test-e2e.result }}" = "cancelled" ] || [ "${{ needs.test-stack-e2e.result }}" = "failure" ] || [ "${{ needs.test-stack-e2e.result }}" = "cancelled" ]; then
echo "::error ::One or more e2e jobs failed: cli=${{ needs.test-e2e.result }}, stack=${{ needs.test-stack-e2e.result }}"
if [ "${{ needs.test-e2e.result }}" = "failure" ] || [ "${{ needs.test-e2e.result }}" = "cancelled" ] || \
[ "${{ needs.test-stack-e2e.result }}" = "failure" ] || [ "${{ needs.test-stack-e2e.result }}" = "cancelled" ] || \
[ "${{ needs.test-stack-native-scenarios.result }}" = "failure" ] || [ "${{ needs.test-stack-native-scenarios.result }}" = "cancelled" ] || \
[ "${{ needs.test-stack-podman-integration.result }}" = "failure" ] || [ "${{ needs.test-stack-podman-integration.result }}" = "cancelled" ]; then
echo "::error ::One or more e2e jobs failed: cli=${{ needs.test-e2e.result }}, stack=${{ needs.test-stack-e2e.result }}, stack-native-scenarios=${{ needs.test-stack-native-scenarios.result }}, stack-podman-integration=${{ needs.test-stack-podman-integration.result }}"
exit 1
fi
echo "All e2e jobs reported: cli=${{ needs.test-e2e.result }}, stack=${{ needs.test-stack-e2e.result }}"
echo "All e2e jobs reported: cli=${{ needs.test-e2e.result }}, stack=${{ needs.test-stack-e2e.result }}, stack-native-scenarios=${{ needs.test-stack-native-scenarios.result }}, stack-podman-integration=${{ needs.test-stack-podman-integration.result }}"
Loading
Loading