feat: split backend-core artifact ci cd
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user