fix: remove v02 control-plane fallbacks

This commit is contained in:
Codex
2026-05-28 18:00:23 +08:00
parent cde877f1c6
commit 792e307d99
+53 -34
View File
@@ -1257,26 +1257,32 @@ workdir="$(mktemp -d)"
git clone --depth 1 --branch "$SOURCE_BRANCH" "$GIT_URL" "$workdir/repo"
cd "$workdir/repo"
revision="$(git rev-parse HEAD)"
LANE="\${LANE:-g14}"
CATALOG_PATH="\${CATALOG_PATH:-deploy/artifact-catalog.dev.json}"
IMAGE_TAG_MODE="\${IMAGE_TAG_MODE:-short}"
: "\${LANE:?LANE is required}"
: "\${CATALOG_PATH:?CATALOG_PATH is required}"
: "\${IMAGE_TAG_MODE:?IMAGE_TAG_MODE is required}"
node scripts/g14-gitops-render.mjs --lane "$LANE" --catalog-path "$CATALOG_PATH" --image-tag-mode "$IMAGE_TAG_MODE" --source-revision "$revision" --source-repo "$GIT_URL" --source-branch "$SOURCE_BRANCH" --gitops-branch "$GITOPS_BRANCH" --registry-prefix "$REGISTRY_PREFIX"
node scripts/g14-gitops-render.mjs --lane "$LANE" --catalog-path "$CATALOG_PATH" --image-tag-mode "$IMAGE_TAG_MODE" --source-revision "$revision" --source-repo "$GIT_URL" --source-branch "$SOURCE_BRANCH" --gitops-branch "$GITOPS_BRANCH" --registry-prefix "$REGISTRY_PREFIX" --check
node <<'NODE'
const fs = require("node:fs");
const https = require("node:https");
const namespace = process.env.POD_NAMESPACE || "hwlab-ci";
function requiredEnv(name) {
const value = process.env[name];
if (!value) throw new Error(name + " is required");
return value;
}
const namespace = requiredEnv("POD_NAMESPACE");
const host = process.env.KUBERNETES_SERVICE_HOST;
const port = process.env.KUBERNETES_SERVICE_PORT || "443";
if (!host) throw new Error("KUBERNETES_SERVICE_HOST is not available");
const token = fs.readFileSync("/var/run/secrets/kubernetes.io/serviceaccount/token", "utf8");
const ca = fs.readFileSync("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt");
const tektonDir = process.env.TEKTON_DIR || "tekton";
const tektonDir = requiredEnv("TEKTON_DIR");
const argoFiles = String(process.env.ARGO_FILES || "").split(",").map((item) => item.trim()).filter(Boolean);
const fieldManager = process.env.FIELD_MANAGER || "hwlab-g14-control-plane-reconciler";
const eventName = process.env.RECONCILE_EVENT || "g14-control-plane-reconciled";
const fieldManager = requiredEnv("FIELD_MANAGER");
const eventName = requiredEnv("RECONCILE_EVENT");
const manifestFiles = [
"deploy/gitops/g14/" + tektonDir + "/rbac.yaml",
"deploy/gitops/g14/" + tektonDir + "/pipeline.yaml",
@@ -1384,26 +1390,33 @@ case "$subject" in
;;
esac
short="$(printf '%.12s' "$revision")"
prefix="\${PIPELINERUN_PREFIX:-hwlab-g14-ci-poll}"
: "\${PIPELINERUN_PREFIX:?PIPELINERUN_PREFIX is required}"
: "\${GITOPS_TARGET:?GITOPS_TARGET is required}"
prefix="$PIPELINERUN_PREFIX"
name="$prefix-$short"
export POLLER_REVISION="$revision"
export POLLER_PIPELINERUN="$name"
export POLLER_SOURCE_SUBJECT="$subject"
echo "Checking \${GITOPS_TARGET:-g14} source $revision with PipelineRun $name"
echo "Checking $GITOPS_TARGET source $revision with PipelineRun $name"
node <<'NODE'
const fs = require("node:fs");
const https = require("node:https");
function env(name, fallback) {
return process.env[name] || fallback;
function requiredEnv(name) {
const value = process.env[name];
if (!value) throw new Error(name + " is required");
return value;
}
const namespace = env("POD_NAMESPACE", "hwlab-ci");
const name = env("POLLER_PIPELINERUN", "");
const revision = env("POLLER_REVISION", "");
function optionalEnv(name) {
return process.env[name] || "";
}
const namespace = requiredEnv("POD_NAMESPACE");
const name = requiredEnv("POLLER_PIPELINERUN");
const revision = requiredEnv("POLLER_REVISION");
const host = process.env.KUBERNETES_SERVICE_HOST;
const port = process.env.KUBERNETES_SERVICE_PORT || "443";
if (!name || !revision) throw new Error("poller did not resolve a PipelineRun name and revision");
if (!host) throw new Error("KUBERNETES_SERVICE_HOST is not available");
const token = fs.readFileSync("/var/run/secrets/kubernetes.io/serviceaccount/token", "utf8");
@@ -1431,7 +1444,7 @@ function request(method, path, body) {
const labels = {
"app.kubernetes.io/part-of": "hwlab",
"hwlab.pikastech.local/gitops-target": env("GITOPS_TARGET", "g14"),
"hwlab.pikastech.local/gitops-target": requiredEnv("GITOPS_TARGET"),
"hwlab.pikastech.local/source-commit": revision,
"hwlab.pikastech.local/trigger": "polling"
};
@@ -1444,29 +1457,29 @@ const pipelineRun = {
namespace,
labels,
annotations: {
"hwlab.pikastech.local/source-subject": env("POLLER_SOURCE_SUBJECT", ""),
"hwlab.pikastech.local/source-branch": env("SOURCE_BRANCH", "G14"),
"hwlab.pikastech.local/gitops-branch": env("GITOPS_BRANCH", "G14-gitops")
"hwlab.pikastech.local/source-subject": optionalEnv("POLLER_SOURCE_SUBJECT"),
"hwlab.pikastech.local/source-branch": requiredEnv("SOURCE_BRANCH"),
"hwlab.pikastech.local/gitops-branch": requiredEnv("GITOPS_BRANCH")
}
},
spec: {
pipelineRef: { name: env("PIPELINE_NAME", "hwlab-g14-ci-image-publish") },
pipelineRef: { name: requiredEnv("PIPELINE_NAME") },
taskRunTemplate: {
serviceAccountName: env("SERVICE_ACCOUNT_NAME", "hwlab-tekton-runner"),
serviceAccountName: requiredEnv("SERVICE_ACCOUNT_NAME"),
podTemplate: { hostNetwork: true, dnsPolicy: "ClusterFirstWithHostNet", securityContext: { fsGroup: 1000 } }
},
params: [
{ name: "git-url", value: env("GIT_URL", "git@github.com:pikasTech/HWLAB.git") },
{ name: "source-branch", value: env("SOURCE_BRANCH", "G14") },
{ name: "gitops-branch", value: env("GITOPS_BRANCH", "G14-gitops") },
{ name: "lane", value: env("LANE", "g14") },
{ name: "catalog-path", value: env("CATALOG_PATH", "deploy/artifact-catalog.dev.json") },
{ name: "image-tag-mode", value: env("IMAGE_TAG_MODE", "short") },
{ name: "runtime-path", value: env("RUNTIME_PATH", "deploy/gitops/g14/runtime-dev") },
{ name: "git-url", value: requiredEnv("GIT_URL") },
{ name: "source-branch", value: requiredEnv("SOURCE_BRANCH") },
{ name: "gitops-branch", value: requiredEnv("GITOPS_BRANCH") },
{ name: "lane", value: requiredEnv("LANE") },
{ name: "catalog-path", value: requiredEnv("CATALOG_PATH") },
{ name: "image-tag-mode", value: requiredEnv("IMAGE_TAG_MODE") },
{ name: "runtime-path", value: requiredEnv("RUNTIME_PATH") },
{ name: "revision", value: revision },
{ name: "registry-prefix", value: env("REGISTRY_PREFIX", "127.0.0.1:5000/hwlab") },
{ name: "services", value: env("SERVICES", "${defaultServicesParam}") },
{ name: "base-image", value: env("BASE_IMAGE", "${defaultDevBaseImage}") }
{ name: "registry-prefix", value: requiredEnv("REGISTRY_PREFIX") },
{ name: "services", value: requiredEnv("SERVICES") },
{ name: "base-image", value: requiredEnv("BASE_IMAGE") }
],
workspaces: [
{ name: "source", volumeClaimTemplate: { spec: { accessModes: ["ReadWriteOnce"], resources: { requests: { storage: "8Gi" } } } } },
@@ -1870,9 +1883,15 @@ const https = require("node:https");
const host = process.env.KUBERNETES_SERVICE_HOST;
const port = process.env.KUBERNETES_SERVICE_PORT || "443";
const revision = process.env.HWLAB_SOURCE_REVISION || "";
const runtimeNamespace = process.env.HWLAB_RUNTIME_NAMESPACE || "hwlab-dev";
const gitopsTarget = process.env.HWLAB_GITOPS_TARGET || "g14";
function requiredEnv(name) {
const value = process.env[name];
if (!value) throw new Error(name + " is required");
return value;
}
const revision = requiredEnv("HWLAB_SOURCE_REVISION");
const runtimeNamespace = requiredEnv("HWLAB_RUNTIME_NAMESPACE");
const gitopsTarget = requiredEnv("HWLAB_GITOPS_TARGET");
const pipelineRun = process.env.HWLAB_TEKTON_PIPELINERUN || null;
const taskRun = process.env.HWLAB_TEKTON_TASKRUN || null;
const task = process.env.HWLAB_TEKTON_TASK || null;