# syntax=docker/dockerfile:1.7@sha256:a57df69d0ea827fb7266491f2813635de6f17269be881f696fbfdf2d83dda33e ARG RUST_IMAGE=docker.io/library/rust:1.97.0-bookworm@sha256:8fa55b2f3ddf97471ab6a767bfa3f37e6bad0986ba823e75fea57e2a2a5c3073 ARG NODE_IMAGE=docker.io/library/node:24.18.0-bookworm@sha256:5711a0d445a1af54af9589066c646df387d1831a608226f4cd694fc59e745059 ARG PLAYWRIGHT_IMAGE=mcr.microsoft.com/playwright:v1.62.1-noble@sha256:dcc5531e97840b9b5e794f2814476b21571c5124a3fca2267d73041f56e7580e FROM ${RUST_IMAGE} AS rust-tools ADD --checksum=sha256:0c593171ba53aaaf699f8fd5d8d6661abcb004cfe2ffd01e206c7992909a4d05 https://static.crates.io/crates/cargo-nextest/cargo-nextest-0.9.140.crate /tmp/cargo-nextest-0.9.140.crate RUN mkdir /tmp/cargo-nextest \ && tar --extract --gzip --file /tmp/cargo-nextest-0.9.140.crate --directory /tmp/cargo-nextest \ && rustup component add clippy rustfmt \ && cargo install --jobs 4 --locked --path /tmp/cargo-nextest/cargo-nextest-0.9.140 \ && rm --recursive --force /tmp/cargo-nextest /tmp/cargo-nextest-0.9.140.crate FROM rust-tools AS rust-check WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api CMD ["sh", "-c", "cargo fmt --all --check && cargo clippy --locked --workspace --all-targets --all-features -- -D warnings && cargo nextest run --locked --workspace --all-features && cargo test --locked --workspace --doc"] FROM rust-tools AS kind-sample-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-api \ --lib \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-api-tests.tar.zst FROM rust-tools AS kind-sample-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-sample-build /tmp/remora-api-tests.tar.zst /tests/remora-api-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_OIDC_CLIENT_ID\" && test -n \"$REMORA_OIDC_USERNAME\" && case $REMORA_COORDINATION_PROVIDER in redis|dragonfly) ;; *) exit 1 ;; esac && case $REMORA_OIDC_PROVIDER in keycloak|zitadel) ;; *) exit 1 ;; esac && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && cargo-nextest nextest run --archive-file /tests/remora-api-tests.tar.zst --workspace-remap /workspace"] FROM rust-tools AS kind-durable-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-durable \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-durable-tests.tar.zst FROM rust-tools AS kind-durable-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-durable-build /tmp/remora-durable-tests.tar.zst /tests/remora-durable-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && cargo-nextest nextest run --archive-file /tests/remora-durable-tests.tar.zst --workspace-remap /workspace"] FROM rust-tools AS kind-coordination-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-coordination \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-coordination-tests.tar.zst FROM rust-tools AS kind-coordination-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-coordination-build /tmp/remora-coordination-tests.tar.zst /tests/remora-coordination-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$REMORA_COORDINATION_URL\" && export REMORA_COORDINATION_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-coordination-tests.tar.zst --workspace-remap /workspace"] FROM rust-tools AS kind-identity-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-identity \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-identity-tests.tar.zst FROM rust-tools AS kind-identity-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-identity-build /tmp/remora-identity-tests.tar.zst /tests/remora-identity-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_OIDC_ISSUER\" && export REMORA_IDENTITY_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-identity-tests.tar.zst --workspace-remap /workspace"] FROM rust-tools AS kind-credentials-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-credentials \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-credentials-tests.tar.zst FROM rust-tools AS kind-credentials-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-credentials-build /tmp/remora-credentials-tests.tar.zst /tests/remora-credentials-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_VAULT_ADDR\" && test -n \"$REMORA_VAULT_TOKEN\" && test -n \"$REMORA_VAULT_PATH\" && export REMORA_CREDENTIALS_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-credentials-tests.tar.zst --workspace-remap /workspace"] FROM rust-tools AS kind-target-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-target \ --features test-utils \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-target-tests.tar.zst FROM rust-tools AS kind-target-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-target-build /tmp/remora-target-tests.tar.zst /tests/remora-target-tests.tar.zst # Non-version cases first; version matrix enables bucket versioning and purges # versions afterward. Serial threads avoid concurrent writes during that window. CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$REMORA_TARGET_ENDPOINT\" && test -n \"$REMORA_TARGET_BUCKET\" && test -n \"$REMORA_TARGET_ACCESS_KEY\" && test -n \"$REMORA_TARGET_SECRET_KEY\" && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_TARGET_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-target-tests.tar.zst --workspace-remap /workspace --test-threads=1 -E 'not test(version_addressed_and_stale_version_matrix)' && cargo-nextest nextest run --archive-file /tests/remora-target-tests.tar.zst --workspace-remap /workspace --test-threads=1 -E 'test(version_addressed_and_stale_version_matrix)'"] FROM rust-tools AS kind-result-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-result \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-result-tests.tar.zst FROM kind-result-build AS kind-result-verified RUN cargo clippy \ --package remora-result \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-result --doc --locked FROM rust-tools AS kind-result-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-result-verified /tmp/remora-result-tests.tar.zst /tests/remora-result-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_TARGET_ENDPOINT\" && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_RESULT_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-result-tests.tar.zst --workspace-remap /workspace --test-threads=1"] FROM rust-tools AS kind-deletion-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-deletion \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-deletion-tests.tar.zst FROM kind-deletion-build AS kind-deletion-verified RUN cargo clippy \ --package remora-deletion \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-deletion --doc --locked FROM rust-tools AS kind-deletion-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-deletion-verified /tmp/remora-deletion-tests.tar.zst /tests/remora-deletion-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_TARGET_ENDPOINT\" && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_DELETION_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-deletion-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast"] FROM rust-tools AS kind-outbound-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-outbound \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-outbound-tests.tar.zst FROM rust-tools AS kind-outbound-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-outbound-build /tmp/remora-outbound-tests.tar.zst /tests/remora-outbound-tests.tar.zst CMD ["cargo-nextest", "nextest", "run", "--archive-file", "/tests/remora-outbound-tests.tar.zst", "--workspace-remap", "/workspace"] FROM rust-tools AS kind-admission-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-admission \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-admission-tests.tar.zst FROM rust-tools AS kind-admission-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-admission-build /tmp/remora-admission-tests.tar.zst /tests/remora-admission-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && export REMORA_ADMISSION_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-admission-tests.tar.zst --workspace-remap /workspace --test-threads=1"] FROM rust-tools AS kind-attempt-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-attempt \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-attempt-tests.tar.zst FROM kind-attempt-build AS kind-attempt-verified RUN cargo clippy \ --package remora-attempt \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-attempt --doc --locked FROM rust-tools AS kind-attempt-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-attempt-verified /tmp/remora-attempt-tests.tar.zst /tests/remora-attempt-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && export REMORA_ATTEMPT_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-attempt-tests.tar.zst --workspace-remap /workspace --test-threads=1"] FROM rust-tools AS kind-attempt-mutations-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-attempt-verified /tmp/remora-attempt-tests.tar.zst /tests/remora-attempt-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && export REMORA_ATTEMPT_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-attempt-tests.tar.zst --workspace-remap /workspace --test-threads=1 -E 'binary(mutations)'"] FROM rust-tools AS kind-recovery-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-attempt-verified /tmp/remora-attempt-tests.tar.zst /tests/remora-attempt-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && test -n \"$REMORA_TARGET_ENDPOINT\" && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_RECOVERY_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-attempt-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'binary(recovery)'"] FROM rust-tools AS kind-worker-api-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-api \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-api-tests.tar.zst FROM kind-worker-api-build AS kind-worker-api-verified RUN cargo clippy \ --package remora-api \ --all-targets \ --locked \ -- -D warnings \ && cargo test --package remora-api --doc --locked FROM rust-tools AS kind-worker-api-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-worker-api-verified /tmp/remora-api-tests.tar.zst /tests/remora-api-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && export REMORA_WORKER_API_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-api-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast"] FROM rust-tools AS kind-public-api-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-worker-api-verified /tmp/remora-api-tests.tar.zst /tests/remora-api-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && test -n \"$REMORA_OIDC_ISSUER\" && test -n \"$REMORA_TARGET_ENDPOINT\" && test -n \"$REMORA_VAULT_ADDR\" && case $REMORA_COORDINATION_PROVIDER in redis|dragonfly) ;; *) exit 1 ;; esac && case $REMORA_OIDC_PROVIDER in keycloak|zitadel) ;; *) exit 1 ;; esac && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_PUBLIC_API_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-api-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'binary(public_api)'"] FROM rust-tools AS kind-live-events-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-worker-api-verified /tmp/remora-api-tests.tar.zst /tests/remora-api-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && test -n \"$REMORA_OIDC_ISSUER\" && case $REMORA_COORDINATION_PROVIDER in redis|dragonfly) ;; *) exit 1 ;; esac && case $REMORA_OIDC_PROVIDER in keycloak|zitadel) ;; *) exit 1 ;; esac && export REMORA_LIVE_EVENTS_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-api-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'binary(live_events)'"] FROM rust-tools AS kind-deployment-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-worker-api-verified /tmp/remora-api-tests.tar.zst /tests/remora-api-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$REMORA_DEPLOYMENT_API_URL\" && export REMORA_DEPLOYMENT_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-api-tests.tar.zst --workspace-remap /workspace --test-threads=1 -E 'binary(deployment)'"] FROM rust-tools AS kind-worker-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-worker \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-worker-tests.tar.zst FROM kind-worker-build AS kind-worker-verified RUN cargo clippy \ --package remora-worker \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-worker --doc --locked FROM rust-tools AS kind-worker-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-worker-verified /tmp/remora-worker-tests.tar.zst /tests/remora-worker-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && test -n \"$REMORA_TARGET_ENDPOINT\" && test -n \"$REMORA_VAULT_ADDR\" && case $REMORA_COORDINATION_PROVIDER in redis|dragonfly) ;; *) exit 1 ;; esac && case $REMORA_TARGET_PROVIDER in garage|versitygw) ;; *) exit 1 ;; esac && export REMORA_WORKER_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-worker-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast"] FROM rust-tools AS kind-http-source-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-http-source \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-http-source-tests.tar.zst FROM kind-http-source-build AS kind-http-source-verified RUN cargo clippy \ --package remora-http-source \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-http-source --doc --locked FROM rust-tools AS kind-http-source-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-http-source-verified /tmp/remora-http-source-tests.tar.zst /tests/remora-http-source-tests.tar.zst CMD ["cargo-nextest", "nextest", "run", "--archive-file", "/tests/remora-http-source-tests.tar.zst", "--workspace-remap", "/workspace"] FROM rust-tools AS kind-object-source-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-object-source \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-object-source-tests.tar.zst FROM kind-object-source-build AS kind-object-source-verified RUN cargo clippy \ --package remora-object-source \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-object-source --doc --locked FROM rust-tools AS kind-object-source-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-object-source-verified /tmp/remora-object-source-tests.tar.zst /tests/remora-object-source-tests.tar.zst CMD ["cargo-nextest", "nextest", "run", "--archive-file", "/tests/remora-object-source-tests.tar.zst", "--workspace-remap", "/workspace", "--test-threads=1"] FROM rust-tools AS kind-hf-source-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --package remora-hf-source \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-hf-source-tests.tar.zst FROM kind-hf-source-build AS kind-hf-source-verified RUN cargo clippy \ --package remora-hf-source \ --all-targets \ --all-features \ --locked \ -- -D warnings \ && cargo test --package remora-hf-source --doc --locked FROM rust-tools AS kind-hf-source-runner WORKDIR /workspace COPY Cargo.toml ./ COPY crates crates COPY --from=kind-hf-source-verified /tmp/remora-hf-source-tests.tar.zst /tests/remora-hf-source-tests.tar.zst CMD ["cargo-nextest", "nextest", "run", "--archive-file", "/tests/remora-hf-source-tests.tar.zst", "--workspace-remap", "/workspace"] FROM rust-tools AS kind-qualification-build WORKDIR /workspace COPY Cargo.toml Cargo.lock rust-toolchain.toml ./ COPY .config .config COPY contracts contracts COPY crates crates COPY docs/api docs/api RUN cargo nextest archive \ --workspace \ --all-features \ --build-jobs 4 \ --locked \ --archive-file /tmp/remora-qualification-tests.tar.zst FROM rust-tools AS kind-qualification-runner WORKDIR /workspace COPY Cargo.toml ./ COPY contracts contracts COPY crates crates COPY docs/api docs/api COPY --from=kind-qualification-build /tmp/remora-qualification-tests.tar.zst /tests/remora-qualification-tests.tar.zst CMD ["bash", "-ec", "test -s /run/remora-fixture/profile.env && test -n \"$DATABASE_URL\" && test -n \"$REMORA_COORDINATION_URL\" && test -n \"$REMORA_OIDC_ISSUER\" && test -n \"$REMORA_TARGET_ENDPOINT\" && test -n \"$REMORA_VAULT_ADDR\" && export REMORA_COORDINATION_REQUIRE=1 REMORA_IDENTITY_REQUIRE=1 REMORA_CREDENTIALS_REQUIRE=1 REMORA_TARGET_REQUIRE=1 REMORA_RESULT_REQUIRE=1 REMORA_DELETION_REQUIRE=1 REMORA_ADMISSION_REQUIRE=1 REMORA_ATTEMPT_REQUIRE=1 REMORA_RECOVERY_REQUIRE=1 REMORA_WORKER_API_REQUIRE=1 REMORA_PUBLIC_API_REQUIRE=1 REMORA_LIVE_EVENTS_REQUIRE=1 REMORA_WORKER_REQUIRE=1 REMORA_QUALIFICATION_REQUIRE=1 && cargo-nextest nextest run --archive-file /tests/remora-qualification-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'package(remora-credentials) and not binary(qualification_cleanup)' && cargo-nextest nextest run --archive-file /tests/remora-qualification-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'package(remora-credentials) and binary(qualification_cleanup)' && cargo-nextest nextest run --archive-file /tests/remora-qualification-tests.tar.zst --workspace-remap /workspace --test-threads=1 --no-fail-fast -E 'not package(remora-credentials)'"] FROM ${NODE_IMAGE} AS node-runtime FROM rust-tools AS contract-check COPY --from=node-runtime /usr/local/ /usr/local/ WORKDIR /workspace COPY contracts contracts RUN npm ci --prefix contracts/typespec \ && npm ci --prefix contracts/typespec-rust-emitter COPY docs/api docs/api COPY crates/remora-contracts/src/generated_wire.rs crates/remora-contracts/src/generated_wire.rs COPY web/src/api/contracts.ts web/src/api/decode.ts web/src/api/generated-schema.ts web/src/api/ CMD ["npm", "run", "check", "--prefix", "contracts/typespec"] FROM ${PLAYWRIGHT_IMAGE} AS web-dependencies COPY --from=node-runtime /usr/local/ /usr/local/ ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright RUN corepack enable pnpm \ && corepack install --global pnpm@11.22.0+sha512.1ff870c4c6133dfd88fb2afc46dd13d47f09c9794b438c6fdb47ca98caf3bc16381ee0be93a091b8e3824cf01f889f46d7d9e20910fb0be1ab0fb5baa80dd621 WORKDIR /workspace/web COPY web/package.json web/pnpm-lock.yaml web/pnpm-workspace.yaml ./ COPY web/tools/svelte-check/package.json tools/svelte-check/package.json RUN pnpm install --frozen-lockfile FROM web-dependencies AS web-check COPY web/ ./ COPY contracts /workspace/contracts COPY docs/api /workspace/docs/api FROM web-check AS web-fast CMD ["sh", "-c", "pnpm check && pnpm lint && pnpm build && pnpm test:unit && pnpm test:component && pnpm test:e2e"] FROM web-check AS web-full CMD ["sh", "-c", "pnpm check && pnpm lint && pnpm build && pnpm test:unit && pnpm test:component:full && pnpm test:e2e:full"] FROM web-check AS kind-web-system-runner CMD ["pnpm", "exec", "playwright", "test", "--config", "playwright.system.config.ts"]