181 lines
8.4 KiB
YAML
181 lines
8.4 KiB
YAML
# 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: JD01: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-jd01-v02
|
|
enabled: true
|
|
adapter: agentrun-yaml-lane
|
|
description: Follow AgentRun v0.2 into the JD01 YAML-only runtime lane.
|
|
source:
|
|
repository: pikasTech/agentrun
|
|
branch: v0.2
|
|
branchRef: config/agentrun.yaml#controlPlane.lanes.jd01-v02.source.branch
|
|
authorityRef: config/agentrun.yaml#controlPlane.lanes.jd01-v02.source.sourceAuthority
|
|
snapshotPrefix: refs/unidesk/snapshots/agentrun-yaml-lane/v0.2
|
|
snapshotRef: config/agentrun.yaml#controlPlane.lanes.jd01-v02.source.sourceSnapshot.stageRefPrefix
|
|
target:
|
|
node: JD01
|
|
lane: jd01-v02
|
|
namespace: agentrun-v02
|
|
configRefs:
|
|
lane: config/agentrun.yaml#controlPlane.lanes.jd01-v02
|
|
source: config/agentrun.yaml#controlPlane.lanes.jd01-v02.source
|
|
runtime: config/agentrun.yaml#controlPlane.lanes.jd01-v02.runtime
|
|
pipeline: config/agentrun.yaml#controlPlane.lanes.jd01-v02.ci.pipeline
|
|
pipelineRunPrefix: config/agentrun.yaml#controlPlane.lanes.jd01-v02.ci.pipelineRunPrefix
|
|
argoApplication: config/agentrun.yaml#controlPlane.lanes.jd01-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", "JD01", "--lane", "jd01-v02", "--dry-run", "--raw"]
|
|
timeoutSeconds: 35
|
|
status:
|
|
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "JD01", "--lane", "jd01-v02", "--raw"]
|
|
timeoutSeconds: 35
|
|
trigger:
|
|
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "trigger-current", "--node", "JD01", "--lane", "jd01-v02", "--confirm", "--wait", "--raw"]
|
|
timeoutSeconds: 120
|
|
events:
|
|
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "JD01", "--lane", "jd01-v02", "--full"]
|
|
timeoutSeconds: 35
|
|
logs:
|
|
argv: ["bun", "scripts/cli.ts", "agentrun", "control-plane", "status", "--node", "JD01", "--lane", "jd01-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"]
|