95 lines
2.8 KiB
YAML
95 lines
2.8 KiB
YAML
kind: pipeline
|
|
type: docker
|
|
name: build-and-push
|
|
|
|
# BuildKit-Service für parallele Multiarch-Builds
|
|
services:
|
|
- name: buildkitd
|
|
image: moby/buildkit:buildx-stable-1
|
|
privileged: true
|
|
command: ["buildkitd", "--addr", "tcp://0.0.0.0:1234", "--debug"]
|
|
# Netzwerk explizit öffnen
|
|
network_mode: host
|
|
|
|
steps:
|
|
- name: build-amd64
|
|
image: docker:26
|
|
privileged: true
|
|
environment:
|
|
BUILDKIT_HOST: tcp://buildkitd:1234
|
|
REGISTRY_URL:
|
|
from_secret: REGISTRY_URL
|
|
DOCKER_USER:
|
|
from_secret: DOCKER_USER
|
|
DOCKER_PASS:
|
|
from_secret: DOCKER_PASS
|
|
volumes:
|
|
- name: docker_sock
|
|
path: /var/run/docker.sock
|
|
commands:
|
|
- |
|
|
echo "=== Building amd64 image ==="
|
|
docker login "$REGISTRY_URL" -u "$DOCKER_USER" -p "$DOCKER_PASS"
|
|
docker buildx create --use --driver docker-container --driver-opt network=host
|
|
docker buildx inspect --bootstrap
|
|
docker buildx build \
|
|
--platform linux/amd64 \
|
|
--output=type=registry \
|
|
--provenance=false \
|
|
-t ${REGISTRY_URL}/portainer-agent-tailscale:amd64 \
|
|
--push .
|
|
|
|
- name: build-arm64
|
|
image: docker:26
|
|
privileged: true
|
|
environment:
|
|
BUILDKIT_HOST: tcp://buildkitd:1234
|
|
REGISTRY_URL:
|
|
from_secret: REGISTRY_URL
|
|
DOCKER_USER:
|
|
from_secret: DOCKER_USER
|
|
DOCKER_PASS:
|
|
from_secret: DOCKER_PASS
|
|
volumes:
|
|
- name: docker_sock
|
|
path: /var/run/docker.sock
|
|
commands:
|
|
- |
|
|
echo "=== Building arm64 image ==="
|
|
docker login "$REGISTRY_URL" -u "$DOCKER_USER" -p "$DOCKER_PASS"
|
|
docker buildx create --use --driver docker-container --driver-opt network=host
|
|
docker buildx inspect --bootstrap
|
|
docker buildx build \
|
|
--platform linux/arm64 \
|
|
--output=type=registry \
|
|
--provenance=false \
|
|
-t ${REGISTRY_URL}/portainer-agent-tailscale:arm64 \
|
|
--push .
|
|
|
|
- name: create-manifest
|
|
image: docker:26
|
|
privileged: true
|
|
environment:
|
|
REGISTRY_URL:
|
|
from_secret: REGISTRY_URL
|
|
DOCKER_USER:
|
|
from_secret: DOCKER_USER
|
|
DOCKER_PASS:
|
|
from_secret: DOCKER_PASS
|
|
volumes:
|
|
- name: docker_sock
|
|
path: /var/run/docker.sock
|
|
commands:
|
|
- |
|
|
echo "=== Creating multi-arch manifest ==="
|
|
docker login "$REGISTRY_URL" -u "$DOCKER_USER" -p "$DOCKER_PASS"
|
|
docker manifest create ${REGISTRY_URL}/portainer-agent-tailscale:latest \
|
|
--amend ${REGISTRY_URL}/portainer-agent-tailscale:amd64 \
|
|
--amend ${REGISTRY_URL}/portainer-agent-tailscale:arm64
|
|
docker manifest push ${REGISTRY_URL}/portainer-agent-tailscale:latest
|
|
|
|
volumes:
|
|
- name: docker_sock
|
|
host:
|
|
path: /var/run/docker.sock
|