fix: keep dev e2e repo fetch on host

This commit is contained in:
Codex
2026-05-18 09:26:06 +00:00
parent 613e5a1742
commit 8511792601
5 changed files with 132 additions and 71 deletions
+55 -1
View File
@@ -9,11 +9,12 @@ environment="dev"
result_dir=""
timeout_ms="1800000"
keep_namespace="false"
manifest_file=""
usage() {
cat <<'EOF'
Usage:
dev-e2e.sh --run-id ID --manifest-commit COMMIT --result-dir DIR [--repo-url URL] [--desired-ref master] [--environment dev] [--timeout-ms MS] [--keep-namespace]
dev-e2e.sh --run-id ID --manifest-commit COMMIT --manifest-file FILE --result-dir DIR [--repo-url URL] [--desired-ref master] [--environment dev] [--timeout-ms MS] [--keep-namespace]
This script runs the D601 dev namespace e2e harness from a Git-controlled blob.
It must be launched by the CLI with a short command; do not paste this script
@@ -47,6 +48,10 @@ while [ "$#" -gt 0 ]; do
result_dir="${2:-}"
shift 2
;;
--manifest-file)
manifest_file="${2:-}"
shift 2
;;
--timeout-ms)
timeout_ms="${2:-}"
shift 2
@@ -86,6 +91,10 @@ fi
if [ -z "$result_dir" ]; then
result_dir="/home/ubuntu/.unidesk/runs/$run_id"
fi
if [ -z "$manifest_file" ] || [ ! -f "$manifest_file" ]; then
echo "--manifest-file must point to the commit-pinned deploy.json fetched by the launcher" >&2
exit 2
fi
mkdir -p "$result_dir"
runner_log="$result_dir/runner.log"
@@ -144,6 +153,43 @@ log_json runner_started run_id "$run_id" manifest_commit "$manifest_commit"
kubectl get pipeline/unidesk-dev-namespace-e2e -n unidesk-ci >/dev/null
kubectl get pvc/unidesk-ci-cache -n unidesk-ci >/dev/null
service_env="$result_dir/dev-e2e-service-commits.env"
python3 - "$manifest_file" "$service_env" "$environment" <<'PY'
import json
import re
import sys
manifest_path, out_path, environment = sys.argv[1:]
with open(manifest_path, "r", encoding="utf-8") as handle:
manifest = json.load(handle)
if manifest.get("schemaVersion") != 2:
raise SystemExit("deploy.json must use schemaVersion=2")
env = manifest.get("environments", {}).get(environment)
if not isinstance(env, dict):
raise SystemExit(f"deploy.json must contain environments.{environment}")
services = env.get("services")
if not isinstance(services, list) or not services:
raise SystemExit(f"deploy.json environments.{environment}.services must contain services")
lines = []
summary = []
for service in services:
if not isinstance(service, dict) or not service.get("id") or not service.get("repo") or not service.get("commitId"):
raise SystemExit(f"each deploy.json environments.{environment} service must contain id, repo and commitId")
key = re.sub(r"[^A-Z0-9]", "_", str(service["id"]).upper())
commit = str(service["commitId"])
lines.append(f"{key}_COMMIT={commit}")
summary.append({"id": service["id"], "commitId": commit})
with open(out_path, "w", encoding="utf-8") as handle:
handle.write("\n".join(lines) + "\n")
print(json.dumps({"ok": True, "environment": environment, "services": summary}, ensure_ascii=False))
PY
# shellcheck disable=SC1090
source "$service_env"
backend_commit="${BACKEND_CORE_COMMIT:-unknown}"
frontend_commit="${FRONTEND_COMMIT:-unknown}"
code_queue_commit="${CODE_QUEUE_COMMIT:-unknown}"
deploy_json_b64="$(base64 -w0 "$manifest_file")"
pipeline_manifest="$result_dir/pipelinerun.yaml"
cat >"$pipeline_manifest" <<YAML
apiVersion: tekton.dev/v1
@@ -175,6 +221,14 @@ spec:
value: "$run_id"
- name: keep-namespace
value: "$keep_namespace"
- name: backend-core-commit
value: "$backend_commit"
- name: frontend-commit
value: "$frontend_commit"
- name: code-queue-commit
value: "$code_queue_commit"
- name: deploy-json-b64
value: "$deploy_json_b64"
workspaces:
- name: shared-workspace
persistentVolumeClaim: