331 lines
99 KiB
YAML
331 lines
99 KiB
YAML
apiVersion: tekton.dev/v1
|
|
kind: PipelineRun
|
|
metadata:
|
|
name: "agentrun-nc01-v02-ci-{{ revision }}"
|
|
namespace: agentrun-ci
|
|
annotations:
|
|
pipelinesascode.tekton.dev/on-event: "[push]"
|
|
pipelinesascode.tekton.dev/on-target-branch: "[v0.2]"
|
|
pipelinesascode.tekton.dev/on-cel-expression: "event == 'push' && target_branch == 'v0.2' && node == 'NC01'"
|
|
pipelinesascode.tekton.dev/max-keep-runs: "8"
|
|
unidesk.ai/pac-admission-provenance: admission-pac-v2:agentrun-nc01-v02
|
|
unidesk.ai/owning-config-ref: "config/agentrun.yaml#controlPlane.lanes.nc01-v02"
|
|
unidesk.ai/effective-config-sha256: sha256:d72aaa7786f1690e39213a563e453a45deb3601043f61a29e24fc9a7c946c09c
|
|
unidesk.ai/source-artifact-renderer: agentrun-control-plane
|
|
unidesk.ai/source-artifact-mode: embedded-pipeline-spec
|
|
labels:
|
|
app.kubernetes.io/part-of: agentrun
|
|
agentrun.pikastech.local/lane: v0.2
|
|
agentrun.pikastech.local/node: NC01
|
|
agentrun.pikastech.local/source-commit: "{{ revision }}"
|
|
agentrun.pikastech.local/trigger: pipelines-as-code
|
|
spec:
|
|
pipelineSpec:
|
|
params:
|
|
- name: git-url
|
|
type: string
|
|
default: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
|
|
- name: git-read-url
|
|
type: string
|
|
default: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
|
|
- name: git-write-url
|
|
type: string
|
|
default: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
|
|
- name: source-branch
|
|
type: string
|
|
default: v0.2
|
|
- name: gitops-branch
|
|
type: string
|
|
default: nc01-v0.2-gitops
|
|
- name: revision
|
|
type: string
|
|
- name: source-stage-ref
|
|
type: string
|
|
- name: registry-prefix
|
|
type: string
|
|
default: 127.0.0.1:5000/agentrun
|
|
- name: tools-image
|
|
type: string
|
|
default: 127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1
|
|
- name: buildkit-image
|
|
type: string
|
|
default: 127.0.0.1:5000/hwlab/buildkit:rootless
|
|
- name: containerfile
|
|
type: string
|
|
default: deploy/container/Containerfile
|
|
- name: context-dir
|
|
type: string
|
|
default: "."
|
|
- name: image-repository
|
|
type: string
|
|
default: 127.0.0.1:5000/agentrun/agentrun-mgr-env
|
|
- name: build-network
|
|
type: string
|
|
default: host
|
|
- name: build-args-json
|
|
type: string
|
|
default: "[\"BUN_IMAGE=oven/bun:1-alpine\"]"
|
|
- name: build-http-proxy
|
|
type: string
|
|
default: http://127.0.0.1:10808
|
|
- name: build-https-proxy
|
|
type: string
|
|
default: http://127.0.0.1:10808
|
|
- name: build-no-proxy
|
|
type: string
|
|
default: "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,hyueapi.com,.hyueapi.com"
|
|
- name: container-http-proxy
|
|
type: string
|
|
default: http://127.0.0.1:10808
|
|
- name: container-https-proxy
|
|
type: string
|
|
default: http://127.0.0.1:10808
|
|
- name: container-no-proxy
|
|
type: string
|
|
default: "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,hyueapi.com,.hyueapi.com"
|
|
- name: env-identity-files-json
|
|
type: string
|
|
default: "[\"deploy/container/Containerfile\",\"deploy/runtime/boot/agentrun-boot.sh\",\"deploy/runtime/boot/agentrun-mgr.sh\",\"deploy/runtime/boot/agentrun-runner.sh\",\"src\",\"scripts\",\"package.json\",\"bun.lock\",\"tsconfig.json\"]"
|
|
- name: gitops-root
|
|
type: string
|
|
default: deploy/gitops/node/nc01
|
|
- name: artifact-catalog
|
|
type: string
|
|
default: deploy/artifact-catalog.nc01-v02.json
|
|
workspaces:
|
|
- name: source
|
|
tasks:
|
|
- name: plan-artifacts
|
|
workspaces:
|
|
- name: source
|
|
workspace: source
|
|
taskSpec:
|
|
params:
|
|
¶ms
|
|
- name: git-read-url
|
|
- name: git-write-url
|
|
- name: source-branch
|
|
- name: gitops-branch
|
|
- name: revision
|
|
- name: source-stage-ref
|
|
- name: registry-prefix
|
|
- name: tools-image
|
|
- name: buildkit-image
|
|
- name: containerfile
|
|
- name: context-dir
|
|
- name: image-repository
|
|
- name: build-network
|
|
- name: build-args-json
|
|
- name: build-http-proxy
|
|
- name: build-https-proxy
|
|
- name: build-no-proxy
|
|
- name: container-http-proxy
|
|
- name: container-https-proxy
|
|
- name: container-no-proxy
|
|
- name: env-identity-files-json
|
|
- name: gitops-root
|
|
- name: artifact-catalog
|
|
workspaces:
|
|
- name: source
|
|
steps:
|
|
- name: source-checkout
|
|
image: $(params.tools-image)
|
|
script: "#!/bin/sh\nset -eu\nroot=\"$(workspaces.source.path)\"\nrm -rf \"$root/repo\"\ngit clone --no-checkout \"$(params.git-read-url)\" \"$root/repo\"\ncd \"$root/repo\"\ngit fetch origin \"+$(params.source-stage-ref):refs/remotes/origin/unidesk-source-snapshot\"\ngit checkout --detach \"$(params.revision)\"\nactual=$(git rev-parse HEAD)\ntest \"$actual\" = \"$(params.revision)\"\nENV_IDENTITY_FILES='$(params.env-identity-files-json)' BUILD_ARGS_JSON='$(params.build-args-json)' CONTAINER_HTTP_PROXY='$(params.container-http-proxy)' CONTAINER_HTTPS_PROXY='$(params.container-https-proxy)' CONTAINER_NO_PROXY='$(params.container-no-proxy)' node <<'NODE' > \"$root/env-identity\"\nconst { createHash } = require('node:crypto');\nconst { existsSync, lstatSync, readdirSync, readFileSync } = require('node:fs');\nconst { join } = require('node:path');\nconst files = JSON.parse(process.env.ENV_IDENTITY_FILES || '[]');\nconst buildArgs = JSON.parse(process.env.BUILD_ARGS_JSON || '[]');\nconst proxy = [`HTTP_PROXY=${process.env.CONTAINER_HTTP_PROXY || ''}`, `HTTPS_PROXY=${process.env.CONTAINER_HTTPS_PROXY || ''}`, `NO_PROXY=${process.env.CONTAINER_NO_PROXY || ''}`];\nconst skip = new Set(['.git', '.worktree', '.state', 'node_modules', 'coverage', 'tmp', '.tmp']);\nconst hash = createHash('sha256');\nfunction collect(input) {\n if (!existsSync(input)) return [{ path: input, missing: true }];\n const stat = lstatSync(input);\n if (stat.isFile()) return [{ path: input, missing: false }];\n if (!stat.isDirectory()) return [{ path: input, missing: true }];\n const out = [];\n const stack = [input];\n while (stack.length) {\n const dir = stack.pop();\n for (const entry of readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {\n if (entry.isDirectory() && skip.has(entry.name)) continue;\n const child = join(dir, entry.name);\n if (entry.isDirectory()) stack.push(child);\n else if (entry.isFile()) out.push({ path: child, missing: false });\n }\n }\n return out.sort((a, b) => a.path.localeCompare(b.path));\n}\nfor (const item of buildArgs) { hash.update('build-arg\\0'); hash.update(item); hash.update('\\0'); }\nfor (const item of proxy) { hash.update('build-container-proxy\\0'); hash.update(item); hash.update('\\0'); }\nfor (const file of files) for (const entry of collect(file)) { hash.update(entry.path); hash.update('\\0'); if (!entry.missing) hash.update(readFileSync(entry.path)); hash.update('\\0'); }\nprocess.stdout.write(hash.digest('hex').slice(0, 24));\nNODE\nBUILD_ARGS='$(params.build-args-json)' node <<'NODE' > \"$root/build-args.txt\"\nconst values = JSON.parse(process.env.BUILD_ARGS || '[]');\nfor (const value of values) console.log(`build-arg:${value}`);\nNODE\nchmod -R a+rwX \"$root\"\nenv_identity=$(cat \"$root/env-identity\")\nprintf '{\"ok\":true,\"phase\":\"source-checkout\",\"sourceCommit\":\"%s\",\"sourceStageRef\":\"%s\",\"envIdentity\":\"%s\",\"valuesPrinted\":false}\\n' \"$(params.revision)\" \"$(params.source-stage-ref)\" \"$env_identity\""
|
|
- name: probe-env-image
|
|
image: $(params.tools-image)
|
|
script: "#!/bin/sh\nset -eu\nroot=\"$(workspaces.source.path)\"\nenv_identity=$(cat \"$root/env-identity\")\nimage_repository='$(params.image-repository)'\nmanifest_accept='application/vnd.oci.image.index.v1+json, application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json'\nrepo_path=${image_repository#127.0.0.1:5000/}\nheaders=$(mktemp)\ndigest=''\nif curl -fsSI -H \"Accept: $manifest_accept\" \"http://127.0.0.1:5000/v2/$repo_path/manifests/$env_identity\" >\"$headers\"; then\n digest=$(awk -F': ' 'tolower($1)==\"docker-content-digest\"{print $2}' \"$headers\" | tr -d '\\r' | head -n 1)\nfi\nrm -f \"$headers\"\nif [ -n \"$digest\" ]; then\n image=\"$image_repository:$env_identity\"\n printf '{\"ok\":true,\"status\":\"reused\",\"sourceCommit\":\"%s\",\"envIdentity\":\"%s\",\"image\":\"%s\",\"digest\":\"%s\",\"repositoryDigest\":\"%s@%s\",\"valuesPrinted\":false}\\n' \"$(params.revision)\" \"$env_identity\" \"$image\" \"$digest\" \"$image_repository\" \"$digest\" > \"$root/build-result.json\"\n touch \"$root/skip-build\"\nelse\n printf '{\"ok\":false,\"status\":\"cache-miss\",\"sourceCommit\":\"%s\",\"envIdentity\":\"%s\",\"valuesPrinted\":false}\\n' \"$(params.revision)\" \"$env_identity\" > \"$root/build-result.json\"\nfi\nif [ -f \"$root/skip-build\" ]; then build_services='[]'; reused_services='[\"agentrun-mgr\"]'; else build_services='[\"agentrun-mgr\"]'; reused_services='[]'; fi\nprintf '{\"event\":\"pac-delivery-plan\",\"schemaVersion\":\"v1\",\"sourceCommitId\":\"%s\",\"affectedServices\":[\"agentrun-mgr\"],\"rolloutServices\":[\"agentrun-mgr\"],\"buildServices\":%s,\"reusedServices\":%s,\"valuesPrinted\":false}\\n' \"$(params.revision)\" \"$build_services\" \"$reused_services\"\nchmod a+rw \"$root/build-result.json\"\ncat \"$root/build-result.json\""
|
|
params:
|
|
¶ms1
|
|
- name: git-read-url
|
|
value: $(params.git-read-url)
|
|
- name: git-write-url
|
|
value: $(params.git-write-url)
|
|
- name: source-branch
|
|
value: $(params.source-branch)
|
|
- name: gitops-branch
|
|
value: $(params.gitops-branch)
|
|
- name: revision
|
|
value: $(params.revision)
|
|
- name: source-stage-ref
|
|
value: $(params.source-stage-ref)
|
|
- name: registry-prefix
|
|
value: $(params.registry-prefix)
|
|
- name: tools-image
|
|
value: $(params.tools-image)
|
|
- name: buildkit-image
|
|
value: $(params.buildkit-image)
|
|
- name: containerfile
|
|
value: $(params.containerfile)
|
|
- name: context-dir
|
|
value: $(params.context-dir)
|
|
- name: image-repository
|
|
value: $(params.image-repository)
|
|
- name: build-network
|
|
value: $(params.build-network)
|
|
- name: build-args-json
|
|
value: $(params.build-args-json)
|
|
- name: build-http-proxy
|
|
value: $(params.build-http-proxy)
|
|
- name: build-https-proxy
|
|
value: $(params.build-https-proxy)
|
|
- name: build-no-proxy
|
|
value: $(params.build-no-proxy)
|
|
- name: container-http-proxy
|
|
value: $(params.container-http-proxy)
|
|
- name: container-https-proxy
|
|
value: $(params.container-https-proxy)
|
|
- name: container-no-proxy
|
|
value: $(params.container-no-proxy)
|
|
- name: env-identity-files-json
|
|
value: $(params.env-identity-files-json)
|
|
- name: gitops-root
|
|
value: $(params.gitops-root)
|
|
- name: artifact-catalog
|
|
value: $(params.artifact-catalog)
|
|
when:
|
|
- input: unidesk-yaml-only
|
|
operator: in
|
|
values:
|
|
- unidesk-yaml-only
|
|
- name: collect-artifacts
|
|
runAfter:
|
|
- plan-artifacts
|
|
workspaces:
|
|
- name: source
|
|
workspace: source
|
|
taskSpec:
|
|
params:
|
|
*params
|
|
workspaces:
|
|
- name: source
|
|
steps:
|
|
- name: build-env-image
|
|
image: $(params.buildkit-image)
|
|
env:
|
|
- name: BUILDKITD_FLAGS
|
|
value: "--oci-worker-no-process-sandbox --oci-worker-net=host --allow-insecure-entitlement network.host"
|
|
- name: HTTP_PROXY
|
|
value: $(params.build-http-proxy)
|
|
- name: http_proxy
|
|
value: $(params.build-http-proxy)
|
|
- name: HTTPS_PROXY
|
|
value: $(params.build-https-proxy)
|
|
- name: https_proxy
|
|
value: $(params.build-https-proxy)
|
|
- name: ALL_PROXY
|
|
value: $(params.build-https-proxy)
|
|
- name: all_proxy
|
|
value: $(params.build-https-proxy)
|
|
- name: NO_PROXY
|
|
value: $(params.build-no-proxy)
|
|
- name: no_proxy
|
|
value: $(params.build-no-proxy)
|
|
securityContext:
|
|
privileged: true
|
|
runAsUser: 1000
|
|
runAsGroup: 1000
|
|
script: "#!/bin/sh\nset -eu\nroot=\"$(workspaces.source.path)\"\nif [ -f \"$root/skip-build\" ]; then cat \"$root/build-result.json\"; exit 0; fi\nenv_identity=$(cat \"$root/env-identity\")\nimage_repository='$(params.image-repository)'\nimage=\"$image_repository:$env_identity\"\ncontext_dir='$(params.context-dir)'\nif [ \"$context_dir\" = \".\" ]; then context_path=\"$root/repo\"; else context_path=\"$root/repo/${context_dir#./}\"; fi\nargs=\"build --allow network.host --frontend dockerfile.v0 --local context=$context_path --local dockerfile=$root/repo --opt filename=$(params.containerfile) --opt network=$(params.build-network)\"\nadd_opt() { args=\"$args --opt $1\"; }\nif [ -n '$(params.container-http-proxy)' ]; then add_opt 'build-arg:HTTP_PROXY=$(params.container-http-proxy)'; add_opt 'build-arg:http_proxy=$(params.container-http-proxy)'; fi\nif [ -n '$(params.container-https-proxy)' ]; then add_opt 'build-arg:HTTPS_PROXY=$(params.container-https-proxy)'; add_opt 'build-arg:https_proxy=$(params.container-https-proxy)'; fi\nif [ -n '$(params.container-https-proxy)' ]; then add_opt 'build-arg:ALL_PROXY=$(params.container-https-proxy)'; add_opt 'build-arg:all_proxy=$(params.container-https-proxy)'; elif [ -n '$(params.container-http-proxy)' ]; then add_opt 'build-arg:ALL_PROXY=$(params.container-http-proxy)'; add_opt 'build-arg:all_proxy=$(params.container-http-proxy)'; fi\nif [ -n '$(params.container-no-proxy)' ]; then add_opt 'build-arg:NO_PROXY=$(params.container-no-proxy)'; add_opt 'build-arg:no_proxy=$(params.container-no-proxy)'; fi\nwhile IFS= read -r opt; do [ -n \"$opt\" ] && add_opt \"$opt\"; done < \"$root/build-args.txt\"\nargs=\"$args --metadata-file $root/build-metadata.json --output type=image,name=$image,push=true,registry.insecure=true\"\nbuildctl-daemonless.sh $args\nmetadata_compact=$(tr -d '\\n' < \"$root/build-metadata.json\")\ndigest=$(printf '%s' \"$metadata_compact\" | sed -n 's/.*\"containerimage.digest\"[[:space:]]*:[[:space:]]*\"\\([^\"]*\\)\".*/\\1/p' | head -n 1)\ntest -n \"$digest\"\nprintf '{\"ok\":true,\"status\":\"built\",\"sourceCommit\":\"%s\",\"envIdentity\":\"%s\",\"image\":\"%s\",\"digest\":\"%s\",\"repositoryDigest\":\"%s@%s\",\"valuesPrinted\":false}\\n' \"$(params.revision)\" \"$env_identity\" \"$image\" \"$digest\" \"$image_repository\" \"$digest\" > \"$root/build-result.json\"\ncat \"$root/build-result.json\""
|
|
params:
|
|
*params1
|
|
when:
|
|
- input: unidesk-yaml-only
|
|
operator: in
|
|
values:
|
|
- unidesk-yaml-only
|
|
- name: gitops-promote
|
|
runAfter:
|
|
- collect-artifacts
|
|
workspaces:
|
|
- name: source
|
|
workspace: source
|
|
taskSpec:
|
|
params:
|
|
*params
|
|
workspaces:
|
|
- name: source
|
|
steps:
|
|
- name: publish-gitops
|
|
image: $(params.tools-image)
|
|
env:
|
|
- name: GITEA_TOKEN
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: pac-gitea-agentrun-nc01-v02
|
|
key: token
|
|
optional: true
|
|
script: "#!/bin/sh\nset -eu\nroot=\"$(workspaces.source.path)\"\nbuild_result=\"$root/build-result.json\"\ntest -s \"$build_result\"\ntemplates_b64=\"W3sicGF0aCI6InNvdXJjZS5qc29uIiwiY29udGVudCI6IntcbiAgXCJsYW5lXCI6IFwidjAuMlwiLFxuICBcInNvdXJjZUNvbW1pdFwiOiBcIl9fQUdFTlRSVU5fU09VUkNFX0NPTU1JVF9fXCIsXG4gIFwiZ2VuZXJhdGVkQnlcIjogXCJ1bmlkZXNrIGNvbmZpZy9hZ2VudHJ1bi55YW1sXCIsXG4gIFwiY29uZmlnU291cmNlXCI6IFwiY29uZmlnL2FnZW50cnVuLnlhbWxcIlxufVxuIn0seyJwYXRoIjoiZGVwbG95L2FydGlmYWN0LWNhdGFsb2cubmMwMS12MDIuanNvbiIsImNvbnRlbnQiOiJ7XG4gIFwibGFuZVwiOiBcInYwLjJcIixcbiAgXCJzb3VyY2VCcmFuY2hcIjogXCJ2MC4yXCIsXG4gIFwiZ2l0b3BzQnJhbmNoXCI6IFwibmMwMS12MC4yLWdpdG9wc1wiLFxuICBcInNvdXJjZUNvbW1pdElkXCI6IFwiX19BR0VOVFJVTl9TT1VSQ0VfQ09NTUlUX19cIixcbiAgXCJzdW1tYXJ5XCI6IFwiYnVpbGQ9MSByZXVzZT0wIHBsYWNlaG9sZGVyPTBcIixcbiAgXCJzZXJ2aWNlc1wiOiBbXG4gICAge1xuICAgICAgXCJzZXJ2aWNlSWRcIjogXCJhZ2VudHJ1bi1tZ3JcIixcbiAgICAgIFwiYXJ0aWZhY3RLaW5kXCI6IFwiZW52LXJldXNlXCIsXG4gICAgICBcInN0YXR1c1wiOiBcIl9fQUdFTlRSVU5fSU1BR0VfU1RBVFVTX19cIixcbiAgICAgIFwiaW1hZ2VcIjogXCIxMjcuMC4wLjE6NTAwMC9hZ2VudHJ1bi9hZ2VudHJ1bi1tZ3ItZW52Ol9fQUdFTlRSVU5fRU5WX0lERU5USVRZX19cIixcbiAgICAgIFwiZGlnZXN0XCI6IFwic2hhMjU2OmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFcIixcbiAgICAgIFwicmVwb3NpdG9yeURpZ2VzdFwiOiBcIjEyNy4wLjAuMTo1MDAwL2FnZW50cnVuL2FnZW50cnVuLW1nci1lbnZAc2hhMjU2OmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFcIixcbiAgICAgIFwiaW1hZ2VUYWdcIjogXCJfX0FHRU5UUlVOX0VOVl9JREVOVElUWV9fXCIsXG4gICAgICBcImVudklkZW50aXR5XCI6IFwiX19BR0VOVFJVTl9FTlZfSURFTlRJVFlfX1wiLFxuICAgICAgXCJlbnZJbWFnZVwiOiBcIjEyNy4wLjAuMTo1MDAwL2FnZW50cnVuL2FnZW50cnVuLW1nci1lbnY6X19BR0VOVFJVTl9FTlZfSURFTlRJVFlfX1wiLFxuICAgICAgXCJlbnZEaWdlc3RcIjogXCJzaGEyNTY6YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVwiLFxuICAgICAgXCJlbnZSZXBvc2l0b3J5RGlnZXN0XCI6IFwiMTI3LjAuMC4xOjUwMDAvYWdlbnRydW4vYWdlbnRydW4tbWdyLWVudkBzaGEyNTY6YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVwiLFxuICAgICAgXCJib290Q29tbWl0XCI6IFwiX19BR0VOVFJVTl9TT1VSQ0VfQ09NTUlUX19cIixcbiAgICAgIFwiYm9vdFNjcmlwdFwiOiBcImRlcGxveS9ydW50aW1lL2Jvb3QvYWdlbnRydW4tYm9vdC5zaFwiLFxuICAgICAgXCJwcm92ZW5hbmNlXCI6IHtcbiAgICAgICAgXCJzb3VyY2VDb21taXRJZFwiOiBcIl9fQUdFTlRSVU5fU09VUkNFX0NPTU1JVF9fXCIsXG4gICAgICAgIFwic291cmNlXCI6IFwidW5pZGVzay15YW1sLW9ubHlcIixcbiAgICAgICAgXCJjb25maWdTb3VyY2VcIjogXCJjb25maWcvYWdlbnRydW4ueWFtbFwiLFxuICAgICAgICBcInZhbHVlc1ByaW50ZWRcIjogZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIF1cbn1cbiJ9LHsicGF0aCI6ImRlcGxveS9naXRvcHMvbm9kZS9uYzAxL2FyZ29jZC9wcm9qZWN0LnlhbWwiLCJjb250ZW50Ijoie2FwaVZlcnNpb246IGFyZ29wcm9qLmlvL3YxYWxwaGExLGtpbmQ6IEFwcFByb2plY3QsbWV0YWRhdGE6IHtuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMixuYW1lc3BhY2U6IGFyZ29jZCxsYWJlbHM6IHthcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mOiBhZ2VudHJ1bixhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbGFuZTogdjAuMixhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbm9kZTogTkMwMX19LHNwZWM6IHtkZXNjcmlwdGlvbjogQWdlbnRSdW4gdjAuMiBHaXRPcHMgbGFuZSxzb3VyY2VSZXBvczogW2h0dHA6Ly9naXRlYS1odHRwLmRldm9wcy1pbmZyYS5zdmMuY2x1c3Rlci5sb2NhbDozMDAwL21pcnJvcnMvcGlrYXNUZWNoLWFnZW50cnVuLmdpdCxodHRwOi8vZ2l0ZWEtaHR0cC5kZXZvcHMtaW5mcmEuc3ZjLmNsdXN0ZXIubG9jYWw6MzAwMC9taXJyb3JzL3Bpa2FzVGVjaC1hZ2VudHJ1bi5naXRdLGRlc3RpbmF0aW9uczogW3tzZXJ2ZXI6IGh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2YyxuYW1lc3BhY2U6IGFnZW50cnVuLXYwMn1dLGNsdXN0ZXJSZXNvdXJjZVdoaXRlbGlzdDogW3tncm91cDogXCJcIixraW5kOiBOYW1lc3BhY2V9XSxuYW1lc3BhY2VSZXNvdXJjZVdoaXRlbGlzdDogW3tncm91cDogXCIqXCIsa2luZDogXCIqXCJ9XX19XG4ifSx7InBhdGgiOiJkZXBsb3kvZ2l0b3BzL25vZGUvbmMwMS9hcmdvY2QvYXBwbGljYXRpb24tdjAyLnlhbWwiLCJjb250ZW50Ijoie2FwaVZlcnNpb246IGFyZ29wcm9qLmlvL3YxYWxwaGExLGtpbmQ6IEFwcGxpY2F0aW9uLG1ldGFkYXRhOiB7bmFtZTogYWdlbnRydW4tbmMwMS12MDIsbmFtZXNwYWNlOiBhcmdvY2QsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fSxzcGVjOiB7cHJvamVjdDogYWdlbnRydW4tbmMwMS12MDIsc291cmNlOiB7cmVwb1VSTDogaHR0cDovL2dpdGVhLWh0dHAuZGV2b3BzLWluZnJhLnN2Yy5jbHVzdGVyLmxvY2FsOjMwMDAvbWlycm9ycy9waWthc1RlY2gtYWdlbnRydW4uZ2l0LHRhcmdldFJldmlzaW9uOiBuYzAxLXYwLjItZ2l0b3BzLHBhdGg6IGRlcGxveS9naXRvcHMvbm9kZS9uYzAxL3J1bnRpbWUtdjAyfSxkZXN0aW5hdGlvbjoge3NlcnZlcjogaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLG5hbWVzcGFjZTogYWdlbnRydW4tdjAyfSxzeW5jUG9saWN5OiB7YXV0b21hdGVkOiB7cHJ1bmU6IGZhbHNlLHNlbGZIZWFsOiB0cnVlfSxzeW5jT3B0aW9uczogW0NyZWF0ZU5hbWVzcGFjZT10cnVlLEFwcGx5T3V0T2ZTeW5jT25seT10cnVlXX19fVxuIn0seyJwYXRoIjoiZGVwbG95L2dpdG9wcy9ub2RlL25jMDEvcnVudGltZS12MDIva3VzdG9taXphdGlvbi55YW1sIiwiY29udGVudCI6InthcGlWZXJzaW9uOiBrdXN0b21pemUuY29uZmlnLms4cy5pby92MWJldGExLGtpbmQ6IEt1c3RvbWl6YXRpb24scmVzb3VyY2VzOiBbbmFtZXNwYWNlLnlhbWwsbWdyLnlhbWwscnVubmVyLXJiYWMueWFtbF19XG4ifSx7InBhdGgiOiJkZXBsb3kvZ2l0b3BzL25vZGUvbmMwMS9ydW50aW1lLXYwMi9uYW1lc3BhY2UueWFtbCIsImNvbnRlbnQiOiJ7YXBpVmVyc2lvbjogdjEsa2luZDogTmFtZXNwYWNlLG1ldGFkYXRhOiB7bmFtZTogYWdlbnRydW4tdjAyLGxhYmVsczoge2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2Y6IGFnZW50cnVuLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9sYW5lOiB2MC4yLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9ub2RlOiBOQzAxfX19XG4ifSx7InBhdGgiOiJkZXBsb3kvZ2l0b3BzL25vZGUvbmMwMS9ydW50aW1lLXYwMi9tZ3IueWFtbCIsImNvbnRlbnQiOiJ7YXBpVmVyc2lvbjogdjEsa2luZDogU2VydmljZUFjY291bnQsbWV0YWRhdGE6IHtuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1tZ3IsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fX1cbi0tLVxue2FwaVZlcnNpb246IHYxLGtpbmQ6IFNlcnZpY2UsbWV0YWRhdGE6IHtuYW1lOiBhZ2VudHJ1bi1tZ3IsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fSxzcGVjOiB7c2VsZWN0b3I6IHthcHAua3ViZXJuZXRlcy5pby9uYW1lOiBhZ2VudHJ1bi1tZ3J9LHBvcnRzOiBbe25hbWU6IGh0dHAscG9ydDogODA4MCx0YXJnZXRQb3J0OiBodHRwfV19fVxuLS0tXG57XCJhcGlWZXJzaW9uXCI6XCJhcHBzL3YxXCIsXCJraW5kXCI6XCJEZXBsb3ltZW50XCIsXCJtZXRhZGF0YVwiOntcIm5hbWVcIjpcImFnZW50cnVuLW1nclwiLFwibmFtZXNwYWNlXCI6XCJhZ2VudHJ1bi12MDJcIixcImxhYmVsc1wiOntcImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2ZcIjpcImFnZW50cnVuXCIsXCJhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbGFuZVwiOlwidjAuMlwiLFwiYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGVcIjpcIk5DMDFcIn19LFwic3BlY1wiOntcInJlcGxpY2FzXCI6MSxcInNlbGVjdG9yXCI6e1wibWF0Y2hMYWJlbHNcIjp7XCJhcHAua3ViZXJuZXRlcy5pby9uYW1lXCI6XCJhZ2VudHJ1bi1tZ3JcIn19LFwidGVtcGxhdGVcIjp7XCJtZXRhZGF0YVwiOntcImxhYmVsc1wiOntcImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2ZcIjpcImFnZW50cnVuXCIsXCJhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbGFuZVwiOlwidjAuMlwiLFwiYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGVcIjpcIk5DMDFcIixcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcIjpcImFnZW50cnVuLW1nclwifSxcImFubm90YXRpb25zXCI6e1wiYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmVcIjpcInYwLjJcIixcImFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9zb3VyY2UtY29tbWl0XCI6XCJfX0FHRU5UUlVOX1NPVVJDRV9DT01NSVRfX1wiLFwiYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2Vudi1pZGVudGl0eVwiOlwiX19BR0VOVFJVTl9FTlZfSURFTlRJVFlfX1wifX0sXCJzcGVjXCI6e1wic2VydmljZUFjY291bnROYW1lXCI6XCJhZ2VudHJ1bi1uYzAxLXYwMi1tZ3JcIixcImNvbnRhaW5lcnNcIjpbe1wibmFtZVwiOlwibWdyXCIsXCJpbWFnZVwiOlwiMTI3LjAuMC4xOjUwMDAvYWdlbnRydW4vYWdlbnRydW4tbWdyLWVudkBzaGEyNTY6YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVwiLFwiaW1hZ2VQdWxsUG9saWN5XCI6XCJJZk5vdFByZXNlbnRcIixcInBvcnRzXCI6W3tcIm5hbWVcIjpcImh0dHBcIixcImNvbnRhaW5lclBvcnRcIjo4MDgwfV0sXCJlbnZcIjpbe1wibmFtZVwiOlwiQUdFTlRSVU5fTEFORVwiLFwidmFsdWVcIjpcInYwLjJcIn0se1wibmFtZVwiOlwiREFUQUJBU0VfVVJMXCIsXCJ2YWx1ZUZyb21cIjp7XCJzZWNyZXRLZXlSZWZcIjp7XCJuYW1lXCI6XCJhZ2VudHJ1bi12MDItbWdyLWRiXCIsXCJrZXlcIjpcIkRBVEFCQVNFX1VSTFwifX19LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1NPVVJDRV9DT01NSVRcIixcInZhbHVlXCI6XCJfX0FHRU5UUlVOX1NPVVJDRV9DT01NSVRfX1wifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9CT09UX0NPTU1JVFwiLFwidmFsdWVcIjpcIl9fQUdFTlRSVU5fU09VUkNFX0NPTU1JVF9fXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0JPT1RfTU9ERVwiLFwidmFsdWVcIjpcIm1nclwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9CT09UX1JFUE9fVVJMXCIsXCJ2YWx1ZVwiOlwiaHR0cDovL2dpdGVhLWh0dHAuZGV2b3BzLWluZnJhLnN2Yy5jbHVzdGVyLmxvY2FsOjMwMDAvbWlycm9ycy9waWthc1RlY2gtYWdlbnRydW4uZ2l0XCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0VOVl9JREVOVElUWVwiLFwidmFsdWVcIjpcIl9fQUdFTlRSVU5fRU5WX0lERU5USVRZX19cIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOVElNRV9OQU1FU1BBQ0VcIixcInZhbHVlXCI6XCJhZ2VudHJ1bi12MDJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fSU5URVJOQUxfTUdSX1VSTFwiLFwidmFsdWVcIjpcImh0dHA6Ly9hZ2VudHJ1bi1tZ3IuYWdlbnRydW4tdjAyLnN2Yy5jbHVzdGVyLmxvY2FsOjgwODBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0lNQUdFXCIsXCJ2YWx1ZVwiOlwiMTI3LjAuMC4xOjUwMDAvYWdlbnRydW4vYWdlbnRydW4tbWdyLWVudkBzaGEyNTY6YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfU0VSVklDRV9BQ0NPVU5UXCIsXCJ2YWx1ZVwiOlwiYWdlbnRydW4tbmMwMS12MDItcnVubmVyXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9KT0JfTkFNRV9QUkVGSVhcIixcInZhbHVlXCI6XCJhZ2VudHJ1bi1uYzAxLXYwMi1ydW5uZXJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0FQSV9LRVlfU0VDUkVUX05BTUVcIixcInZhbHVlXCI6XCJhZ2VudHJ1bi12MDItYXBpLWtleVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfQVBJX0tFWV9TRUNSRVRfS0VZXCIsXCJ2YWx1ZVwiOlwiSFdMQUJfQVBJX0tFWVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9HSVRfTUlSUk9SX0JBU0VfVVJMXCIsXCJ2YWx1ZVwiOlwiaHR0cDovL2dpdGVhLWh0dHAuZGV2b3BzLWluZnJhLnN2Yy5jbHVzdGVyLmxvY2FsOjMwMDBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0lETEVfVElNRU9VVF9NU1wiLFwidmFsdWVcIjpcIjYwMDAwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9CQUNLRU5EX1JFVFJZX01BWF9BVFRFTVBUU1wiLFwidmFsdWVcIjpcIjVcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fQkFDS0VORF9SRVRSWV9JTklUSUFMX0JBQ0tPRkZfTVNcIixcInZhbHVlXCI6XCIxMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0JBQ0tFTkRfUkVUUllfTUFYX0JBQ0tPRkZfTVNcIixcInZhbHVlXCI6XCIzMDAwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfUkVURU5USU9OX01BWF9SVU5ORVJTXCIsXCJ2YWx1ZVwiOlwiMjBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX1JFVEVOVElPTl9DTEVBTlVQX09SREVSXCIsXCJ2YWx1ZVwiOlwib2xkZXN0LWluYWN0aXZlLWxhc3QtYWN0aXZlLWZpcnN0XCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9SRVRFTlRJT05fQUNUSVZFX0hFQVJUQkVBVF9NQVhfQUdFX01TXCIsXCJ2YWx1ZVwiOlwiOTAwMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9SRVRFTlRJT05fU1RBTEVfUEVORElOR19NQVhfQUdFX01TXCIsXCJ2YWx1ZVwiOlwiOTAwMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9SRVRFTlRJT05fTUFUQ0hfTEFCRUxTX0pTT05cIixcInZhbHVlXCI6XCJ7XFxcImFwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2ZcXFwiOlxcXCJhZ2VudHJ1blxcXCIsXFxcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcXFwiOlxcXCJhZ2VudHJ1bi1ydW5uZXJcXFwiLFxcXCJhcHAua3ViZXJuZXRlcy5pby9jb21wb25lbnRcXFwiOlxcXCJydW5uZXJcXFwifVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfUkVURU5USU9OX0pPQl9OQU1FX1BSRUZJWEVTXCIsXCJ2YWx1ZVwiOlwiYWdlbnRydW4tbmMwMS12MDItcnVubmVyLGFnZW50cnVuLXYwMi1ydW5uZXIsYWdlbnRydW4tdjAxLXJ1bm5lclwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfUkVURU5USU9OX0FHRV9CQVNFRF9DTEVBTlVQX0VOQUJMRURcIixcInZhbHVlXCI6XCJmYWxzZVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfUkVURU5USU9OX0FHRV9CQVNFRF9NQVhfQUdFX0hPVVJTXCIsXCJ2YWx1ZVwiOlwiNDhcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fQ0FOQ0VMX0RFTElWRVJZX01PREVcIixcInZhbHVlXCI6XCJtYW5hZ2VyLWVwb2NoXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0NBTkNFTF9HUkFDRUZVTF9BQk9SVF9NU1wiLFwidmFsdWVcIjpcIjE1MDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0NBTkNFTF9LSUxMX0VTQ0FMQVRJT05fTVNcIixcInZhbHVlXCI6XCIzMDAwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9DQU5DRUxfU1RBTEVfSEVBUlRCRUFUX0ZFTkNJTkdfTVNcIixcInZhbHVlXCI6XCI5MDAwMDBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fQ0FOQ0VMX0xBVEVfV1JJVEVfRkVOQ0lOR19FTkFCTEVEXCIsXCJ2YWx1ZVwiOlwidHJ1ZVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9DQU5DRUxfRVZFTlRfU1RBR0VTXCIsXCJ2YWx1ZVwiOlwiYWNjZXB0ZWQscGVyc2lzdGVkLGRlbGl2ZXJlZCxhYm9ydGluZyx0ZXJtaW5hbGl6ZWQsZmVuY2VkLGxhdGUtd3JpdGUtcmVqZWN0ZWRcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0VHUkVTU19QUk9YWV9VUkxcIixcInZhbHVlXCI6XCJodHRwOi8vMTAuNDIuMC4xOjEwODA4XCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9OT19QUk9YWV9FWFRSQVwiLFwidmFsdWVcIjpcImxvY2FsaG9zdCwxMjcuMC4wLjEsOjoxLC5zdmMsLnN2Yy5jbHVzdGVyLmxvY2FsLC5jbHVzdGVyLmxvY2FsLGh5dWVhcGkuY29tLC5oeXVlYXBpLmNvbSxhcGkuaHdwb2QuY29tLGFwaS5waWthcHl0aG9uLmNvbSwucGlrYXB5dGhvbi5jb21cIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fQVBJX0tFWVwiLFwidmFsdWVGcm9tXCI6e1wic2VjcmV0S2V5UmVmXCI6e1wibmFtZVwiOlwiYWdlbnRydW4tdjAyLWFwaS1rZXlcIixcImtleVwiOlwiSFdMQUJfQVBJX0tFWVwifX19LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0tBRktBX0JPT1RTVFJBUF9TRVJWRVJTXCIsXCJ2YWx1ZVwiOlwicGxhdGZvcm0taW5mcmEta2Fma2Eta2Fma2EtYm9vdHN0cmFwLnBsYXRmb3JtLWluZnJhLnN2Yy5jbHVzdGVyLmxvY2FsOjkwOTJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfQ0xJRU5UX0lEXCIsXCJ2YWx1ZVwiOlwiYWdlbnRydW4tdjAyLW1hbmFnZXJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfRU5BQkxFRFwiLFwidmFsdWVcIjpcInRydWVcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfRVZFTlRfVE9QSUNcIixcInZhbHVlXCI6XCJhZ2VudHJ1bi5ldmVudC52MVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9LQUZLQV9PVVRCT1hfQkFUQ0hfU0laRVwiLFwidmFsdWVcIjpcIjEwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9LQUZLQV9PVVRCT1hfSU5URVJWQUxfTVNcIixcInZhbHVlXCI6XCI1MDBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfT1VUQk9YX0xFQVNFX01TXCIsXCJ2YWx1ZVwiOlwiNjAwMDBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfT1VUQk9YX1JFVFJZX0JBQ0tPRkZfTVNcIixcInZhbHVlXCI6XCI1MDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX0tBRktBX1NURElPX0NMSUVOVF9JRFwiLFwidmFsdWVcIjpcImFnZW50cnVuLXYwMi1ydW5uZXJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fS0FGS0FfU1RESU9fUFJPRFVDRV9FTkFCTEVEXCIsXCJ2YWx1ZVwiOlwidHJ1ZVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9LQUZLQV9TVERJT19UT1BJQ1wiLFwidmFsdWVcIjpcImNvZGV4LXN0ZGlvLnJhdy52MVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9NQU5BR0VSX1JFQ09OQ0lMRVJfQkFUQ0hfU0laRVwiLFwidmFsdWVcIjpcIjIwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX01BTkFHRVJfUkVDT05DSUxFUl9FTkFCTEVEXCIsXCJ2YWx1ZVwiOlwidHJ1ZVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9NQU5BR0VSX1JFQ09OQ0lMRVJfSU5URVJWQUxfTVNcIixcInZhbHVlXCI6XCIyMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1BPU1RHUkVTX1BPT0xfTUFYXCIsXCJ2YWx1ZVwiOlwiNFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfRElTUEFUQ0hFUl9BVFRFTVBUX1RJTUVPVVRfTVNcIixcInZhbHVlXCI6XCI5MDAwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfRElTUEFUQ0hFUl9CQVRDSF9TSVpFXCIsXCJ2YWx1ZVwiOlwiMTBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0RJU1BBVENIRVJfRU5BQkxFRFwiLFwidmFsdWVcIjpcInRydWVcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0RJU1BBVENIRVJfSU5URVJWQUxfTVNcIixcInZhbHVlXCI6XCIxMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9ESVNQQVRDSEVSX0xFQVNFX01TXCIsXCJ2YWx1ZVwiOlwiMTIwMDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9ESVNQQVRDSEVSX01BWF9BVFRFTVBUU1wiLFwidmFsdWVcIjpcIjVcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX0RJU1BBVENIRVJfUkVUUllfQkFDS09GRl9NU1wiLFwidmFsdWVcIjpcIjUwMDBcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX1NUQVJUVVBfUkVUUllfSU5JVElBTF9CQUNLT0ZGX01TXCIsXCJ2YWx1ZVwiOlwiMjAwMFwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfU1RBUlRVUF9SRVRSWV9KSVRURVJfUkFUSU9cIixcInZhbHVlXCI6XCIwLjJcIn0se1wibmFtZVwiOlwiQUdFTlRSVU5fUlVOTkVSX1NUQVJUVVBfUkVUUllfTUFYX0FUVEVNUFRTXCIsXCJ2YWx1ZVwiOlwiNVwifSx7XCJuYW1lXCI6XCJBR0VOVFJVTl9SVU5ORVJfU1RBUlRVUF9SRVRSWV9NQVhfQkFDS09GRl9NU1wiLFwidmFsdWVcIjpcIjE2MDAwXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9TVEFSVFVQX1JFVFJZX01VTFRJUExJRVJcIixcInZhbHVlXCI6XCIyXCJ9LHtcIm5hbWVcIjpcIkFHRU5UUlVOX1JVTk5FUl9TVEFSVFVQX1JFVFJZX1RPVEFMX0RFQURMSU5FX01TXCIsXCJ2YWx1ZVwiOlwiNjAwMDBcIn0se1wibmFtZVwiOlwiSFdMQUJfUlVOVElNRV9MQU5FXCIsXCJ2YWx1ZVwiOlwidjAuM1wifSx7XCJuYW1lXCI6XCJPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UXCIsXCJ2YWx1ZVwiOlwiaHR0cDovL290ZWwtY29sbGVjdG9yLnBsYXRmb3JtLWluZnJhLnN2Yy5jbHVzdGVyLmxvY2FsOjQzMTgvdjEvdHJhY2VzXCJ9LHtcIm5hbWVcIjpcIk9URUxfU0VSVklDRV9OQU1FXCIsXCJ2YWx1ZVwiOlwiYWdlbnRydW4tbWFuYWdlclwifSx7XCJuYW1lXCI6XCJVTklERVNLX05PREVfSURcIixcInZhbHVlXCI6XCJOQzAxXCJ9LHtcIm5hbWVcIjpcIlVOSURFU0tfTUFJTl9TRVJWRVJfSVBcIixcInZhbHVlXCI6XCIxNTIuNTMuMjI5LjE0OFwifV0sXCJyZWFkaW5lc3NQcm9iZVwiOntcImh0dHBHZXRcIjp7XCJwYXRoXCI6XCIvaGVhbHRoL3JlYWRpbmVzc1wiLFwicG9ydFwiOlwiaHR0cFwifSxcInRpbWVvdXRTZWNvbmRzXCI6Mn0sXCJsaXZlbmVzc1Byb2JlXCI6e1wiaHR0cEdldFwiOntcInBhdGhcIjpcIi9oZWFsdGgvbGl2ZVwiLFwicG9ydFwiOlwiaHR0cFwifSxcInRpbWVvdXRTZWNvbmRzXCI6Mn0sXCJzdGFydHVwUHJvYmVcIjp7XCJodHRwR2V0XCI6e1wicGF0aFwiOlwiL2hlYWx0aC9saXZlXCIsXCJwb3J0XCI6XCJodHRwXCJ9LFwicGVyaW9kU2Vjb25kc1wiOjEwLFwidGltZW91dFNlY29uZHNcIjoyLFwiZmFpbHVyZVRocmVzaG9sZFwiOjkwfSxcInJlc291cmNlc1wiOntcInJlcXVlc3RzXCI6e1wiY3B1XCI6XCIxMDBtXCIsXCJtZW1vcnlcIjpcIjI1Nk1pXCJ9LFwibGltaXRzXCI6e1wiY3B1XCI6XCI4MDBtXCIsXCJtZW1vcnlcIjpcIjFHaVwifX19XX19fX1cbi0tLVxue2FwaVZlcnNpb246IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEsa2luZDogUm9sZSxtZXRhZGF0YToge25hbWU6IGFnZW50cnVuLW5jMDEtdjAyLW1nci1ydW5uZXItam9iLWNvbnRyb2xsZXIsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fSxydWxlczogW3thcGlHcm91cHM6IFtiYXRjaF0scmVzb3VyY2VzOiBbam9ic10sdmVyYnM6IFtjcmVhdGUsZGVsZXRlLGdldCxsaXN0LHdhdGNoXX0se2FwaUdyb3VwczogW1wiXCJdLHJlc291cmNlczogW3BvZHNdLHZlcmJzOiBbZGVsZXRlLGdldCxsaXN0LHdhdGNoXX0se2FwaUdyb3VwczogW1wiXCJdLHJlc291cmNlczogW2V2ZW50c10sdmVyYnM6IFtnZXQsbGlzdCx3YXRjaF19LHthcGlHcm91cHM6IFtcIlwiXSxyZXNvdXJjZXM6IFtwZXJzaXN0ZW50dm9sdW1lY2xhaW1zXSx2ZXJiczogW2NyZWF0ZSxnZXQsbGlzdCx3YXRjaCxkZWxldGVdfV19XG4tLS1cbnthcGlWZXJzaW9uOiByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxLGtpbmQ6IFJvbGVCaW5kaW5nLG1ldGFkYXRhOiB7bmFtZTogYWdlbnRydW4tbmMwMS12MDItbWdyLXJ1bm5lci1qb2ItY29udHJvbGxlcixuYW1lc3BhY2U6IGFnZW50cnVuLXYwMixsYWJlbHM6IHthcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mOiBhZ2VudHJ1bixhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbGFuZTogdjAuMixhZ2VudHJ1bi5waWthc3RlY2gubG9jYWwvbm9kZTogTkMwMX19LHN1YmplY3RzOiBbe2tpbmQ6IFNlcnZpY2VBY2NvdW50LG5hbWU6IGFnZW50cnVuLW5jMDEtdjAyLW1ncn1dLHJvbGVSZWY6IHthcGlHcm91cDogcmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyxraW5kOiBSb2xlLG5hbWU6IGFnZW50cnVuLW5jMDEtdjAyLW1nci1ydW5uZXItam9iLWNvbnRyb2xsZXJ9fVxuLS0tXG57YXBpVmVyc2lvbjogcmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSxraW5kOiBSb2xlLG1ldGFkYXRhOiB7bmFtZTogYWdlbnRydW4tbmMwMS12MDItbWdyLXByb3ZpZGVyLXNlY3JldC1tYW5hZ2VyLG5hbWVzcGFjZTogYWdlbnRydW4tdjAyLGxhYmVsczoge2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2Y6IGFnZW50cnVuLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9sYW5lOiB2MC4yLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9ub2RlOiBOQzAxfX0scnVsZXM6IFt7YXBpR3JvdXBzOiBbXCJcIl0scmVzb3VyY2VzOiBbc2VjcmV0c10sdmVyYnM6IFtjcmVhdGUsZGVsZXRlLGdldCxsaXN0LHBhdGNoLHVwZGF0ZV19XX1cbi0tLVxue2FwaVZlcnNpb246IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEsa2luZDogUm9sZUJpbmRpbmcsbWV0YWRhdGE6IHtuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1tZ3ItcHJvdmlkZXItc2VjcmV0LW1hbmFnZXIsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fSxzdWJqZWN0czogW3traW5kOiBTZXJ2aWNlQWNjb3VudCxuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1tZ3J9XSxyb2xlUmVmOiB7YXBpR3JvdXA6IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8sa2luZDogUm9sZSxuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1tZ3ItcHJvdmlkZXItc2VjcmV0LW1hbmFnZXJ9fVxuIn0seyJwYXRoIjoiZGVwbG95L2dpdG9wcy9ub2RlL25jMDEvcnVudGltZS12MDIvcnVubmVyLXJiYWMueWFtbCIsImNvbnRlbnQiOiJ7YXBpVmVyc2lvbjogdjEsa2luZDogU2VydmljZUFjY291bnQsbWV0YWRhdGE6IHtuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1ydW5uZXIsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fX1cbi0tLVxue2FwaVZlcnNpb246IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8vdjEsa2luZDogUm9sZSxtZXRhZGF0YToge25hbWU6IGFnZW50cnVuLW5jMDEtdjAyLXJ1bm5lci1zZWNyZXQtcmVhZGVyLG5hbWVzcGFjZTogYWdlbnRydW4tdjAyLGxhYmVsczoge2FwcC5rdWJlcm5ldGVzLmlvL3BhcnQtb2Y6IGFnZW50cnVuLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9sYW5lOiB2MC4yLGFnZW50cnVuLnBpa2FzdGVjaC5sb2NhbC9ub2RlOiBOQzAxfX0scnVsZXM6IFt7YXBpR3JvdXBzOiBbXCJcIl0scmVzb3VyY2VzOiBbc2VjcmV0c10sdmVyYnM6IFtnZXRdfV19XG4tLS1cbnthcGlWZXJzaW9uOiByYmFjLmF1dGhvcml6YXRpb24uazhzLmlvL3YxLGtpbmQ6IFJvbGVCaW5kaW5nLG1ldGFkYXRhOiB7bmFtZTogYWdlbnRydW4tbmMwMS12MDItcnVubmVyLXNlY3JldC1yZWFkZXIsbmFtZXNwYWNlOiBhZ2VudHJ1bi12MDIsbGFiZWxzOiB7YXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZjogYWdlbnRydW4sYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL2xhbmU6IHYwLjIsYWdlbnRydW4ucGlrYXN0ZWNoLmxvY2FsL25vZGU6IE5DMDF9fSxzdWJqZWN0czogW3traW5kOiBTZXJ2aWNlQWNjb3VudCxuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1ydW5uZXJ9XSxyb2xlUmVmOiB7YXBpR3JvdXA6IHJiYWMuYXV0aG9yaXphdGlvbi5rOHMuaW8sa2luZDogUm9sZSxuYW1lOiBhZ2VudHJ1bi1uYzAxLXYwMi1ydW5uZXItc2VjcmV0LXJlYWRlcn19XG4ifV0=\"\ngit_write_url='$(params.git-write-url)'\ngit_auth_url=\"$git_write_url\"\nif printf '%s' \"$git_write_url\" | grep -q '^http://gitea-http\\.'; then\n test -n \"${GITEA_TOKEN:-}\"\n git_auth_url=$(printf '%s' \"$git_write_url\" | sed \"s#^http://#http://x-access-token:${GITEA_TOKEN}@#\")\nfi\nrm -rf \"$root/gitops\"\ngit clone \"$git_auth_url\" \"$root/gitops\"\ncd \"$root/gitops\"\ngit fetch origin \"$(params.gitops-branch)\" || true\nif git rev-parse --verify \"refs/remotes/origin/$(params.gitops-branch)^{commit}\" >/dev/null 2>&1; then git checkout -B \"$(params.gitops-branch)\" \"refs/remotes/origin/$(params.gitops-branch)\"; else git checkout --orphan \"$(params.gitops-branch)\"; git rm -rf . >/dev/null 2>&1 || true; fi\nincoming_source_commit='$(params.revision)'\nsource_branch='$(params.source-branch)'\nbranch_source_commit=$(git -C \"$root/repo\" rev-parse --verify \"refs/remotes/origin/${source_branch}^{commit}\")\ngitops_source_commit=$(node -e 'try { const value = JSON.parse(require(\"node:fs\").readFileSync(\"source.json\", \"utf8\")).sourceCommit; if (typeof value === \"string\") process.stdout.write(value); } catch {}')\nstale_reason=''\nif [ \"$incoming_source_commit\" != \"$branch_source_commit\" ]; then stale_reason='stale-source-revision'; fi\nif [ -z \"$stale_reason\" ] && [ -n \"$gitops_source_commit\" ] && [ \"$incoming_source_commit\" != \"$gitops_source_commit\" ]; then\n if ! git -C \"$root/repo\" cat-file -e \"${gitops_source_commit}^{commit}\" 2>/dev/null; then stale_reason='gitops-source-order-unverifiable';\n elif git -C \"$root/repo\" merge-base --is-ancestor \"$incoming_source_commit\" \"$gitops_source_commit\"; then stale_reason='stale-gitops-source-revision';\n elif ! git -C \"$root/repo\" merge-base --is-ancestor \"$gitops_source_commit\" \"$incoming_source_commit\"; then stale_reason='divergent-gitops-source-revision'; fi\nfi\nif [ -n \"$stale_reason\" ]; then\n gitops_commit=$(git rev-parse HEAD)\n INCOMING_SOURCE_COMMIT=\"$incoming_source_commit\" CURRENT_SOURCE_COMMIT=\"$branch_source_commit\" GITOPS_SOURCE_COMMIT=\"$gitops_source_commit\" GITOPS_COMMIT=\"$gitops_commit\" STALE_REASON=\"$stale_reason\" node <<'NODE'\nconsole.log(JSON.stringify({ ok: true, status: 'succeeded', phase: 'gitops-publish', reason: process.env.STALE_REASON, warning: true, blocking: false, changed: false, stale: true, gitopsCommit: process.env.GITOPS_COMMIT, sourceCommit: process.env.INCOMING_SOURCE_COMMIT, currentSourceCommit: process.env.CURRENT_SOURCE_COMMIT, gitopsSourceCommit: process.env.GITOPS_SOURCE_COMMIT || null, valuesPrinted: false }));\nNODE\n exit 0\nfi\ngit rm -rf --ignore-unmatch \"$(params.gitops-root)\" \"$(params.artifact-catalog)\" source.json >/dev/null 2>&1 || true\nrm -rf \"$(params.gitops-root)\" \"$(params.artifact-catalog)\" source.json\nTEMPLATES_B64=\"$templates_b64\" BUILD_RESULT=\"$build_result\" node <<'NODE'\nconst { mkdirSync, readFileSync, writeFileSync } = require('node:fs');\nconst { dirname } = require('node:path');\nconst templates = JSON.parse(Buffer.from(process.env.TEMPLATES_B64, 'base64').toString('utf8'));\nconst build = JSON.parse(readFileSync(process.env.BUILD_RESULT, 'utf8'));\nconst replacements = new Map([\n ['__AGENTRUN_SOURCE_COMMIT__', build.sourceCommit],\n ['__AGENTRUN_ENV_IDENTITY__', build.envIdentity],\n ['sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', build.digest],\n ['__AGENTRUN_IMAGE_STATUS__', build.status],\n]);\nfor (const file of templates) {\n let content = file.content;\n for (const [from, to] of replacements) content = content.split(from).join(to);\n mkdirSync(dirname(file.path), { recursive: true });\n writeFileSync(file.path, content);\n}\nNODE\nfeature_config_schema_started_ms=\"$(date +%s%3N 2>/dev/null || date +%s000)\"\nexport UNIDESK_FEATURE_CONFIG_REPO_DIR=\"$root\"\nexport UNIDESK_FEATURE_CONFIG_RENDERED_ROOT=\"$PWD/$(params.gitops-root)\"\nexport UNIDESK_PAC_CONSUMER='agentrun-nc01-v02'\nexport OTEL_EXPORTER_OTLP_TRACES_ENDPOINT='http://otel-collector.platform-infra.svc.cluster.local:4318/v1/traces'\nexport OTEL_SERVICE_NAME='unidesk-cicd'\nexport OTEL_TRACES_SAMPLER_ARG='1'\nexport OTEL_EXPORTER_TIMEOUT_MS='300'\nfeature_config_validator_base=''\nfeature_config_validator=''\nif feature_config_validator_base=\"$(mktemp \"${TMPDIR:-/tmp}/unidesk-feature-config-validator.XXXXXX\" 2>/dev/null)\"; then\n feature_config_validator=\"${feature_config_validator_base}.mjs\"\n if ! printf '%s' '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' | base64 -d | gzip -d >\"$feature_config_validator\"; then\n rm -f \"$feature_config_validator_base\" \"$feature_config_validator\" || true\n feature_config_validator=''\n fi\n rm -f \"$feature_config_validator_base\" || true\nfi\nfeature_config_ajv_bundle=''\nif feature_config_ajv_bundle=\"$(mktemp \"${TMPDIR:-/tmp}/unidesk-ajv2020.XXXXXX\" 2>/dev/null)\"; then\n if ! printf '%s' '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' | base64 -d | gzip -d >\"$feature_config_ajv_bundle\"; then\n rm -f \"$feature_config_ajv_bundle\" || true\n feature_config_ajv_bundle=''\n fi\nfi\nexport UNIDESK_AJV2020_BUNDLE=\"${feature_config_ajv_bundle:-${TMPDIR:-/tmp}/unidesk-ajv2020-unavailable}\"\nexport UNIDESK_FEATURE_CONFIG_VALIDATOR=\"${feature_config_validator:-${TMPDIR:-/tmp}/unidesk-feature-config-validator-unavailable.mjs}\"\nif ! node --input-type=module <<'NODE_UNIDESK_FEATURE_CONFIG_SCHEMA'\nimport { pathToFileURL } from 'node:url';\nconst validator = await import(pathToFileURL(process.env.UNIDESK_FEATURE_CONFIG_VALIDATOR).href);\nawait validator.runFeatureConfigSchemaValidation({ repoDir: process.env.UNIDESK_FEATURE_CONFIG_REPO_DIR, renderedRoot: process.env.UNIDESK_FEATURE_CONFIG_RENDERED_ROOT, consumer: process.env.UNIDESK_PAC_CONSUMER });\nNODE_UNIDESK_FEATURE_CONFIG_SCHEMA\nthen\n printf '{\"event\":\"feature-config-schema-validation\",\"warning\":true,\"blocking\":false,\"code\":\"feature-config-validator-process-failure\",\"mutation\":false,\"valuesPrinted\":false}\\n' >&2\nfi\nif [ -n \"$feature_config_validator\" ]; then rm -f \"$feature_config_validator\" || true; fi\nif [ -n \"$feature_config_ajv_bundle\" ]; then rm -f \"$feature_config_ajv_bundle\" || true; fi\nif command -v ci_timing_emit >/dev/null 2>&1; then\n ci_timing_emit feature-config-schema-validation succeeded \"$feature_config_schema_started_ms\"\nelse\n printf '{\"event\":\"ci.stage.timing\",\"stage\":\"feature-config-schema-validation\",\"status\":\"succeeded\",\"blocking\":false}\\n' >&2\nfi\ngit add source.json \"$(params.artifact-catalog)\" \"$(params.gitops-root)\"\nif git diff --quiet --cached; then changed=false; else changed=true; git -c user.email=agentrun@unidesk.local -c user.name='UniDesk AgentRun PaC' commit -m \"deploy: render AgentRun $(params.gitops-branch) from PaC\"; fi\ngit remote set-url origin \"$git_auth_url\"\ngit push -u origin \"$(params.gitops-branch)\"\ngitops_commit=$(git rev-parse HEAD)\nBUILD_RESULT=\"$build_result\" CHANGED=\"$changed\" GITOPS_COMMIT=\"$gitops_commit\" node <<'NODE'\nconst { readFileSync } = require('node:fs');\nconst build = JSON.parse(readFileSync(process.env.BUILD_RESULT, 'utf8'));\nconsole.log(JSON.stringify({ ok: true, status: 'succeeded', phase: 'gitops-publish', changed: process.env.CHANGED === 'true', gitopsCommit: process.env.GITOPS_COMMIT, sourceCommit: build.sourceCommit, envIdentity: build.envIdentity, imageStatus: build.status, digest: build.digest, valuesPrinted: false }));\nNODE"
|
|
params:
|
|
*params1
|
|
when:
|
|
- input: unidesk-yaml-only
|
|
operator: in
|
|
values:
|
|
- unidesk-yaml-only
|
|
taskRunTemplate:
|
|
serviceAccountName: agentrun-nc01-v02-tekton-runner
|
|
podTemplate:
|
|
hostNetwork: true
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
securityContext:
|
|
fsGroup: 1000
|
|
nodeSelector:
|
|
unidesk.ai/node-id: NC01
|
|
params:
|
|
- name: git-url
|
|
value: "{{ repo_url }}"
|
|
- name: git-read-url
|
|
value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
|
|
- name: git-write-url
|
|
value: http://gitea-http.devops-infra.svc.cluster.local:3000/mirrors/pikasTech-agentrun.git
|
|
- name: source-branch
|
|
value: v0.2
|
|
- name: gitops-branch
|
|
value: nc01-v0.2-gitops
|
|
- name: revision
|
|
value: "{{ revision }}"
|
|
- name: source-stage-ref
|
|
value: "refs/unidesk/snapshots/gitea-actions/agentrun-v0.2/{{ revision }}"
|
|
- name: registry-prefix
|
|
value: 127.0.0.1:5000/agentrun
|
|
- name: tools-image
|
|
value: 127.0.0.1:5000/hwlab/hwlab-ci-node-tools:node22-alpine-bun-v1
|
|
- name: buildkit-image
|
|
value: 127.0.0.1:5000/hwlab/buildkit:rootless
|
|
- name: containerfile
|
|
value: deploy/container/Containerfile
|
|
- name: context-dir
|
|
value: "."
|
|
- name: image-repository
|
|
value: 127.0.0.1:5000/agentrun/agentrun-mgr-env
|
|
- name: build-network
|
|
value: host
|
|
- name: build-args-json
|
|
value: "[\"BUN_IMAGE=oven/bun:1-alpine\"]"
|
|
- name: build-http-proxy
|
|
value: http://127.0.0.1:10808
|
|
- name: build-https-proxy
|
|
value: http://127.0.0.1:10808
|
|
- name: build-no-proxy
|
|
value: "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,hyueapi.com,.hyueapi.com"
|
|
- name: container-http-proxy
|
|
value: http://127.0.0.1:10808
|
|
- name: container-https-proxy
|
|
value: http://127.0.0.1:10808
|
|
- name: container-no-proxy
|
|
value: "localhost,127.0.0.1,::1,127.0.0.1:5000,localhost:5000,.svc,.svc.cluster.local,.cluster.local,hyueapi.com,.hyueapi.com"
|
|
- name: env-identity-files-json
|
|
value: "[\"deploy/container/Containerfile\",\"deploy/runtime/boot/agentrun-boot.sh\",\"deploy/runtime/boot/agentrun-mgr.sh\",\"deploy/runtime/boot/agentrun-runner.sh\",\"src\",\"scripts\",\"package.json\",\"bun.lock\",\"tsconfig.json\"]"
|
|
- name: gitops-root
|
|
value: deploy/gitops/node/nc01
|
|
- name: artifact-catalog
|
|
value: deploy/artifact-catalog.nc01-v02.json
|
|
workspaces:
|
|
- name: source
|
|
volumeClaimTemplate:
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 2Gi
|