feat: split backend-core artifact ci cd

This commit is contained in:
Codex
2026-05-18 15:54:01 +00:00
parent d21453cf46
commit 803a695d0a
15 changed files with 713 additions and 56 deletions
@@ -258,6 +258,170 @@ spec:
---
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: unidesk-backend-core-artifact-publish
namespace: unidesk-ci
labels:
app.kubernetes.io/name: unidesk-ci
app.kubernetes.io/component: backend-core-artifact
spec:
params:
- name: repo-url
type: string
- name: revision
type: string
- name: app-image
type: string
default: unidesk-code-queue:dev
- name: registry
type: string
default: 127.0.0.1:5000
workspaces:
- name: source
volumes:
- name: docker-sock
hostPath:
path: /var/run/docker.sock
type: Socket
steps:
- name: clone
image: alpine/git:2.45.2
env:
- name: HTTP_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: HTTPS_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: ALL_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: NO_PROXY
value: "localhost,127.0.0.1,::1,host.docker.internal,d601-provider-egress-proxy,d601-provider-egress-proxy.unidesk,d601-provider-egress-proxy.unidesk.svc,d601-provider-egress-proxy.unidesk.svc.cluster.local"
- name: http_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: https_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: all_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: no_proxy
value: "localhost,127.0.0.1,::1,host.docker.internal,d601-provider-egress-proxy,d601-provider-egress-proxy.unidesk,d601-provider-egress-proxy.unidesk.svc,d601-provider-egress-proxy.unidesk.svc.cluster.local"
script: |
#!/bin/sh
set -eu
case "$(params.revision)" in
[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]) ;;
*) echo "backend_core_artifact_revision_must_be_full_sha=$(params.revision)" >&2; exit 2 ;;
esac
rm -rf "$(workspaces.source.path)/backend-core-artifact-repo"
git clone --filter=blob:none "$(params.repo-url)" "$(workspaces.source.path)/backend-core-artifact-repo"
cd "$(workspaces.source.path)/backend-core-artifact-repo"
git fetch --depth=1 origin "$(params.revision)"
git checkout --detach FETCH_HEAD
resolved="$(git rev-parse HEAD)"
test "$resolved" = "$(params.revision)"
git cat-file -e "$resolved:src/components/backend-core/Dockerfile"
git cat-file -e "$resolved:src/components/backend-core/src"
git rev-parse HEAD | tee "$(workspaces.source.path)/backend-core-artifact-commit.txt"
- name: build-and-push
image: "$(params.app-image)"
imagePullPolicy: Never
workingDir: "$(workspaces.source.path)/backend-core-artifact-repo"
env:
- name: DOCKER_HOST
value: unix:///var/run/docker.sock
- name: HTTP_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: HTTPS_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: ALL_PROXY
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: NO_PROXY
value: "localhost,127.0.0.1,::1,host.docker.internal,d601-provider-egress-proxy,d601-provider-egress-proxy.unidesk,d601-provider-egress-proxy.unidesk.svc,d601-provider-egress-proxy.unidesk.svc.cluster.local"
- name: http_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: https_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: all_proxy
value: "http://d601-provider-egress-proxy.unidesk.svc.cluster.local:18789"
- name: no_proxy
value: "localhost,127.0.0.1,::1,host.docker.internal,d601-provider-egress-proxy,d601-provider-egress-proxy.unidesk,d601-provider-egress-proxy.unidesk.svc,d601-provider-egress-proxy.unidesk.svc.cluster.local"
volumeMounts:
- name: docker-sock
mountPath: /var/run/docker.sock
script: |
#!/usr/bin/env bash
set -euo pipefail
commit="$(cat "$(workspaces.source.path)/backend-core-artifact-commit.txt")"
registry="$(params.registry)"
local_image="unidesk/backend-core:$commit"
registry_image="$registry/unidesk/backend-core:$commit"
command -v docker
docker buildx version >/dev/null 2>&1 || docker buildx inspect default >/dev/null 2>&1
docker run --rm --network host rancher/mirrored-library-busybox:1.36.1 wget -q -O- "http://$registry/v2/" >/dev/null
docker buildx build \
--builder default \
--load \
--network host \
--progress=plain \
--build-arg HTTP_PROXY=http://127.0.0.1:18789 \
--build-arg HTTPS_PROXY=http://127.0.0.1:18789 \
--build-arg ALL_PROXY=http://127.0.0.1:18789 \
--build-arg NO_PROXY=localhost,127.0.0.1,::1,host.docker.internal \
--label "unidesk.ai/service-id=backend-core" \
--label "unidesk.ai/source-repo=$(params.repo-url)" \
--label "unidesk.ai/source-commit=$commit" \
--label "unidesk.ai/dockerfile=src/components/backend-core/Dockerfile" \
-t "$local_image" \
-t "$registry_image" \
-f src/components/backend-core/Dockerfile \
.
actual_commit="$(docker image inspect "$registry_image" --format '{{ index .Config.Labels "unidesk.ai/source-commit" }}')"
test "$actual_commit" = "$commit"
docker push "$registry_image"
repo_digests="$(docker image inspect "$registry_image" --format '{{json .RepoDigests}}')"
printf 'backend_core_artifact_image=%s\nbackend_core_artifact_repo_digests=%s\n' "$registry_image" "$repo_digests"
---
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: unidesk-backend-core-artifact-publish
namespace: unidesk-ci
labels:
app.kubernetes.io/name: unidesk-ci
app.kubernetes.io/component: backend-core-artifact
app.kubernetes.io/part-of: unidesk
spec:
params:
- name: repo-url
type: string
default: https://github.com/pikasTech/unidesk
- name: revision
type: string
- name: app-image
type: string
default: unidesk-code-queue:dev
- name: registry
type: string
default: 127.0.0.1:5000
workspaces:
- name: shared-workspace
tasks:
- name: publish-backend-core-artifact
taskRef:
name: unidesk-backend-core-artifact-publish
params:
- name: repo-url
value: "$(params.repo-url)"
- name: revision
value: "$(params.revision)"
- name: app-image
value: "$(params.app-image)"
- name: registry
value: "$(params.registry)"
workspaces:
- name: source
workspace: shared-workspace
---
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: unidesk-code-queue-read-perf
namespace: unidesk-ci