13 Commits

Author SHA1 Message Date
UniDesk Sub2Rank CI 1e30121c1f sub2rank: deploy 49b65d533775 2026-07-23 14:56:29 +00:00
UniDesk Sub2Rank CI dee36c18c0 sub2rank: deploy 49b65d533775 2026-07-23 14:43:56 +00:00
UniDesk Host CI 9d0a3c2d6e unidesk-host: deploy decision-center,hwlab-nc01-v03-runtime-gitops-scripts,hwlab-nc01-production-runtime-gitops-scripts 843c2383e9 2026-07-23 05:45:11 +00:00
UniDesk Platform Infra CI 16f3791cb6 platform-infra: deploy gitea bridge 843c2383e9 2026-07-23 05:35:15 +00:00
UniDesk Platform Infra CI ce0600b8c2 platform-infra: deploy gitea bridge 4700971a42 2026-07-23 01:02:16 +00:00
UniDesk Host CI c550ece6b4 unidesk-host: deploy todo-note,decision-center,hwlab-nc01-v03-runtime-gitops-scripts,hwlab-nc01-production-runtime-gitops-scripts 13ec1114a7 2026-07-22 22:26:55 +00:00
UniDesk Platform Infra CI 886e81b256 platform-infra: deploy gitea bridge 9b3b4e1c9e 2026-07-22 14:26:59 +00:00
UniDesk Platform Infra CI 0521e56c47 platform-infra: deploy gitea bridge 5f43997d4a 2026-07-22 13:32:53 +00:00
UniDesk Platform Infra CI 1d655e965d platform-infra: deploy gitea bridge 689497879b 2026-07-22 10:48:19 +00:00
UniDesk Platform Infra CI 41f05c11a4 platform-infra: deploy gitea bridge 28ac8eb81e 2026-07-22 10:28:28 +00:00
UniDesk Platform Infra CI 1ea9e1c685 platform-infra: deploy gitea bridge d1729f090a 2026-07-22 09:54:04 +00:00
UniDesk Platform Infra CI 97e0a11575 platform-infra: deploy gitea bridge e7e8992b3d 2026-07-22 07:18:31 +00:00
UniDesk Platform Infra CI 72a0745dd1 platform-infra: deploy gitea bridge 4c4ded5ee8 2026-07-21 18:03:03 +00:00
14 changed files with 6092 additions and 237 deletions
@@ -0,0 +1,8 @@
{
"version": 1,
"kind": "PlatformInfraGiteaGitOpsState",
"targetId": "NC01",
"sourceCommit": "843c2383e931dc3ac1fcbe4ec965271866397a3e",
"desiredManifestSha256": "cb6998e2c6d69e4664f5a49547ebbebcb793939532ab67918a58ce79356b5fd6",
"bootstrapApplicationSha256": "ff7155b4fca474025c29099a305fca2fd53c82d8092e3e3954177f99e1875fc7"
}
@@ -0,0 +1,14 @@
{
"version": 1,
"kind": "Sub2RankReleaseState",
"service": "sub2rank",
"sourceCommit": "49b65d533775f933724b93497b123ff769f44b47",
"configSha256": "e9c7d1835f006e44ac0f82caa942aa6f1921d64a63b4f1717e7907a2c1548f36",
"digest": "sha256:1a67ff1b8ed7eafc2838337d863bcbea8897fa5a105187bbe93701c8d1d384de",
"digestRef": "127.0.0.1:5000/sub2rank/sub2rank@sha256:1a67ff1b8ed7eafc2838337d863bcbea8897fa5a105187bbe93701c8d1d384de",
"manifestPath": "deploy/gitops/platform-infra/sub2rank-development-nc01/resources.yaml",
"automaticCredit": {
"enabled": false,
"mode": "dry-run"
}
}
@@ -0,0 +1,14 @@
{
"version": 1,
"kind": "Sub2RankReleaseState",
"service": "sub2rank",
"sourceCommit": "49b65d533775f933724b93497b123ff769f44b47",
"configSha256": "e9c7d1835f006e44ac0f82caa942aa6f1921d64a63b4f1717e7907a2c1548f36",
"digest": "sha256:2fd51714ff4acafbeeff24188b35772356d726fd9da242d4505e7c19aa6ca0f1",
"digestRef": "127.0.0.1:5000/sub2rank/sub2rank@sha256:2fd51714ff4acafbeeff24188b35772356d726fd9da242d4505e7c19aa6ca0f1",
"manifestPath": "deploy/gitops/platform-infra/sub2rank-nc01/resources.yaml",
"automaticCredit": {
"enabled": false,
"mode": "dry-run"
}
}
@@ -0,0 +1,8 @@
{
"version": 1,
"kind": "UniDeskHostReleaseState",
"serviceRef": "services.decisionCenter",
"sourceCommit": "843c2383e931dc3ac1fcbe4ec965271866397a3e",
"digest": "sha256:aa211698c2071548e84bd1a4cfb2c0f6d27c962b34e612f8a1f21c7aba49a7d0",
"digestRef": "127.0.0.1:5000/unidesk/decision-center@sha256:aa211698c2071548e84bd1a4cfb2c0f6d27c962b34e612f8a1f21c7aba49a7d0"
}
@@ -0,0 +1,8 @@
{
"version": 1,
"kind": "UniDeskHostReleaseState",
"serviceRef": "services.todoNote",
"sourceCommit": "13ec1114a75592f9218ec95bd951a042e2e22b28",
"digest": "sha256:dfe9f9a8089611ecea1743e30f37f6e9a8f436d323c499847173fb3231e8967d",
"digestRef": "127.0.0.1:5000/unidesk/todo-note@sha256:dfe9f9a8089611ecea1743e30f37f6e9a8f436d323c499847173fb3231e8967d"
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,237 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: temporal
labels:
app.kubernetes.io/part-of: temporal
---
apiVersion: v1
kind: Service
metadata:
name: temporal-frontend
namespace: temporal
spec:
selector:
app.kubernetes.io/name: temporal
ports:
- name: grpc
port: 7233
targetPort: grpc
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal
namespace: temporal
labels:
app.kubernetes.io/name: temporal
app.kubernetes.io/part-of: temporal
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: temporal
template:
metadata:
labels:
app.kubernetes.io/name: temporal
app.kubernetes.io/part-of: temporal
unidesk.ai/source-commit: 6016400b5d4ed843f0be9cc346e9c291a93a5c07
spec:
enableServiceLinks: false
shareProcessNamespace: true
containers:
- name: temporal
image: temporalio/auto-setup:1.28.1
imagePullPolicy: IfNotPresent
ports:
- name: grpc
containerPort: 7233
env:
- name: DB
value: postgres12
- name: DB_PORT
value: "5432"
- name: POSTGRES_SEEDS
value: 10.42.0.1
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: temporal-database
key: user
- name: POSTGRES_PWD
valueFrom:
secretKeyRef:
name: temporal-database
key: password
- name: DBNAME
valueFrom:
secretKeyRef:
name: temporal-database
key: database
- name: VISIBILITY_DBNAME
valueFrom:
secretKeyRef:
name: temporal-database
key: visibilityDatabase
- name: POSTGRES_TLS_ENABLED
value: "true"
- name: POSTGRES_TLS_DISABLE_HOST_VERIFICATION
value: "true"
- name: SKIP_DB_CREATE
value: "true"
- name: DYNAMIC_CONFIG_FILE_PATH
value: /etc/temporal/config/dynamicconfig/docker.yaml
readinessProbe:
tcpSocket:
port: grpc
initialDelaySeconds: 10
periodSeconds: 5
livenessProbe:
tcpSocket:
port: grpc
initialDelaySeconds: 30
periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
name: temporal-ui
namespace: temporal
spec:
selector:
app.kubernetes.io/name: temporal-ui
ports:
- name: http
port: 8080
targetPort: auth
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal-ui
namespace: temporal
labels:
app.kubernetes.io/name: temporal-ui
app.kubernetes.io/part-of: temporal
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: temporal-ui
template:
metadata:
labels:
app.kubernetes.io/name: temporal-ui
app.kubernetes.io/part-of: temporal
unidesk.ai/source-commit: 6016400b5d4ed843f0be9cc346e9c291a93a5c07
spec:
enableServiceLinks: false
containers:
- name: temporal-ui
image: temporalio/ui:2.52.1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 8080
env:
- name: TEMPORAL_ADDRESS
value: temporal-frontend:7233
- name: TEMPORAL_CORS_ORIGINS
value: https://temporal.hwpod.com
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 5
periodSeconds: 5
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 20
periodSeconds: 10
- name: auth-proxy
image: caddy:2.10.2-alpine
imagePullPolicy: IfNotPresent
command:
- sh
- -ec
- |
password="$(cat /run/secrets/admin-password)"
hash="$(caddy hash-password --plaintext "$password")"
cat >/tmp/Caddyfile <<EOF
:8081 {
handle /healthz {
respond 200
}
handle {
basic_auth {
admin $hash
}
reverse_proxy 127.0.0.1:8080
}
}
EOF
exec caddy run --config /tmp/Caddyfile --adapter caddyfile
ports:
- name: auth
containerPort: 8081
readinessProbe:
tcpSocket:
port: auth
initialDelaySeconds: 3
periodSeconds: 5
livenessProbe:
tcpSocket:
port: auth
initialDelaySeconds: 15
periodSeconds: 10
volumeMounts:
- name: web-admin-password
mountPath: /run/secrets/admin-password
subPath: password
readOnly: true
volumes:
- name: web-admin-password
secret:
secretName: temporal-web-admin
---
apiVersion: batch/v1
kind: Job
metadata:
name: temporal-logical-namespaces
namespace: temporal
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: BeforeHookCreation,HookSucceeded
labels:
app.kubernetes.io/name: temporal-logical-namespaces
app.kubernetes.io/part-of: temporal
spec:
backoffLimit: 1
template:
metadata:
labels:
app.kubernetes.io/name: temporal-logical-namespaces
app.kubernetes.io/part-of: temporal
unidesk.ai/source-commit: 6016400b5d4ed843f0be9cc346e9c291a93a5c07
spec:
restartPolicy: Never
containers:
- name: configure
image: temporalio/auto-setup:1.28.1
imagePullPolicy: IfNotPresent
command:
- sh
- -ec
- |
attempts=60
until temporal operator cluster health --address temporal-frontend:7233 >/dev/null 2>&1; do
attempts=$((attempts - 1))
test "$attempts" -gt 0
sleep 5
done
if ! temporal operator namespace describe --address temporal-frontend:7233 --namespace unidesk >/dev/null 2>&1; then
temporal operator namespace create --address temporal-frontend:7233 --namespace unidesk --retention 7d
fi
@@ -0,0 +1,3 @@
{apiVersion: v1,kind: Service,metadata: {name: decision-center,namespace: unidesk,labels: {app.kubernetes.io/name: decision-center,app.kubernetes.io/part-of: unidesk,app.kubernetes.io/managed-by: argocd,unidesk.ai/deployment: unidesk-host,unidesk.ai/target: NC01}},spec: {type: ClusterIP,selector: {app.kubernetes.io/name: decision-center},ports: [{name: http,port: 4277,targetPort: http}]}}
---
{apiVersion: apps/v1,kind: Deployment,metadata: {name: decision-center,namespace: unidesk,labels: &labels {app.kubernetes.io/name: decision-center,app.kubernetes.io/part-of: unidesk,app.kubernetes.io/managed-by: argocd,unidesk.ai/deployment: unidesk-host,unidesk.ai/target: NC01}},spec: {replicas: 1,selector: {matchLabels: {app.kubernetes.io/name: decision-center}},template: {metadata: {labels: *labels,annotations: {unidesk.ai/source-commit: 843c2383e931dc3ac1fcbe4ec965271866397a3e,unidesk.ai/config-fingerprint: sha256:fc8916a7d214f0ef}},spec: {initContainers: [{name: wait-database,image: postgres:16-alpine,imagePullPolicy: IfNotPresent,env: [{name: DATABASE_URL,valueFrom: {secretKeyRef: {name: decision-center-runtime-secrets,key: DATABASE_URL}}}],command: [sh,"-ec","db_url=\"$(printf '%s' \"$DATABASE_URL\" | sed 's/[?&]uselibpqcompat=true//g')\"; until psql \"$db_url\" -Atqc 'SELECT 1' >/dev/null 2>&1; do sleep 2; done"]}],containers: [{name: decision-center,image: 127.0.0.1:5000/unidesk/decision-center@sha256:aa211698c2071548e84bd1a4cfb2c0f6d27c962b34e612f8a1f21c7aba49a7d0,imagePullPolicy: IfNotPresent,ports: [{name: http,containerPort: 4277}],env: [{name: HOST,value: 0.0.0.0},{name: PORT,value: "4277"},{name: DATABASE_URL,valueFrom: {secretKeyRef: {name: decision-center-runtime-secrets,key: DATABASE_URL}}},{name: DATABASE_POOL_MAX,value: "4"},{name: UNIDESK_DEPLOY_SERVICE_ID,value: decision-center},{name: UNIDESK_DEPLOY_REPO,value: https://github.com/pikasTech/unidesk},{name: UNIDESK_DEPLOY_COMMIT,value: 843c2383e931dc3ac1fcbe4ec965271866397a3e},{name: UNIDESK_DEPLOY_REQUESTED_COMMIT,value: 843c2383e931dc3ac1fcbe4ec965271866397a3e},{name: LOG_FILE,value: /var/log/unidesk/decision-center.jsonl},{name: DECISION_CENTER_STORAGE_PRIMARY,value: github-repo},{name: DECISION_CENTER_STORAGE_HEALTH_REFRESH_MS,value: "300000"},{name: DECISION_CENTER_GIT_REPO,value: pikasTech/decision-center-data},{name: DECISION_CENTER_GIT_REPO_SSH_URL,value: git@github.com:pikasTech/decision-center-data.git},{name: DECISION_CENTER_GIT_BRANCH,value: main},{name: DECISION_CENTER_GIT_BASE_PATH,value: data},{name: DECISION_CENTER_GIT_WORKTREE,value: /var/lib/unidesk/decision-center/repo},{name: DECISION_CENTER_GIT_AUTHOR_NAME,value: UniDesk Decision Center},{name: DECISION_CENTER_GIT_AUTHOR_EMAIL,value: decision-center@unidesk.local},{name: DECISION_CENTER_GIT_COMMIT_PREFIX,value: "decision-center:"},{name: GIT_SSH_COMMAND,value: ssh -i /var/lib/unidesk/decision-center/ssh/ssh-privatekey -o UserKnownHostsFile=/var/lib/unidesk/decision-center/ssh/known_hosts -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes}],volumeMounts: [{name: logs,mountPath: /var/log/unidesk},{name: github-ssh,mountPath: /var/lib/unidesk/decision-center/ssh,readOnly: true}],readinessProbe: {httpGet: {path: /health,port: http},periodSeconds: 5,timeoutSeconds: 3,failureThreshold: 18},livenessProbe: {httpGet: {path: /live,port: http},periodSeconds: 10,timeoutSeconds: 3,failureThreshold: 6},startupProbe: {httpGet: {path: /live,port: http},periodSeconds: 5,timeoutSeconds: 3,failureThreshold: 30},resources: {requests: {cpu: 50m,memory: 96Mi},limits: {memory: 512Mi}}}],volumes: [{name: logs,emptyDir: {}},{name: github-ssh,secret: {secretName: decision-center-github-ssh,defaultMode: 256}}]}}}}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
{apiVersion: argoproj.io/v1alpha1,kind: Application,metadata: {name: platform-infra-gitea-nc01,namespace: argocd,labels: {app.kubernetes.io/managed-by: unidesk,app.kubernetes.io/part-of: platform-infra}},spec: {project: default,source: {repoURL: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-unidesk.git,targetRevision: unidesk-host-gitops,path: deploy/gitops/platform-infra/gitea-nc01},destination: {server: https://kubernetes.default.svc,namespace: devops-infra},syncPolicy: {automated: {prune: true,selfHeal: true},syncOptions: [CreateNamespace=true]}}}
@@ -0,0 +1,3 @@
{apiVersion: v1,kind: Service,metadata: {name: todo-note,namespace: unidesk,labels: {app.kubernetes.io/name: todo-note,app.kubernetes.io/part-of: unidesk,app.kubernetes.io/managed-by: argocd,unidesk.ai/deployment: unidesk-host,unidesk.ai/target: NC01}},spec: {type: ClusterIP,selector: {app.kubernetes.io/name: todo-note},ports: [{name: http,port: 4288,targetPort: http}]}}
---
{apiVersion: apps/v1,kind: Deployment,metadata: {name: todo-note,namespace: unidesk,labels: &labels {app.kubernetes.io/name: todo-note,app.kubernetes.io/part-of: unidesk,app.kubernetes.io/managed-by: argocd,unidesk.ai/deployment: unidesk-host,unidesk.ai/target: NC01}},spec: {replicas: 1,selector: {matchLabels: {app.kubernetes.io/name: todo-note}},template: {metadata: {labels: *labels,annotations: {unidesk.ai/source-commit: 13ec1114a75592f9218ec95bd951a042e2e22b28,unidesk.ai/config-fingerprint: sha256:276b660c8a8934ec}},spec: {initContainers: [{name: wait-database,image: postgres:16-alpine,imagePullPolicy: IfNotPresent,env: [{name: DATABASE_URL,valueFrom: {secretKeyRef: {name: decision-center-runtime-secrets,key: DATABASE_URL}}}],command: [sh,"-ec","db_url=\"$(printf '%s' \"$DATABASE_URL\" | sed 's/[?&]uselibpqcompat=true//g')\"; until psql \"$db_url\" -Atqc 'SELECT 1' >/dev/null 2>&1; do sleep 2; done"]}],containers: [{name: todo-note,image: 127.0.0.1:5000/unidesk/todo-note@sha256:dfe9f9a8089611ecea1743e30f37f6e9a8f436d323c499847173fb3231e8967d,imagePullPolicy: IfNotPresent,ports: [{name: http,containerPort: 4288}],env: [{name: HOST,value: 0.0.0.0},{name: PORT,value: "4288"},{name: DATABASE_URL,valueFrom: {secretKeyRef: {name: decision-center-runtime-secrets,key: DATABASE_URL}}},{name: DATABASE_POOL_MAX,value: "4"},{name: UNIDESK_DEPLOY_SERVICE_ID,value: todo-note},{name: UNIDESK_DEPLOY_REPO,value: https://github.com/pikasTech/unidesk},{name: UNIDESK_DEPLOY_COMMIT,value: 13ec1114a75592f9218ec95bd951a042e2e22b28},{name: UNIDESK_DEPLOY_REQUESTED_COMMIT,value: 13ec1114a75592f9218ec95bd951a042e2e22b28},{name: LOG_FILE,value: /var/log/unidesk/todo-note.jsonl},{name: TODO_NOTE_STORAGE_PRIMARY,value: github-repo},{name: TODO_NOTE_REMINDER_CLAUDEQQ_ENABLED,value: "true"},{name: TODO_NOTE_REMINDER_CLAUDEQQ_BASE_URL,value: http://backend-core:8080/api/microservices/claudeqq/proxy},{name: TODO_NOTE_REMINDER_CLAUDEQQ_TARGET_TYPE,value: private},{name: TODO_NOTE_REMINDER_CLAUDEQQ_USER_ID,value: "645275593"},{name: TODO_NOTE_REMINDER_CLAUDEQQ_GROUP_ID,value: ""},{name: TODO_NOTE_REMINDER_LEAD_MINUTES,value: "10"},{name: TODO_NOTE_REMINDER_SCAN_INTERVAL_MS,value: "30000"},{name: TODO_NOTE_REMINDER_CLAUDEQQ_TIMEOUT_MS,value: "15000"},{name: TODO_NOTE_REMINDER_CLAUDEQQ_SEND_ATTEMPTS,value: "3"},{name: TODO_NOTE_GIT_REPO,value: pikasTech/decision-center-data},{name: TODO_NOTE_GIT_REPO_SSH_URL,value: git@github.com:pikasTech/decision-center-data.git},{name: TODO_NOTE_GIT_BRANCH,value: main},{name: TODO_NOTE_GIT_BASE_PATH,value: todo-note},{name: TODO_NOTE_GIT_WORKTREE,value: /var/lib/unidesk/todo-note/repo},{name: TODO_NOTE_GIT_AUTHOR_NAME,value: UniDesk Todo Note},{name: TODO_NOTE_GIT_AUTHOR_EMAIL,value: todo-note@unidesk.local},{name: TODO_NOTE_GIT_COMMIT_PREFIX,value: "todo-note:"},{name: GIT_SSH_COMMAND,value: ssh -i /var/lib/unidesk/todo-note/ssh/ssh-privatekey -o UserKnownHostsFile=/var/lib/unidesk/todo-note/ssh/known_hosts -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes}],volumeMounts: [{name: logs,mountPath: /var/log/unidesk},{name: github-ssh,mountPath: /var/lib/unidesk/todo-note/ssh,readOnly: true}],readinessProbe: {httpGet: {path: /health,port: http},periodSeconds: 5,timeoutSeconds: 3,failureThreshold: 18},livenessProbe: {httpGet: {path: /live,port: http},periodSeconds: 10,timeoutSeconds: 3,failureThreshold: 6},startupProbe: {httpGet: {path: /live,port: http},periodSeconds: 5,timeoutSeconds: 3,failureThreshold: 30},resources: {requests: {cpu: 50m,memory: 96Mi},limits: {memory: 768Mi}}}],volumes: [{name: logs,emptyDir: {}},{name: github-ssh,secret: {secretName: decision-center-github-ssh,defaultMode: 256}}]}}}}