feat: add cicd branch follower

This commit is contained in:
Codex
2026-07-03 03:36:58 +00:00
parent 9265d6a38b
commit f934d0b3cd
7 changed files with 1966 additions and 1 deletions
+180
View File
@@ -0,0 +1,180 @@
# SPEC: PJ2026-01060703 CI/CD branch follower draft-2026-07-03-p0-branch-follower
apiVersion: unidesk.pikapython.com/v1alpha1
kind: CicdBranchFollowerRegistry
metadata:
id: unidesk-cicd-branch-followers
owner: UniDesk
specRef: PJ2026-01060703
version: draft-2026-07-03-p0-branch-follower
controller:
namespace: devops-infra
kubeRoute: D601:k3s
fieldManager: unidesk-cicd-branch-follower
serviceAccountName: unidesk-cicd-branch-follower
deploymentName: unidesk-cicd-branch-follower
configMapName: unidesk-cicd-branch-follower-config
stateConfigMapName: unidesk-cicd-branch-follower-state
leaseName: unidesk-cicd-branch-follower
image: 127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1
labels:
app.kubernetes.io/name: unidesk-cicd-branch-follower
app.kubernetes.io/component: cicd-control-plane
app.kubernetes.io/part-of: unidesk
source:
repository: pikasTech/unidesk
branch: master
gitMirrorReadUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
sourceAuthority:
mode: gitMirrorSnapshot
resolver: k8s-git-mirror
allowHostGit: false
allowHostWorkspace: false
allowGithubDirectInPipeline: false
sourceSnapshot:
stageRefPrefix: refs/unidesk/snapshots/unidesk-controller/{branch}
missingObjectPolicy: fail-fast
refreshPolicy: sync-before-snapshot
loop:
intervalSeconds: 30
reconcileTimeoutSeconds: 110
budgets:
applyWaitSeconds: 120
statusSeconds: 35
runOnceSeconds: 120
followers:
- id: hwlab-jd01-v03
enabled: true
adapter: hwlab-node-runtime
description: Follow HWLAB v0.3 into the JD01 HWLAB node runtime.
source:
repository: pikasTech/HWLAB
branch: v0.3
branchRef: config/hwlab-node-lanes.yaml#lanes.v03.sourceBranch
authorityRef: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.git.readUrl
snapshotPrefix: refs/unidesk/snapshots/hwlab-node-runtime/v0.3
snapshotRef: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.git.readUrl
target:
node: JD01
lane: v03
namespace: hwlab-v03
configRefs:
lane: config/hwlab-node-lanes.yaml#lanes.v03
target: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01
pipeline: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.pipeline
pipelineRunPrefix: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.pipelineRunPrefix
runtimeNamespace: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.runtime.namespace
budgets:
endToEndSeconds: 120
statusSeconds: 35
triggerSeconds: 120
sourceSyncSeconds: 20
commands:
plan:
argv: ["bun", "scripts/cli.ts", "hwlab", "nodes", "control-plane", "trigger-current", "--node", "JD01", "--lane", "v03", "--dry-run", "--raw"]
timeoutSeconds: 35
status:
argv: ["bun", "scripts/cli.ts", "hwlab", "nodes", "control-plane", "status", "--node", "JD01", "--lane", "v03", "--raw"]
timeoutSeconds: 35
trigger:
argv: ["bun", "scripts/cli.ts", "hwlab", "nodes", "control-plane", "trigger-current", "--node", "JD01", "--lane", "v03", "--confirm", "--wait", "--raw"]
timeoutSeconds: 120
events:
argv: ["bun", "scripts/cli.ts", "hwlab", "nodes", "control-plane", "status", "--node", "JD01", "--lane", "v03", "--full"]
timeoutSeconds: 35
logs:
argv: ["bun", "scripts/cli.ts", "hwlab", "nodes", "control-plane", "status", "--node", "JD01", "--lane", "v03", "--full"]
timeoutSeconds: 35
closeout:
checks: ["sourceSnapshot", "pipelineRun", "gitMirrorPostFlush", "gitops", "argo", "runtime", "publicHealth"]
- id: agentrun-d601-v02
enabled: true
adapter: agentrun-yaml-lane
description: Follow AgentRun v0.2 into the D601 YAML-only runtime lane.
source:
repository: pikasTech/agentrun
branch: v0.2
branchRef: config/agentrun.yaml#controlPlane.lanes.v02.source.branch
authorityRef: config/agentrun.yaml#controlPlane.lanes.v02.source.sourceAuthority
snapshotPrefix: refs/unidesk/snapshots/agentrun-yaml-lane/v0.2
snapshotRef: config/agentrun.yaml#controlPlane.lanes.v02.source.sourceSnapshot.stageRefPrefix
target:
node: D601
lane: v02
namespace: agentrun-v02
configRefs:
lane: config/agentrun.yaml#controlPlane.lanes.v02
source: config/agentrun.yaml#controlPlane.lanes.v02.source
runtime: config/agentrun.yaml#controlPlane.lanes.v02.runtime
pipeline: config/agentrun.yaml#controlPlane.lanes.v02.ci.pipeline
pipelineRunPrefix: config/agentrun.yaml#controlPlane.lanes.v02.ci.pipelineRunPrefix
argoApplication: config/agentrun.yaml#controlPlane.lanes.v02.gitops.argoApplication
budgets:
endToEndSeconds: 120
statusSeconds: 35
triggerSeconds: 120
sourceSyncSeconds: 20
commands:
plan:
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "trigger-current", "--node", "D601", "--lane", "v02", "--dry-run", "--raw"]
timeoutSeconds: 35
status:
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "D601", "--lane", "v02", "--raw"]
timeoutSeconds: 35
trigger:
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "trigger-current", "--node", "D601", "--lane", "v02", "--confirm", "--wait", "--raw"]
timeoutSeconds: 120
events:
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "D601", "--lane", "v02", "--full"]
timeoutSeconds: 35
logs:
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "D601", "--lane", "v02", "--full"]
timeoutSeconds: 35
closeout:
checks: ["sourceSnapshot", "pipelineRun", "gitops", "argo", "manager", "runtimeHealth"]
- id: web-probe-sentinel-master
enabled: true
adapter: web-probe-sentinel-cicd
description: Follow UniDesk master into the selected HWLAB web-probe sentinel runtime.
source:
repository: pikasTech/unidesk
branch: master
branchRef: config/hwlab-web-probe-sentinel/profiles.yaml#nodes.JD01.sentinels.jd01-web-probe-sentinel.cicd.source.branch
authorityRef: config/hwlab-web-probe-sentinel/profiles.yaml#nodes.JD01.sentinels.jd01-web-probe-sentinel.cicd.sourceAuthority
snapshotPrefix: refs/unidesk/snapshots/web-probe-sentinel/master
snapshotRef: config/hwlab-web-probe-sentinel/profiles.yaml#nodes.JD01.sentinels.jd01-web-probe-sentinel.cicd.sourceSnapshot.stageRefPrefix
target:
node: JD01
lane: v03
namespace: hwlab-v03
sentinel: jd01-web-probe-sentinel
configRefs:
sentinel: config/hwlab-web-probe-sentinel/profiles.yaml#nodes.JD01.sentinels.jd01-web-probe-sentinel.sentinel
cicd: config/hwlab-web-probe-sentinel/profiles.yaml#nodes.JD01.sentinels.jd01-web-probe-sentinel.cicd
monitorRoot: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.observability.webProbe.monitorRoot
budgets:
endToEndSeconds: 120
statusSeconds: 35
triggerSeconds: 120
sourceSyncSeconds: 20
commands:
plan:
argv: ["bun", "scripts/cli.ts", "web-probe", "sentinel", "publish-current", "--node", "JD01", "--lane", "v03", "--sentinel", "jd01-web-probe-sentinel", "--dry-run", "--raw"]
timeoutSeconds: 35
status:
argv: ["bun", "scripts/cli.ts", "web-probe", "sentinel", "control-plane", "status", "--node", "JD01", "--lane", "v03", "--sentinel", "jd01-web-probe-sentinel", "--raw"]
timeoutSeconds: 35
trigger:
argv: ["bun", "scripts/cli.ts", "web-probe", "sentinel", "publish-current", "--node", "JD01", "--lane", "v03", "--sentinel", "jd01-web-probe-sentinel", "--confirm", "--wait", "--raw"]
timeoutSeconds: 120
events:
argv: ["bun", "scripts/cli.ts", "web-probe", "sentinel", "control-plane", "status", "--node", "JD01", "--lane", "v03", "--sentinel", "jd01-web-probe-sentinel", "--full"]
timeoutSeconds: 35
logs:
argv: ["bun", "scripts/cli.ts", "web-probe", "sentinel", "report", "--node", "JD01", "--lane", "v03", "--sentinel", "jd01-web-probe-sentinel", "--latest", "--view", "summary", "--raw"]
timeoutSeconds: 35
closeout:
checks: ["sourceMirror", "imageRegistry", "gitops", "argo", "runtimeHealthEndpoint", "dashboard", "report"]