140 lines
6.0 KiB
YAML
140 lines
6.0 KiB
YAML
# C1 detector gate. The fixture itself is intentionally RED; CI is green only
|
|
# when its exact phase verdicts/reasons match the versioned expected-RED manifest.
|
|
when:
|
|
- event: [pull_request, manual]
|
|
- event: push
|
|
branch: [next, main]
|
|
|
|
steps:
|
|
greenfield-case-denominator-init:
|
|
image: node:22-bookworm-slim
|
|
commands:
|
|
- |
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage.sh init cases \
|
|
tools/fixtures/greenfield-expected-red.tsv "$coverage_root" \
|
|
"$coverage_run"
|
|
bash tools/verify-greenfield-execution-coverage.sh init arms \
|
|
tools/fixtures/greenfield-expected-arms.txt "$coverage_root" \
|
|
"$coverage_run"
|
|
|
|
greenfield-git-present:
|
|
image: node:22-bookworm-slim
|
|
depends_on:
|
|
- greenfield-case-denominator-init
|
|
commands:
|
|
- |
|
|
set +e
|
|
MOSAIC_GREENFIELD_CONTAINER=1 \
|
|
bash tools/e2e-install-test.sh --lane next --source checkout --git present \
|
|
> /tmp/greenfield-git-present.log 2>&1
|
|
fixture_status=$?
|
|
set -e
|
|
cat /tmp/greenfield-git-present.log
|
|
bash tools/verify-greenfield-expected-red.sh \
|
|
next-git-present /tmp/greenfield-git-present.log "$fixture_status"
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage.sh mark cases \
|
|
tools/fixtures/greenfield-expected-red.tsv "$coverage_root" \
|
|
"$coverage_run" next-git-present
|
|
bash tools/verify-greenfield-execution-coverage.sh mark arms \
|
|
tools/fixtures/greenfield-expected-arms.txt "$coverage_root" \
|
|
"$coverage_run" greenfield-git-present
|
|
|
|
greenfield-main-git-present:
|
|
image: node:22-bookworm-slim
|
|
depends_on:
|
|
- greenfield-case-denominator-init
|
|
commands:
|
|
- |
|
|
set +e
|
|
MOSAIC_GREENFIELD_CONTAINER=1 \
|
|
bash tools/e2e-install-test.sh --lane main --source checkout --git present \
|
|
> /tmp/greenfield-main-git-present.log 2>&1
|
|
fixture_status=$?
|
|
set -e
|
|
cat /tmp/greenfield-main-git-present.log
|
|
bash tools/verify-greenfield-expected-red.sh \
|
|
main-git-present /tmp/greenfield-main-git-present.log "$fixture_status"
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage.sh mark cases \
|
|
tools/fixtures/greenfield-expected-red.tsv "$coverage_root" \
|
|
"$coverage_run" main-git-present
|
|
bash tools/verify-greenfield-execution-coverage.sh mark arms \
|
|
tools/fixtures/greenfield-expected-arms.txt "$coverage_root" \
|
|
"$coverage_run" greenfield-main-git-present
|
|
|
|
greenfield-remote-installer-contract:
|
|
image: node:22-bookworm-slim
|
|
depends_on:
|
|
- greenfield-case-denominator-init
|
|
commands:
|
|
- |
|
|
expected="$(awk 'NF {print $1; exit}' tools/install.sh.sha256)"
|
|
actual="$(sha256sum tools/install.sh | awk '{print $1}')"
|
|
test "$actual" = "$expected"
|
|
set +e
|
|
MOSAIC_GREENFIELD_CONTAINER=1 \
|
|
MOSAIC_FIXTURE_INSTALLER_URL="https://git.mosaicstack.dev/mosaicstack/stack/raw/commit/${CI_COMMIT_SHA}/tools/install.sh" \
|
|
MOSAIC_FIXTURE_INSTALLER_SHA256="$expected" \
|
|
MOSAIC_FIXTURE_SOURCE_COMMIT="${CI_COMMIT_SHA}" \
|
|
bash tools/e2e-install-test.sh --lane next --source remote --git present \
|
|
> /tmp/greenfield-remote.log 2>&1
|
|
fixture_status=$?
|
|
set -e
|
|
cat /tmp/greenfield-remote.log
|
|
bash tools/verify-greenfield-expected-red.sh \
|
|
next-git-present /tmp/greenfield-remote.log "$fixture_status"
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage.sh mark arms \
|
|
tools/fixtures/greenfield-expected-arms.txt "$coverage_root" \
|
|
"$coverage_run" greenfield-remote-installer-contract
|
|
|
|
greenfield-git-absent:
|
|
image: node:22-bookworm-slim
|
|
depends_on:
|
|
- greenfield-case-denominator-init
|
|
commands:
|
|
- |
|
|
set +e
|
|
MOSAIC_GREENFIELD_CONTAINER=1 \
|
|
bash tools/e2e-install-test.sh --lane next --source checkout --git absent \
|
|
> /tmp/greenfield-git-absent.log 2>&1
|
|
fixture_status=$?
|
|
set -e
|
|
cat /tmp/greenfield-git-absent.log
|
|
bash tools/verify-greenfield-expected-red.sh \
|
|
next-git-absent /tmp/greenfield-git-absent.log "$fixture_status"
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage.sh mark cases \
|
|
tools/fixtures/greenfield-expected-red.tsv "$coverage_root" \
|
|
"$coverage_run" next-git-absent
|
|
bash tools/verify-greenfield-execution-coverage.sh mark arms \
|
|
tools/fixtures/greenfield-expected-arms.txt "$coverage_root" \
|
|
"$coverage_run" greenfield-git-absent
|
|
|
|
greenfield-case-denominator:
|
|
image: node:22-bookworm-slim
|
|
# Publish exact execution coverage after the full matrix, even if a case failed.
|
|
depends_on:
|
|
- greenfield-git-present
|
|
- greenfield-main-git-present
|
|
- greenfield-remote-installer-contract
|
|
- greenfield-git-absent
|
|
when:
|
|
- status: [success, failure]
|
|
commands:
|
|
- |
|
|
coverage_run="${CI_PIPELINE_NUMBER}-${CI_WORKFLOW_NUMBER}"
|
|
coverage_root=.mosaic-test-work/greenfield-execution-coverage
|
|
bash tools/verify-greenfield-execution-coverage-gate.sh \
|
|
tools/verify-greenfield-execution-coverage.sh \
|
|
tools/fixtures/greenfield-expected-red.tsv \
|
|
tools/fixtures/greenfield-expected-arms.txt \
|
|
"$coverage_root" "$coverage_run"
|