Replace transient test labels with stable identifiers
This commit is contained in:
parent
4ca7526d50
commit
d0b745950b
17 changed files with 63 additions and 38 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -1,7 +1,5 @@
|
||||||
# Development scratchpad
|
|
||||||
scratchpad
|
scratchpad
|
||||||
|
|
||||||
# Development journal
|
|
||||||
docs/journal
|
docs/journal
|
||||||
|
|
||||||
# TLC working directories
|
# TLC working directories
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ impl Harness {
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&required_env("REMORA_COORDINATION_URL"),
|
&required_env("REMORA_COORDINATION_URL"),
|
||||||
format!(
|
format!(
|
||||||
"{}wp22:{}:",
|
"{}live-events:{}:",
|
||||||
required_env("REMORA_COORDINATION_NAMESPACE"),
|
required_env("REMORA_COORDINATION_NAMESPACE"),
|
||||||
nonce()
|
nonce()
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ impl Harness {
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&required_env("REMORA_COORDINATION_URL"),
|
&required_env("REMORA_COORDINATION_URL"),
|
||||||
format!(
|
format!(
|
||||||
"{}wp21:{}:",
|
"{}public-api:{}:",
|
||||||
required_env("REMORA_COORDINATION_NAMESPACE"),
|
required_env("REMORA_COORDINATION_NAMESPACE"),
|
||||||
nonce()
|
nonce()
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ impl Harness {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&coordination_url,
|
&coordination_url,
|
||||||
format!("{}wp18:{name}:{}:", coordination_namespace(), nonce()),
|
format!("{}worker-api:{name}:{}:", coordination_namespace(), nonce()),
|
||||||
StoreConfig {
|
StoreConfig {
|
||||||
global_limit: 16,
|
global_limit: 16,
|
||||||
lease_ttl: Duration::from_secs(10),
|
lease_ttl: Duration::from_secs(10),
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,11 @@ impl Harness {
|
||||||
.await
|
.await
|
||||||
.expect("connect postgres");
|
.expect("connect postgres");
|
||||||
migrate_schema(&pool).await.expect("schema migrate");
|
migrate_schema(&pool).await.expect("schema migrate");
|
||||||
let namespace = format!("{}wp15:{name}:{}:", coordination_namespace(), nonce());
|
let namespace = format!(
|
||||||
|
"{}attempt-authority:{name}:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
);
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&coordination_url,
|
&coordination_url,
|
||||||
namespace,
|
namespace,
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,11 @@ impl Harness {
|
||||||
migrate_schema(&pool).await.expect("schema migrate");
|
migrate_schema(&pool).await.expect("schema migrate");
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&coordination_url,
|
&coordination_url,
|
||||||
format!("{}wp16:{name}:{}:", coordination_namespace(), nonce()),
|
format!(
|
||||||
|
"{}attempt-mutations:{name}:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
),
|
||||||
StoreConfig {
|
StoreConfig {
|
||||||
global_limit: 16,
|
global_limit: 16,
|
||||||
lease_ttl: Duration::from_secs(10),
|
lease_ttl: Duration::from_secs(10),
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,11 @@ impl Harness {
|
||||||
.expect("reset recovery test state");
|
.expect("reset recovery test state");
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&coordination_url,
|
&coordination_url,
|
||||||
format!("{}wp17:{name}:{}:", coordination_namespace(), nonce()),
|
format!(
|
||||||
|
"{}attempt-recovery:{name}:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
),
|
||||||
StoreConfig {
|
StoreConfig {
|
||||||
global_limit: 32,
|
global_limit: 32,
|
||||||
lease_ttl: Duration::from_secs(10),
|
lease_ttl: Duration::from_secs(10),
|
||||||
|
|
@ -460,7 +464,11 @@ async fn coordination_partition_rolls_back_and_restart_converges() {
|
||||||
let proxy_url = proxy.url();
|
let proxy_url = proxy.url();
|
||||||
let store = CoordinationStore::connect(
|
let store = CoordinationStore::connect(
|
||||||
&proxy_url,
|
&proxy_url,
|
||||||
format!("{}wp17:partition:{}:", coordination_namespace(), nonce()),
|
format!(
|
||||||
|
"{}attempt-recovery:partition:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
),
|
||||||
StoreConfig::default(),
|
StoreConfig::default(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
|
@ -501,7 +509,11 @@ async fn coordination_partition_rolls_back_and_restart_converges() {
|
||||||
let resumed_proxy = CoordinationProxy::start(upstream, Some(address)).await;
|
let resumed_proxy = CoordinationProxy::start(upstream, Some(address)).await;
|
||||||
let resumed_store = CoordinationStore::connect(
|
let resumed_store = CoordinationStore::connect(
|
||||||
&resumed_proxy.url(),
|
&resumed_proxy.url(),
|
||||||
format!("{}wp17:partition:{}:", coordination_namespace(), nonce()),
|
format!(
|
||||||
|
"{}attempt-recovery:partition:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
),
|
||||||
StoreConfig::default(),
|
StoreConfig::default(),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ fn coordination_namespace(suite: &str) -> String {
|
||||||
.ok()
|
.ok()
|
||||||
.filter(|value| !value.is_empty())
|
.filter(|value| !value.is_empty())
|
||||||
.unwrap_or_else(|| "remora:test:".into());
|
.unwrap_or_else(|| "remora:test:".into());
|
||||||
format!("{base}wp04:{suite}:")
|
format!("{base}coordination-substrate:{suite}:")
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn test_store(
|
async fn test_store(
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,6 @@ async fn object_source_and_destination_resume_matrix() {
|
||||||
.await
|
.await
|
||||||
.expect("version purge");
|
.expect("version purge");
|
||||||
} else if std::env::var("REMORA_TARGET_PROVIDER").as_deref() == Ok("versitygw") {
|
} else if std::env::var("REMORA_TARGET_PROVIDER").as_deref() == Ok("versitygw") {
|
||||||
panic!("VersityGW must support version-pinned WP-12 qualification");
|
panic!("VersityGW must support version-pinned object-source qualification");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,9 @@ async fn version_addressed_and_stale_version_matrix() {
|
||||||
let provider =
|
let provider =
|
||||||
std::env::var("REMORA_TARGET_PROVIDER").unwrap_or_else(|_| "unknown".into());
|
std::env::var("REMORA_TARGET_PROVIDER").unwrap_or_else(|_| "unknown".into());
|
||||||
if provider == "versitygw" {
|
if provider == "versitygw" {
|
||||||
panic!("versitygw must support bucket versioning for WP-08 matrix");
|
panic!(
|
||||||
|
"versitygw must support bucket versioning for the target compatibility matrix"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
eprintln!(
|
eprintln!(
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,11 @@ impl Harness {
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let coordination = CoordinationStore::connect(
|
let coordination = CoordinationStore::connect(
|
||||||
&coordination_url,
|
&coordination_url,
|
||||||
format!("{}wp19:{name}:{}:", coordination_namespace(), nonce()),
|
format!(
|
||||||
|
"{}worker-runtime:{name}:{}:",
|
||||||
|
coordination_namespace(),
|
||||||
|
nonce()
|
||||||
|
),
|
||||||
StoreConfig {
|
StoreConfig {
|
||||||
global_limit: 16,
|
global_limit: 16,
|
||||||
lease_ttl: Duration::from_secs(2),
|
lease_ttl: Duration::from_secs(2),
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ Terms in this glossary are stable identifiers for use across Remora documentatio
|
||||||
| `StorageAdapter` | The service boundary through which workers write to the target object store. |
|
| `StorageAdapter` | The service boundary through which workers write to the target object store. |
|
||||||
| `TargetStore` | The configured S3-compatible object store receiving downloaded objects. |
|
| `TargetStore` | The configured S3-compatible object store receiving downloaded objects. |
|
||||||
| `JobProtocol` | The TLA+ specification defining distributed job state, coordination semantics, and safety and liveness properties. |
|
| `JobProtocol` | The TLA+ specification defining distributed job state, coordination semantics, and safety and liveness properties. |
|
||||||
|
| `TestComponent` | A repository-owned acceptance-test unit with its test code, runner image, manifest, acceptance command, and required compatibility families. |
|
||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,21 +4,21 @@ Backend integration and fault tests execute as Kubernetes `Job` resources inside
|
||||||
|
|
||||||
## Fixture lifecycle
|
## Fixture lifecycle
|
||||||
|
|
||||||
`make check-dependencies` remains the dependency compatibility gate: it creates the full fixture, runs the released-image probes, and tears the fixture down. `make check-kind-sample` builds and loads a Remora-owned cargo-nextest runner, then exercises the full provider matrix around [`fixture-consumer-sample`](../../tests/kind/sample-job.yaml.in). Its init containers access the lane database, coordination namespace, OIDC discovery and signing keys, target bucket, and Vault path before cargo-nextest runs. That Job is the reference structure for a work-package test Job.
|
`make check-dependencies` remains the dependency compatibility gate: it creates the full fixture, runs the released-image probes, and tears the fixture down. `make check-kind-sample` builds and loads a Remora-owned cargo-nextest runner, then exercises the full provider matrix around [`fixture-consumer-sample`](../../tests/kind/sample-job.yaml.in). Its init containers access the lane database, coordination namespace, OIDC discovery and signing keys, target bucket, and Vault path before cargo-nextest runs. That Job is the reference structure for a `TestComponent` test Job.
|
||||||
|
|
||||||
For interactive work, `tests/kind/setup.sh` creates a ready fixture and leaves it running. `tests/kind/destroy.sh` removes it. Setup replaces any fixture left by an earlier run, teardown is idempotent, and a host-runtime lock shared across worktrees serializes lifecycle mutations around the single `remora-testbed` cluster and `remora-wp02` containerd namespace. `REMORA_TESTBED_RETAIN=1` retains a failed all-in-one run for inspection.
|
For interactive work, `tests/kind/setup.sh` creates a ready fixture and leaves it running. `tests/kind/destroy.sh` removes it. Setup replaces any fixture left by an earlier run, teardown is idempotent, and a host-runtime lock shared across worktrees serializes lifecycle mutations around the single `remora-testbed` cluster and `remora-dependency-testbed` containerd namespace. `REMORA_TESTBED_RETAIN=1` retains a failed all-in-one run for inspection.
|
||||||
|
|
||||||
The fixture owns an isolated kubeconfig at `tests/kind/.runtime/kubeconfig` and the `kind-remora-testbed` context. Every Kubernetes operation uses both explicitly. Package runners use the `kube` helper from `tests/kind/lib.sh`; they do not read or change the user's kubeconfig or current context.
|
The fixture owns an isolated kubeconfig at `tests/kind/.runtime/kubeconfig` and the `kind-remora-testbed` context. Every Kubernetes operation uses both explicitly. Package runners use the `kube` helper from `tests/kind/lib.sh`; they do not read or change the user's kubeconfig or current context.
|
||||||
|
|
||||||
## Package test Jobs
|
## Package test Jobs
|
||||||
|
|
||||||
Each work package owns its test code, test-runner image, Job manifest, acceptance command, and required compatibility families. Its all-in-one runner follows [`run-sample-job.sh`](../../tests/kind/run-sample-job.sh): acquire the fixture lock, install a cleanup trap, call `setup_fixture <families...>`, load any package-owned image with `load_local_image <image> [containerd-namespace]`, and call `run_job_matrix <job-name> <manifest> <image> <families...>`. The image namespace defaults to `default`. A retained failure prints the isolated kubeconfig and context.
|
Each `TestComponent` owns its test code, test-runner image, Job manifest, acceptance command, and required compatibility families. Its all-in-one runner follows [`run-sample-job.sh`](../../tests/kind/run-sample-job.sh): acquire the fixture lock, install a cleanup trap, call `setup_fixture <families...>`, load any component-owned image with `load_local_image <image> [containerd-namespace]`, and call `run_job_matrix <job-name> <manifest> <image> <families...>`. The image namespace defaults to `default`. A retained failure prints the isolated kubeconfig and context.
|
||||||
|
|
||||||
The selectable families are `base`, `durable`, `coordination`, `oidc`, `target`, `secret`, and `all`. `base` provisions only the cluster and common namespace for suites whose controlled fixtures run inside their test pod. Individual implementations are not selectors. A suite that requests `coordination`, `oidc`, and `target` runs the unchanged cargo-nextest archive against the full Redis/DragonflyDB × Keycloak/ZITADEL × Garage/VersityGW Cartesian product. Lanes run sequentially and stop on the first failure.
|
The selectable families are `base`, `durable`, `coordination`, `oidc`, `target`, `secret`, and `all`. `base` provisions only the cluster and common namespace for suites whose controlled fixtures run inside their test pod. Individual implementations are not selectors. A suite that requests `coordination`, `oidc`, and `target` runs the unchanged cargo-nextest archive against the full Redis/DragonflyDB × Keycloak/ZITADEL × Garage/VersityGW Cartesian product. Lanes run sequentially and stop on the first failure.
|
||||||
|
|
||||||
Before each lane, the runner recreates a lane database, allocates unique coordination keys, provisions an OIDC tenant/client/user/role grant, creates a target bucket and prefix, and allocates a Vault path as required by the selected families. The resulting environment is exposed both through environment variables and a ConfigMap-mounted `/run/remora-fixture/profile.env`. Package manifests use `@@JOB_NAME@@`, `@@PROFILE_NAME@@`, and `@@TEST_IMAGE@@` placeholders so only the profile and lane identity vary between Jobs.
|
Before each lane, the runner recreates a lane database, allocates unique coordination keys, provisions an OIDC tenant/client/user/role grant, creates a target bucket and prefix, and allocates a Vault path as required by the selected families. The resulting environment is exposed both through environment variables and a ConfigMap-mounted `/run/remora-fixture/profile.env`. Package manifests use `@@JOB_NAME@@`, `@@PROFILE_NAME@@`, and `@@TEST_IMAGE@@` placeholders so only the profile and lane identity vary between Jobs.
|
||||||
|
|
||||||
Released third-party dependencies are always the digest-pinned images loaded by the fixture. Work packages may build Remora test-runner images locally; they do not rebuild or wrap dependency images. The Job manifest names every loaded image exactly and sets `imagePullPolicy: Never`.
|
Released third-party dependencies are always the digest-pinned images loaded by the fixture. Test components may build Remora test-runner images locally; they do not rebuild or wrap dependency images. The Job manifest names every loaded image exactly and sets `imagePullPolicy: Never`.
|
||||||
|
|
||||||
A test Job:
|
A test Job:
|
||||||
|
|
||||||
|
|
@ -34,4 +34,4 @@ Package runners may create additional namespaced fixtures and fault injectors ne
|
||||||
|
|
||||||
Automated backend tests use cluster-local service discovery. Tests of Keycloak or ZITADEL issuer behavior use the `dnsPolicy` and `dnsConfig` pattern in [`fixture-consumer-sample`](../../tests/kind/sample-job.yaml.in) so discovery URLs and token issuers have one identity from every participating pod.
|
Automated backend tests use cluster-local service discovery. Tests of Keycloak or ZITADEL issuer behavior use the `dnsPolicy` and `dnsConfig` pattern in [`fixture-consumer-sample`](../../tests/kind/sample-job.yaml.in) so discovery URLs and token issuers have one identity from every participating pod.
|
||||||
|
|
||||||
Port forwarding is for interactive diagnostics only and is not an acceptance-test transport. Ingress is introduced by deployment and system qualification, where routing is itself under test; substrate work packages do not install an ingress controller merely to reach fixture services.
|
Port forwarding is for interactive diagnostics only and is not an acceptance-test transport. Ingress is introduced by deployment and system qualification, where routing is itself under test; substrate test components do not install an ingress controller merely to reach fixture services.
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ FIXTURE_LOCK_DIR="${XDG_RUNTIME_DIR:-/tmp/remora-$(id -u)}"
|
||||||
FIXTURE_LOCK_PATH="$FIXTURE_LOCK_DIR/remora-testbed-kind.lock"
|
FIXTURE_LOCK_PATH="$FIXTURE_LOCK_DIR/remora-testbed-kind.lock"
|
||||||
CONTEXT=kind-remora-testbed
|
CONTEXT=kind-remora-testbed
|
||||||
CLUSTER=remora-testbed
|
CLUSTER=remora-testbed
|
||||||
NERDCTL_NAMESPACE=remora-wp02
|
NERDCTL_NAMESPACE=remora-dependency-testbed
|
||||||
FIXTURE_NAMESPACE=remora-testbed
|
FIXTURE_NAMESPACE=remora-testbed
|
||||||
|
|
||||||
set -a
|
set -a
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ metadata:
|
||||||
name: probe-payload
|
name: probe-payload
|
||||||
namespace: remora-testbed
|
namespace: remora-testbed
|
||||||
data:
|
data:
|
||||||
payload: remora-wp02-published-image-transfer
|
payload: remora-dependency-testbed-published-image-transfer
|
||||||
---
|
---
|
||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
|
|
@ -34,28 +34,28 @@ spec:
|
||||||
- -v
|
- -v
|
||||||
- ON_ERROR_STOP=1
|
- ON_ERROR_STOP=1
|
||||||
- -c
|
- -c
|
||||||
- "CREATE TABLE wp02_probe (value text NOT NULL)"
|
- "CREATE TABLE dependency_probe (value text NOT NULL)"
|
||||||
- -c
|
- -c
|
||||||
- "INSERT INTO wp02_probe VALUES ('passed')"
|
- "INSERT INTO dependency_probe VALUES ('passed')"
|
||||||
- -c
|
- -c
|
||||||
- "SELECT value = 'passed' FROM wp02_probe"
|
- "SELECT value = 'passed' FROM dependency_probe"
|
||||||
env:
|
env:
|
||||||
- {name: PGPASSWORD, value: synthetic-postgres}
|
- {name: PGPASSWORD, value: synthetic-postgres}
|
||||||
- name: redis
|
- name: redis
|
||||||
image: @@REDIS_IMAGE@@
|
image: @@REDIS_IMAGE@@
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
command: [/bin/sh, -ec]
|
command: [/bin/sh, -ec]
|
||||||
args: ["redis-cli -h redis SET wp02 passed && test \"$(redis-cli -h redis GET wp02)\" = passed"]
|
args: ["redis-cli -h redis SET dependency_probe passed && test \"$(redis-cli -h redis GET dependency_probe)\" = passed"]
|
||||||
- name: dragonfly
|
- name: dragonfly
|
||||||
image: @@REDIS_IMAGE@@
|
image: @@REDIS_IMAGE@@
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
command: [/bin/sh, -ec]
|
command: [/bin/sh, -ec]
|
||||||
args: ["redis-cli -h dragonfly SET wp02 passed && test \"$(redis-cli -h dragonfly GET wp02)\" = passed"]
|
args: ["redis-cli -h dragonfly SET dependency_probe passed && test \"$(redis-cli -h dragonfly GET dependency_probe)\" = passed"]
|
||||||
- name: vault-write
|
- name: vault-write
|
||||||
image: @@VAULT_IMAGE@@
|
image: @@VAULT_IMAGE@@
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
command: [vault]
|
command: [vault]
|
||||||
args: [kv, put, secret/wp02, value=passed]
|
args: [kv, put, secret/dependency_probe, value=passed]
|
||||||
env:
|
env:
|
||||||
- {name: VAULT_ADDR, value: "http://vault:8200"}
|
- {name: VAULT_ADDR, value: "http://vault:8200"}
|
||||||
- {name: VAULT_TOKEN, value: synthetic-vault-token}
|
- {name: VAULT_TOKEN, value: synthetic-vault-token}
|
||||||
|
|
@ -64,7 +64,7 @@ spec:
|
||||||
image: @@VAULT_IMAGE@@
|
image: @@VAULT_IMAGE@@
|
||||||
imagePullPolicy: Never
|
imagePullPolicy: Never
|
||||||
command: [/bin/sh, -ec]
|
command: [/bin/sh, -ec]
|
||||||
args: ["test \"$(vault kv get -field=value secret/wp02)\" = passed && printf 'Vault write/read passed\\n'"]
|
args: ["test \"$(vault kv get -field=value secret/dependency_probe)\" = passed && printf 'Vault write/read passed\\n'"]
|
||||||
env:
|
env:
|
||||||
- {name: VAULT_ADDR, value: "http://vault:8200"}
|
- {name: VAULT_ADDR, value: "http://vault:8200"}
|
||||||
- {name: VAULT_TOKEN, value: synthetic-vault-token}
|
- {name: VAULT_TOKEN, value: synthetic-vault-token}
|
||||||
|
|
|
||||||
|
|
@ -175,11 +175,11 @@ write_helm_values() {
|
||||||
fi
|
fi
|
||||||
cat > "$RUNTIME/deployment-values.yaml" <<EOF
|
cat > "$RUNTIME/deployment-values.yaml" <<EOF
|
||||||
api:
|
api:
|
||||||
image: {repository: remora-api, tag: wp25, digest: "", pullPolicy: Never}
|
image: {repository: remora-api, tag: local, digest: "", pullPolicy: Never}
|
||||||
worker:
|
worker:
|
||||||
image: {repository: remora-worker, tag: wp25, digest: "", pullPolicy: Never}
|
image: {repository: remora-worker, tag: local, digest: "", pullPolicy: Never}
|
||||||
web:
|
web:
|
||||||
image: {repository: remora-web, tag: wp25, digest: "", pullPolicy: Never}
|
image: {repository: remora-web, tag: local, digest: "", pullPolicy: Never}
|
||||||
publicOrigin: $public_origin
|
publicOrigin: $public_origin
|
||||||
apiUrl: /v1/
|
apiUrl: /v1/
|
||||||
oidcClientId: remora-web
|
oidcClientId: remora-web
|
||||||
|
|
@ -432,17 +432,17 @@ validate_deployment_assets
|
||||||
"$REMORA_REAL_NERDCTL" --namespace default build \
|
"$REMORA_REAL_NERDCTL" --namespace default build \
|
||||||
--file "$ROOT/Dockerfile" \
|
--file "$ROOT/Dockerfile" \
|
||||||
--target api \
|
--target api \
|
||||||
--tag remora-api:wp25 \
|
--tag remora-api:local \
|
||||||
"$ROOT"
|
"$ROOT"
|
||||||
"$REMORA_REAL_NERDCTL" --namespace default build \
|
"$REMORA_REAL_NERDCTL" --namespace default build \
|
||||||
--file "$ROOT/Dockerfile" \
|
--file "$ROOT/Dockerfile" \
|
||||||
--target worker \
|
--target worker \
|
||||||
--tag remora-worker:wp25 \
|
--tag remora-worker:local \
|
||||||
"$ROOT"
|
"$ROOT"
|
||||||
"$REMORA_REAL_NERDCTL" --namespace default build \
|
"$REMORA_REAL_NERDCTL" --namespace default build \
|
||||||
--file "$ROOT/Dockerfile" \
|
--file "$ROOT/Dockerfile" \
|
||||||
--target web \
|
--target web \
|
||||||
--tag remora-web:wp25 \
|
--tag remora-web:local \
|
||||||
"$ROOT"
|
"$ROOT"
|
||||||
"$REMORA_REAL_NERDCTL" --namespace default build \
|
"$REMORA_REAL_NERDCTL" --namespace default build \
|
||||||
--file "$ROOT/Dockerfile.test" \
|
--file "$ROOT/Dockerfile.test" \
|
||||||
|
|
@ -462,9 +462,9 @@ setup_fixture durable coordination oidc target secret
|
||||||
if [[ "${REMORA_SYSTEM_QUALIFICATION:-0}" = 1 ]]; then
|
if [[ "${REMORA_SYSTEM_QUALIFICATION:-0}" = 1 ]]; then
|
||||||
install_qualification_ingress
|
install_qualification_ingress
|
||||||
fi
|
fi
|
||||||
load_local_image remora-api:wp25
|
load_local_image remora-api:local
|
||||||
load_local_image remora-worker:wp25
|
load_local_image remora-worker:local
|
||||||
load_local_image remora-web:wp25
|
load_local_image remora-web:local
|
||||||
load_local_image remora-kind-deployment:local
|
load_local_image remora-kind-deployment:local
|
||||||
if [[ "${REMORA_SYSTEM_QUALIFICATION:-0}" = 1 ]]; then
|
if [[ "${REMORA_SYSTEM_QUALIFICATION:-0}" = 1 ]]; then
|
||||||
load_local_image remora-kind-web-system:local
|
load_local_image remora-kind-web-system:local
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ cleanup() {
|
||||||
status=1
|
status=1
|
||||||
fi
|
fi
|
||||||
if [[ "$status" = 0 ]] && [[ "$SUCCEEDED" = true ]]; then
|
if [[ "$status" = 0 ]] && [[ "$SUCCEEDED" = true ]]; then
|
||||||
printf 'WP-02 hermetic dependency testbed passed\n'
|
printf 'hermetic dependency testbed passed\n'
|
||||||
fi
|
fi
|
||||||
exit "$status"
|
exit "$status"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue