mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-20 16:07:11 +08:00
feat(ql3): rehearse cross-domain reconciliation completion
This commit is contained in:
@@ -790,11 +790,22 @@ jobs:
|
||||
RECONCILIATION_DECISION_ROOT="${RUNNER_TEMP}/ql3-alpha-reconciliation-decisions-${{ matrix.image_arch }}"
|
||||
RECONCILIATION_REVIEW_DECISION_ROOT="${RECONCILIATION_DECISION_ROOT}/review"
|
||||
RECONCILIATION_AUTOMATION_DECISION_ROOT="${RECONCILIATION_DECISION_ROOT}/automation"
|
||||
COMPLETION_LEGACY_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-legacy-${{ matrix.image_arch }}"
|
||||
COMPLETION_UPGRADE_EVIDENCE_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-upgrade-evidence-${{ matrix.image_arch }}"
|
||||
COMPLETION_REHEARSAL_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-rehearsal-${{ matrix.image_arch }}"
|
||||
COMPLETION_CAPTURE_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-capture-${{ matrix.image_arch }}"
|
||||
COMPLETION_FLOW_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-flow-${{ matrix.image_arch }}"
|
||||
COMPLETION_DECISION_ROOT="${RUNNER_TEMP}/ql3-alpha-completion-decisions-${{ matrix.image_arch }}"
|
||||
COMPLETION_REVIEW_DECISION_ROOT="${COMPLETION_DECISION_ROOT}/review"
|
||||
COMPLETION_AUTOMATION_DECISION_ROOT="${COMPLETION_DECISION_ROOT}/automation"
|
||||
COMPLETION_SECRET_CONFIG_DECISION_ROOT="${COMPLETION_DECISION_ROOT}/secret-config"
|
||||
LEGACY_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-upgrade-legacy-${{ matrix.image_arch }}"
|
||||
TARGET_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-upgrade-target-${{ matrix.image_arch }}"
|
||||
RECONCILIATION_LEGACY_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-reconciliation-legacy-${{ matrix.image_arch }}"
|
||||
RECONCILIATION_TARGET_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-reconciliation-target-${{ matrix.image_arch }}"
|
||||
trap 'docker rm --force "${QUICKSTART_CONTAINER}" "${TARGET_CONTAINER}" "${LEGACY_CONTAINER}" "${RECONCILIATION_TARGET_CONTAINER}" "${RECONCILIATION_LEGACY_CONTAINER}" >/dev/null 2>&1 || true' EXIT
|
||||
COMPLETION_LEGACY_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-completion-legacy-${{ matrix.image_arch }}"
|
||||
COMPLETION_TARGET_CONTAINER="ql3-alpha-${TRIAL_VARIANT}-completion-target-${{ matrix.image_arch }}"
|
||||
trap 'docker rm --force "${QUICKSTART_CONTAINER}" "${TARGET_CONTAINER}" "${LEGACY_CONTAINER}" "${RECONCILIATION_TARGET_CONTAINER}" "${RECONCILIATION_LEGACY_CONTAINER}" "${COMPLETION_TARGET_CONTAINER}" "${COMPLETION_LEGACY_CONTAINER}" >/dev/null 2>&1 || true' EXIT
|
||||
sh "${BUNDLE_ROOT}/upgrade-cutover-rehearsal.sh" \
|
||||
edge "${LEGACY_READINESS_ROOT}" "${UPGRADE_REHEARSAL_ROOT}" \
|
||||
"${SQLITE_PLAN_DIGEST}" "${DIRECTORY_PLAN_DIGEST}" \
|
||||
@@ -882,6 +893,79 @@ jobs:
|
||||
docker rm "${RECONCILIATION_TARGET_CONTAINER}" "${RECONCILIATION_LEGACY_CONTAINER}"
|
||||
test ! -e "${LEGACY_READINESS_ROOT}/db/database.sqlite-wal"
|
||||
test ! -e "${LEGACY_READINESS_ROOT}/db/database.sqlite-journal"
|
||||
|
||||
node scripts/ql3-local-alpha-upgrade-readiness-fixture.cjs \
|
||||
--shape=completion-ready \
|
||||
--output="${COMPLETION_LEGACY_ROOT}"
|
||||
sh "${BUNDLE_ROOT}/upgrade-readiness.sh" \
|
||||
edge "${COMPLETION_LEGACY_ROOT}" "${COMPLETION_UPGRADE_EVIDENCE_ROOT}"
|
||||
COMPLETION_SQLITE_PLAN_DIGEST="$(node -e 'process.stdout.write(JSON.parse(require("fs").readFileSync(process.argv[1], "utf8")).evidence.planDigest)' \
|
||||
"${COMPLETION_UPGRADE_EVIDENCE_ROOT}/results/sqlite-inspect.result.json")"
|
||||
COMPLETION_DIRECTORY_PLAN_DIGEST="$(node -e 'process.stdout.write(JSON.parse(require("fs").readFileSync(process.argv[1], "utf8")).evidence.planDigest)' \
|
||||
"${COMPLETION_UPGRADE_EVIDENCE_ROOT}/results/data-directory-inspect.result.json")"
|
||||
sh "${BUNDLE_ROOT}/upgrade-cutover-rehearsal.sh" \
|
||||
edge "${COMPLETION_LEGACY_ROOT}" "${COMPLETION_REHEARSAL_ROOT}" \
|
||||
"${COMPLETION_SQLITE_PLAN_DIGEST}" "${COMPLETION_DIRECTORY_PLAN_DIGEST}" \
|
||||
"${COMPLETION_LEGACY_CONTAINER}" "${COMPLETION_TARGET_CONTAINER}" \
|
||||
--capture-after-write "${COMPLETION_CAPTURE_ROOT}"
|
||||
grep -q '"status":"reconciliation_captured"' \
|
||||
"${COMPLETION_REHEARSAL_ROOT}/reconciliation-capture-summary.json"
|
||||
install -d -m 0700 \
|
||||
"${COMPLETION_DECISION_ROOT}" \
|
||||
"${COMPLETION_REVIEW_DECISION_ROOT}" \
|
||||
"${COMPLETION_AUTOMATION_DECISION_ROOT}" \
|
||||
"${COMPLETION_SECRET_CONFIG_DECISION_ROOT}"
|
||||
sh "${BUNDLE_ROOT}/reconciliation-rehearsal.sh" \
|
||||
prepare edge "${COMPLETION_REHEARSAL_ROOT}" \
|
||||
"${COMPLETION_CAPTURE_ROOT}" "${COMPLETION_FLOW_ROOT}" \
|
||||
Asia/Shanghai
|
||||
node scripts/ql3-local-alpha-reconciliation-decision-fixture.cjs \
|
||||
--mode=completion-review \
|
||||
--reconciliation-root="${COMPLETION_FLOW_ROOT}" \
|
||||
--output="${COMPLETION_REVIEW_DECISION_ROOT}/review.ndjson"
|
||||
sh "${BUNDLE_ROOT}/reconciliation-rehearsal.sh" \
|
||||
review edge "${COMPLETION_REHEARSAL_ROOT}" \
|
||||
"${COMPLETION_CAPTURE_ROOT}" "${COMPLETION_FLOW_ROOT}" \
|
||||
"${COMPLETION_REVIEW_DECISION_ROOT}/review.ndjson"
|
||||
node scripts/ql3-local-alpha-reconciliation-decision-fixture.cjs \
|
||||
--mode=automation \
|
||||
--reconciliation-root="${COMPLETION_FLOW_ROOT}" \
|
||||
--output="${COMPLETION_AUTOMATION_DECISION_ROOT}/automation.ndjson"
|
||||
sh "${BUNDLE_ROOT}/reconciliation-rehearsal.sh" \
|
||||
apply-plan edge "${COMPLETION_REHEARSAL_ROOT}" \
|
||||
"${COMPLETION_CAPTURE_ROOT}" "${COMPLETION_FLOW_ROOT}" \
|
||||
"${COMPLETION_AUTOMATION_DECISION_ROOT}/automation.ndjson" \
|
||||
"${COMPLETION_REVIEW_DECISION_ROOT}/review.ndjson" \
|
||||
"${COMPLETION_LEGACY_ROOT}"
|
||||
grep -q '"status":"secret_config_decision_required"' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"automaticCandidateDecision":"not_authorized"' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"state":"reconciliation_run_history_preserved"' \
|
||||
"${COMPLETION_FLOW_ROOT}/results/run-history-verify.result.json"
|
||||
node scripts/ql3-local-alpha-reconciliation-decision-fixture.cjs \
|
||||
--mode=secret-config \
|
||||
--reconciliation-root="${COMPLETION_FLOW_ROOT}" \
|
||||
--output="${COMPLETION_SECRET_CONFIG_DECISION_ROOT}/secret-config.ndjson"
|
||||
sh "${BUNDLE_ROOT}/reconciliation-rehearsal.sh" \
|
||||
complete edge "${COMPLETION_REHEARSAL_ROOT}" \
|
||||
"${COMPLETION_CAPTURE_ROOT}" "${COMPLETION_FLOW_ROOT}" \
|
||||
"${COMPLETION_SECRET_CONFIG_DECISION_ROOT}/secret-config.ndjson" \
|
||||
"${COMPLETION_REVIEW_DECISION_ROOT}/review.ndjson" \
|
||||
"${COMPLETION_LEGACY_ROOT}"
|
||||
grep -q '"status":"reconciliation_completed"' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"adapterCount":3' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"targetRestart":"not_authorized"' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"legacyRestart":"not_authorized"' \
|
||||
"${COMPLETION_FLOW_ROOT}/summary.json"
|
||||
grep -q '"status":"verified"' \
|
||||
"${COMPLETION_FLOW_ROOT}/results/completion-verify.result.json"
|
||||
docker rm "${COMPLETION_TARGET_CONTAINER}" "${COMPLETION_LEGACY_CONTAINER}"
|
||||
test ! -e "${COMPLETION_LEGACY_ROOT}/db/database.sqlite-wal"
|
||||
test ! -e "${COMPLETION_LEGACY_ROOT}/db/database.sqlite-journal"
|
||||
trap - EXIT
|
||||
- name: Upload the tested native Local Alpha trial kit
|
||||
if: github.event_name == 'workflow_dispatch' && inputs.produce_alpha_artifacts && (inputs.alpha_artifact_scope == 'local' || inputs.alpha_artifact_scope == 'all')
|
||||
|
||||
Reference in New Issue
Block a user