cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 6950d0f2a2e289065440b217d0fab6c01b3c8861
parent 2972050242ca6ff9e86b7f50e415fde88eb0eaf7
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Fri, 10 Apr 2026 02:37:16 +0200

try to fix issues

Signed-off-by: MTRNord <MTRNord@users.noreply.github.com>

Diffstat:
Mapps/talos_cluster/jenkins/seeds/jobs/gitops_multiarch_builds.groovy | 323+++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 158 insertions(+), 165 deletions(-)

diff --git a/apps/talos_cluster/jenkins/seeds/jobs/gitops_multiarch_builds.groovy b/apps/talos_cluster/jenkins/seeds/jobs/gitops_multiarch_builds.groovy @@ -37,6 +37,7 @@ pipelineJob('gitops-multiarch-builds') { REGISTRY_URL = 'https://registry.midnightthoughts.space' DOCKER_CONFIG = '/var/run/secrets/docker.io' COSIGN_KEY_PATH = '/var/run/secrets/cosign/key' + PATH = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" } stages { @@ -45,12 +46,12 @@ pipelineJob('gitops-multiarch-builds') { script { echo "=== Preparing multi-arch build environment ===" sh ''' - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes || true + podman run --rm --privileged multiarch/qemu-user-static --reset -p yes || true ls -la /proc/sys/fs/binfmt_misc/ || echo "binfmt_misc not available" - docker buildx create --use --name multiarch-builder || docker buildx use multiarch-builder - docker buildx inspect --bootstrap + podman buildx create --use --name multiarch-builder || podman buildx use multiarch-builder + podman buildx inspect --bootstrap ''' } } @@ -113,7 +114,7 @@ pipelineJob('gitops-multiarch-builds') { post { always { - cleanWs() + deleteDir() } success { echo "✓ Build pipeline completed successfully!" @@ -131,177 +132,169 @@ pipelineJob('gitops-multiarch-builds') { def build_matrix_backup() { echo "=== Building matrix-backup ===" - docker.image('docker:latest').inside('--privileged') { - sh ''' - set -eu - - mkdir -p ~/.docker - cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true - - TAG_TS=$(date -u +%Y%m%d-%H%M%S) - TAG_SHA="sha-$(git rev-parse --short HEAD)" - IMAGE="${REGISTRY}/mtrnord/cluster/matrix-backup" - - echo "Building multi-arch image: ${IMAGE}" - echo "Tags: ${TAG_TS}, main, ${TAG_SHA}" - - docker buildx build \\ - --platform linux/amd64,linux/arm64 \\ - --tag "${IMAGE}:${TAG_TS}" \\ - --tag "${IMAGE}:main" \\ - --tag "${IMAGE}:${TAG_SHA}" \\ - --push \\ - -f apps/talos_cluster/image-builder/matrix-backup/Dockerfile \\ - apps/talos_cluster/image-builder/matrix-backup/ - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${TAG_TS}" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:main" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${TAG_SHA}" - ''' - } + sh ''' + set -eu + + mkdir -p ~/.docker + cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true + + TAG_TS=$(date -u +%Y%m%d-%H%M%S) + TAG_SHA="sha-$(git rev-parse --short HEAD)" + IMAGE="${REGISTRY}/mtrnord/cluster/matrix-backup" + + echo "Building multi-arch image: ${IMAGE}" + echo "Tags: ${TAG_TS}, main, ${TAG_SHA}" + + podman buildx build \\ + --platform linux/amd64,linux/arm64 \\ + --tag "${IMAGE}:${TAG_TS}" \\ + --tag "${IMAGE}:main" \\ + --tag "${IMAGE}:${TAG_SHA}" \\ + --push \\ + -f apps/talos_cluster/image-builder/matrix-backup/Dockerfile \\ + apps/talos_cluster/image-builder/matrix-backup/ + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${TAG_TS}" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:main" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${TAG_SHA}" + ''' } def build_continuwuity() { echo "=== Building continuwuity ===" - docker.image('docker:latest').inside('--privileged') { - sh ''' - set -eu - - mkdir -p ~/.docker - cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true - - TAG_SHA="sha-$(git rev-parse --short HEAD)" - IMAGE="${REGISTRY}/mtrnord/cluster/continuwuity" - - echo "Building multi-arch image: ${IMAGE}" - echo "Tags: main, ${TAG_SHA}" - - docker buildx build \\ - --platform linux/amd64,linux/arm64 \\ - --tag "${IMAGE}:main" \\ - --tag "${IMAGE}:${TAG_SHA}" \\ - --push \\ - -f apps/talos_cluster/image-builder/continuwuity/Dockerfile \\ - apps/talos_cluster/image-builder/continuwuity/ - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:main" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${TAG_SHA}" - ''' - } + sh ''' + set -eu + + mkdir -p ~/.docker + cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true + + TAG_SHA="sha-$(git rev-parse --short HEAD)" + IMAGE="${REGISTRY}/mtrnord/cluster/continuwuity" + + echo "Building multi-arch image: ${IMAGE}" + echo "Tags: main, ${TAG_SHA}" + + podman buildx build \\ + --platform linux/amd64,linux/arm64 \\ + --tag "${IMAGE}:main" \\ + --tag "${IMAGE}:${TAG_SHA}" \\ + --push \\ + -f apps/talos_cluster/image-builder/continuwuity/Dockerfile \\ + apps/talos_cluster/image-builder/continuwuity/ + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:main" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${TAG_SHA}" + ''' } def build_blog() { echo "=== Building blog ===" - docker.image('docker:latest').inside('--privileged') { - sh ''' - set -eu - - mkdir -p ~/.docker - cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true - - TAG_TS=$(date -u +%Y%m%d-%H%M%S) - TAG_SHA="sha-$(git rev-parse --short HEAD)" - IMAGE="${REGISTRY}/mtrnord/blog" - - echo "Building multi-arch image: ${IMAGE}" - echo "Tags: ${TAG_TS}, latest, ${TAG_SHA}" - - docker buildx build \\ - --platform linux/amd64,linux/arm64 \\ - --tag "${IMAGE}:${TAG_TS}" \\ - --tag "${IMAGE}:latest" \\ - --tag "${IMAGE}:${TAG_SHA}" \\ - --push \\ - -f apps/talos_cluster/image-builder/blog/Dockerfile \\ - apps/talos_cluster/image-builder/blog/ - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${TAG_TS}" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:latest" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${TAG_SHA}" - ''' - } + sh ''' + set -eu + + mkdir -p ~/.docker + cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true + + TAG_TS=$(date -u +%Y%m%d-%H%M%S) + TAG_SHA="sha-$(git rev-parse --short HEAD)" + IMAGE="${REGISTRY}/mtrnord/blog" + + echo "Building multi-arch image: ${IMAGE}" + echo "Tags: ${TAG_TS}, latest, ${TAG_SHA}" + + podman buildx build \\ + --platform linux/amd64,linux/arm64 \\ + --tag "${IMAGE}:${TAG_TS}" \\ + --tag "${IMAGE}:latest" \\ + --tag "${IMAGE}:${TAG_SHA}" \\ + --push \\ + -f apps/talos_cluster/image-builder/blog/Dockerfile \\ + apps/talos_cluster/image-builder/blog/ + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${TAG_TS}" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:latest" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${TAG_SHA}" + ''' } def build_bookwyrm() { echo "=== Building bookwyrm ===" - docker.image('docker:latest').inside('--privileged') { - sh ''' - set -eu - - mkdir -p ~/.docker - cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true - - VERSION=$(docker run --rm curlimages/curl:latest \\ - curl -sf "https://api.github.com/repos/bookwyrm-social/bookwyrm/releases/latest" | \\ - grep '"tag_name"' | head -1 | cut -d'"' -f4) - - if [ -z "$VERSION" ]; then - echo "ERROR: could not determine upstream version" - exit 1 - fi - - IMAGE="${REGISTRY}/mtrnord/cluster/bookwyrm" - - echo "Building multi-arch image: ${IMAGE}" - echo "Tags: ${VERSION}, latest" - - docker buildx build \\ - --platform linux/amd64,linux/arm64 \\ - --build-arg VERSION="${VERSION}" \\ - --tag "${IMAGE}:${VERSION}" \\ - --tag "${IMAGE}:latest" \\ - --push \\ - -f apps/talos_cluster/image-builder/bookwyrm/Dockerfile \\ - apps/talos_cluster/image-builder/bookwyrm/ - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:${VERSION}" - - docker run --rm \\ - -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ - -v ~/.docker:/root/.docker:ro \\ - gcr.io/projectsigstore/cosign:latest \\ - sign --key /cosign/key "${IMAGE}:latest" - ''' - } + sh ''' + set -eu + + mkdir -p ~/.docker + cp ${DOCKER_CONFIG}/config.json ~/.docker/config.json 2>/dev/null || true + + VERSION=$(podman run --rm curlimages/curl:latest \\ + curl -sf "https://api.github.com/repos/bookwyrm-social/bookwyrm/releases/latest" | \\ + grep '"tag_name"' | head -1 | cut -d'"' -f4) + + if [ -z "$VERSION" ]; then + echo "ERROR: could not determine upstream version" + exit 1 + fi + + IMAGE="${REGISTRY}/mtrnord/cluster/bookwyrm" + + echo "Building multi-arch image: ${IMAGE}" + echo "Tags: ${VERSION}, latest" + + podman buildx build \\ + --platform linux/amd64,linux/arm64 \\ + --build-arg VERSION="${VERSION}" \\ + --tag "${IMAGE}:${VERSION}" \\ + --tag "${IMAGE}:latest" \\ + --push \\ + -f apps/talos_cluster/image-builder/bookwyrm/Dockerfile \\ + apps/talos_cluster/image-builder/bookwyrm/ + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:${VERSION}" + + podman run --rm \\ + -v ${COSIGN_KEY_PATH}:/cosign/key:ro \\ + -v ~/.docker:/root/.docker:ro \\ + gcr.io/projectsigstore/cosign:latest \\ + sign --key /cosign/key "${IMAGE}:latest" + ''' }