Files
stack/.woodpecker/greenfield-install.yml
T
be-coder-05 f33bd0da96
ci/woodpecker/pr/ci Pipeline was canceled
ci/woodpecker/pr/greenfield-install Pipeline was canceled
ci(installer): enforce greenfield case coverage
2026-08-06 02:52:14 -05:00

116 lines
4.5 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}"
bash tools/verify-greenfield-case-coverage.sh init \
tools/fixtures/greenfield-expected-red.tsv .greenfield-case-state \
"$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}"
bash tools/verify-greenfield-case-coverage.sh mark \
tools/fixtures/greenfield-expected-red.tsv .greenfield-case-state \
"$coverage_run" next-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}"
bash tools/verify-greenfield-case-coverage.sh mark \
tools/fixtures/greenfield-expected-red.tsv .greenfield-case-state \
"$coverage_run" 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"
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}"
bash tools/verify-greenfield-case-coverage.sh mark \
tools/fixtures/greenfield-expected-red.tsv .greenfield-case-state \
"$coverage_run" next-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}"
bash tools/verify-greenfield-case-coverage.sh check \
tools/fixtures/greenfield-expected-red.tsv .greenfield-case-state \
"$coverage_run"