Files
pikasTech-unidesk/config/platform-infra/gitea.yaml
T

443 lines
14 KiB
YAML

version: 1
kind: platform-infra-gitea
metadata:
id: gitea-internal-mirror
owner: unidesk
spec: GH-1548/GH-1550/GH-1560
relatedIssues:
- 1548
- 1549
- 1550
- 1557
- 1560
- 1760
- 1768
defaults:
targetId: NC01
migration:
role: gitea-pac-cicd-source-authority
replaces: branch-follower-self-maintained-branch-observer
parentConfigRef: config/cicd-gitea-actions-poc.yaml#spec.sourceAuthority.giteaMirror
archivedPocRef: config/cicd-gitea-actions-poc.yaml
activePacConfigRef: config/platform-infra/pipelines-as-code.yaml
envReusePolicy: preserve-existing-runtime-env-reuse
buildPlane: controlled-docker-or-buildkit-outside-runtime
runtimePlane: k3s-gitea-service-zero-docker
activeTriggerPath: gitea-webhook-to-pipelines-as-code-to-tekton-to-argo
sourceAuthority:
enabled: true
stage: gitea-controlled-mirror-source-authority
statusAuthority: gitea-repository-refs-plus-snapshot-ref
firstCiConsumer: agentrun-jd01-v02
credentials:
sourceRoot: /root/.unidesk/.env
admin:
sourceRef: gitea.auth
format: line-pair
usernameLine: 1
passwordLine: 2
requiredFor:
- repo-bootstrap
- mirror-sync
- snapshot-create
github:
transport: https-token
sourceRef: gh_token.txt
sourceKey: GH_TOKEN
format: raw-token
requiredFor:
- upstream-mirror
- mirror-sync
- managed-repository-fetch
gitFetchCredential:
apiVersion: unidesk.ai/v1
kind: GitFetchCredential
authMode: github-https-token
host: github.com
secretRef:
namespace: devops-infra
name: gitea-github-sync-secrets
key: github-token
githubProxy:
enabled: true
url: http://10.42.0.1:10808
noProxy:
- 127.0.0.1
- localhost
- .svc
- .svc.cluster.local
webhookSync:
enabled: true
direction: github-to-gitea
# GitHub Cloud 要求 10 秒内返回 2xx;保留公网与 FRP 传输余量。
# https://docs.github.com/en/webhooks/using-webhooks/handling-failed-webhook-deliveries
responseBudgetMs: 6500
publicPath: /_unidesk/github-to-gitea
events:
- push
ingressRetry:
# PK01 host reconciliation 尚未纳入 PR-merge 自动控制面;关闭后不得声称已应用 Caddy retry。
# https://github.com/pikasTech/unidesk/issues/1768
enabled: false
maxBodyBytes: 1048576
maxRetries: 1
tryIntervalMs: 250
dialTimeoutMs: 500
writeTimeoutMs: 500
retryStatusCodes:
- 502
- 503
- 504
secret:
sourceRef: gitea.github-webhook.env
sourceKey: GITHUB_WEBHOOK_SECRET
createIfMissing: true
hookReconcile:
enabled: true
# 只有 owning target 写 GitHub hook topology;其他 target 仅接收与观察。
ownerTargetId: NC01
intervalMs: 60000
requestTimeoutMs: 15000
listMaxPages: 10
failedDeliveryRecovery:
enabled: true
# 恢复只处理 owner target 的 exact hook;其他 target 必须由其本地 authority 收口。
targetId: NC01
statePath: /var/lib/gitea-github-sync/hook-recovery/ledger.json
# GitHub REST redelivery 只支持最近 3 天。
lookbackSeconds: 259200
historyPerHook: 50
maxRedeliveriesPerCycle: 4
cooldownMs: 300000
maxAttemptsPerDelivery: 3
retryStatusCodes:
- 502
- 503
- 504
stateRetentionSeconds: 1209600
bridge:
deploymentName: gitea-github-sync
serviceName: gitea-github-sync
secretName: gitea-github-sync-secrets
configMapName: gitea-github-sync-config
image: 127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1
replicas: 1
httpPort: 8080
serviceAccountName: gitea-github-sync
shutdownGraceMs: 5000
candidateGate:
enabled: true
configMapName: gitea-github-sync-candidate
jobName: gitea-github-sync-candidate
activeDeadlineSeconds: 45
ttlSecondsAfterFinished: 300
healthTimeoutMs: 15000
pollIntervalMs: 250
inbox:
claimName: gitea-github-sync-inbox
path: /var/lib/gitea-github-sync
storageSize: 1Gi
maxBytes: 805306368
committedRetentionSeconds: 604800
cleanupIntervalMs: 60000
retry:
maxAttempts: 3
initialDelayMs: 1000
maxDelayMs: 30000
terminalRetryDelayMs: 300000
attemptTimeoutMs: 120000
scanIntervalMs: 1000
gitOpsDelivery:
enabled: true
targetId: NC01
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
writeUrl: http://git-mirror-write.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
branch: unidesk-host-gitops
sourceSnapshotPrefix: refs/unidesk/snapshots/gitea-actions/unidesk-master-nc01
desiredManifestPath: deploy/gitops/platform-infra/gitea-nc01/resources.yaml
bootstrapApplicationPath: deploy/gitops/unidesk-host/platform-infra-gitea-nc01-application.yaml
releaseStatePath: deploy/gitops-state/platform-infra/gitea-nc01.json
application:
name: platform-infra-gitea-nc01
namespace: argocd
project: default
repoUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
targetRevision: unidesk-host-gitops
path: deploy/gitops/platform-infra/gitea-nc01
destinationNamespace: devops-infra
automated: true
author:
name: UniDesk Platform Infra CI
email: platform-infra-ci@unidesk.local
cas:
maxAttempts: 3
frpc:
proxyName: platform-infra-gitea-jd01-github-webhook
remotePort: 22081
responsibilities:
- name: source-read
current: legacy-git-mirror
target: gitea
disposition: replaced-by-gitea
- name: branch-observation
current: branch-follower
target: gitea-mirror
disposition: replaced-by-gitea
- name: immutable-snapshot-ref
current: legacy-git-mirror-cache
target: gitea-ref
disposition: replaced-by-gitea
- name: gitops-flush
current: legacy-git-mirror
target: github-direct-or-gitea-writeback
disposition: retained-for-gitops-flush
- name: legacy-status
current: branch-follower-status
target: gitea-mirror-status
disposition: migration-readonly
repositories:
- key: agentrun-jd01-v02
targetId: JD01
upstream:
repository: pikasTech/agentrun
cloneUrl: https://github.com/pikasTech/agentrun.git
branch: v0.2
gitea:
owner: mirrors
name: pikasTech-agentrun
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
gitops:
branch: jd01-v0.2-gitops
flushDisposition: retained-for-gitops-flush
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/agentrun-v0.2
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/agentrun.git
configRef: config/cicd-branch-followers.yaml#followers.agentrun-jd01-v02.nativeStatus.source.gitMirrorReadUrl
disposition: replaced-by-gitea
- key: agentrun-nc01-v02
targetId: NC01
upstream:
repository: pikasTech/agentrun
cloneUrl: https://github.com/pikasTech/agentrun.git
branch: v0.2
gitea:
owner: mirrors
name: pikasTech-agentrun
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
gitops:
branch: nc01-v0.2-gitops
flushDisposition: retained-for-gitops-flush
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/agentrun-v0.2
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/agentrun.git
configRef: config/cicd-branch-followers.yaml#followers.agentrun-nc01-v02.nativeStatus.source.gitMirrorReadUrl
disposition: replaced-by-gitea
- key: unidesk-master
targetId: JD01
upstream:
repository: pikasTech/unidesk
cloneUrl: https://github.com/pikasTech/unidesk.git
branch: master
gitea:
owner: mirrors
name: pikasTech-unidesk
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-unidesk.git
gitops:
branch: master
flushDisposition: not-a-gitops-branch
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/unidesk-master
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
configRef: config/cicd-branch-followers.yaml#controller.source.gitMirrorReadUrl
disposition: replaced-by-gitea
- key: unidesk-master-nc01
targetId: NC01
upstream:
repository: pikasTech/unidesk
cloneUrl: https://github.com/pikasTech/unidesk.git
branch: master
gitea:
owner: mirrors
name: pikasTech-unidesk
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-unidesk.git
gitops:
branch: master
flushDisposition: not-a-gitops-branch
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/unidesk-master-nc01
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/unidesk.git
configRef: config/cicd-branch-followers.yaml#controller.source.gitMirrorReadUrl
disposition: replaced-by-gitea
- key: hwlab-jd01-v03
targetId: JD01
upstream:
repository: pikasTech/HWLAB
cloneUrl: https://github.com/pikasTech/HWLAB.git
branch: v0.3
gitea:
owner: mirrors
name: pikasTech-HWLAB
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git
gitops:
branch: v0.3-gitops
flushDisposition: retained-for-gitops-flush
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/hwlab-node-runtime/v0.3
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git
configRef: config/hwlab-node-lanes.yaml#lanes.v03.targets.JD01.git.readUrl
disposition: replaced-by-gitea
- key: hwlab-nc01-v03
targetId: NC01
upstream:
repository: pikasTech/HWLAB
cloneUrl: https://github.com/pikasTech/HWLAB.git
branch: v0.3
gitea:
owner: mirrors
name: pikasTech-HWLAB
mirrorMode: controlled-push
publicRead: true
readUrl: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-HWLAB.git
gitops:
branch: v0.3-gitops
flushDisposition: retained-for-gitops-flush
snapshot:
naming: historical-gitea-actions-prefix-retained-for-existing-refs
prefix: refs/unidesk/snapshots/gitea-actions/hwlab-node-runtime/v0.3
legacyGitMirror:
readUrl: http://git-mirror-http.devops-infra.svc.cluster.local:8080/pikasTech/HWLAB.git
configRef: config/hwlab-node-lanes.yaml#lanes.v03.targets.NC01.git.readUrl
disposition: replaced-by-gitea
targets:
- id: JD01
route: JD01:k3s
namespace: devops-infra
role: active-source-authority
enabled: true
createNamespace: true
storageClassName: local-path
publicExposure:
enabled: false
- id: NC01
route: NC01:k3s
namespace: devops-infra
role: active-source-authority
enabled: true
createNamespace: true
storageClassName: local-path
publicExposure:
enabled: true
webhookSync:
publicPath: /_unidesk/github-to-gitea/nc01
frpc:
proxyName: platform-infra-gitea-nc01-github-webhook
remotePort: 22086
app:
name: gitea
statefulSetName: gitea
serviceName: gitea-http
replicas: 1
image:
repository: docker.gitea.com/gitea
tag: 1.26.4-rootless
pullPolicy: IfNotPresent
service:
type: ClusterIP
httpPort: 3000
sshPort: 2222
server:
domain: gitea.pikapython.com
rootUrl: https://gitea.pikapython.com/
sshDomain: gitea-http.devops-infra.svc.cluster.local
protocol: http
startSshServer: true
publicExposure:
enabled: true
publicBaseUrl: https://gitea.pikapython.com
secretRoot: /root/.unidesk/.state/secrets
dns:
hostname: gitea.pikapython.com
expectedA: 82.156.23.220
resolvers: [1.1.1.1, 8.8.8.8, 223.5.5.5, 114.114.114.114]
frpc:
deploymentName: gitea-frpc
secretName: gitea-frpc-secrets
secretKey: frpc.toml
image: fatedier/frpc:v0.68.1
serverAddr: 82.156.23.220
serverPort: 22000
proxyName: platform-infra-gitea-nc01-web
remotePort: 22080
localIP: gitea-http.devops-infra.svc.cluster.local
localPort: 3000
tokenSourceRef: platform-infra/pk01-frp.env
tokenSourceKey: FRP_TOKEN
pk01:
route: PK01
caddyConfigPath: /etc/caddy/Caddyfile
caddyServiceName: caddy
responseHeaderTimeoutSeconds: 600
database:
type: sqlite3
path: /var/lib/gitea/gitea.db
actions:
enabled: true
webhook:
allowedHostList: private,loopback
registration:
disabled: true
storage:
data:
size: 8Gi
mountPath: /var/lib/gitea
config:
size: 1Gi
mountPath: /etc/gitea
securityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: "1"
memory: 1Gi
probes:
healthPath: /api/healthz
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 12
validation:
waitTimeoutSeconds: 55
healthPath: /api/healthz