11 Commits

Author SHA1 Message Date
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
10 changed files with 5498 additions and 237 deletions
@@ -0,0 +1,8 @@
{
"version": 1,
"kind": "PlatformInfraGiteaGitOpsState",
"targetId": "NC01",
"sourceCommit": "843c2383e931dc3ac1fcbe4ec965271866397a3e",
"desiredManifestSha256": "cb6998e2c6d69e4664f5a49547ebbebcb793939532ab67918a58ce79356b5fd6",
"bootstrapApplicationSha256": "ff7155b4fca474025c29099a305fca2fd53c82d8092e3e3954177f99e1875fc7"
}
@@ -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
@@ -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}}]}}}}