kind: pipeline type: docker name: build-and-push-multiarch steps: - name: setup-builder image: docker:26 privileged: true volumes: - name: docker_sock path: /var/run/docker.sock commands: - docker buildx create --name multiarch --use - docker buildx inspect --bootstrap - name: build-amd64 image: docker:26 privileged: true volumes: - name: docker_sock path: /var/run/docker.sock environment: REGISTRY_URL: from_secret: REGISTRY_URL commands: - | echo "Building amd64 image..." docker buildx use multiarch docker buildx build \ --platform linux/amd64 \ -t ${REGISTRY_URL}/portainer-agent-tailscale:amd64 \ --push . - name: build-arm64 image: docker:26 privileged: true volumes: - name: docker_sock path: /var/run/docker.sock environment: REGISTRY_URL: from_secret: REGISTRY_URL commands: - | echo "Building arm64 image..." docker buildx use multiarch docker buildx build \ --platform linux/arm64 \ -t ${REGISTRY_URL}/portainer-agent-tailscale:arm64 \ --push . - name: create-manifest image: docker:26 privileged: true volumes: - name: docker_sock path: /var/run/docker.sock environment: REGISTRY_URL: from_secret: REGISTRY_URL commands: - | echo "Creating and pushing multi-arch manifest..." 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