feat(ci): Add OpenBao and Orchestrator image builds to Woodpecker CI
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

Add missing Docker image builds for swarm deployment.

Changes:
- Added docker-build-openbao step to .woodpecker.yml
- Added docker-build-orchestrator step to .woodpecker.yml
- Updated docker-compose.swarm.yml to use registry images
  (git.mosaicstack.dev/mosaic/*)
- Added IMAGE_TAG variable support for versioned deployments
- Updated deploy-swarm.sh to support both registry and local images

Image tagging strategy:
- All commits: SHA tag (e.g., 658ec077)
- main branch: latest + SHA
- develop branch: dev + SHA
- git tags: version tag + SHA

Registry images:
- git.mosaicstack.dev/mosaic/postgres
- git.mosaicstack.dev/mosaic/openbao
- git.mosaicstack.dev/mosaic/api
- git.mosaicstack.dev/mosaic/orchestrator
- git.mosaicstack.dev/mosaic/web

Deployment modes:
- IMAGE_TAG=latest (default, use registry latest)
- IMAGE_TAG=dev (use registry dev tag)
- IMAGE_TAG=local (use local builds via build-images.sh)
This commit is contained in:
2026-02-08 01:33:36 -06:00
parent 7f3499b1f2
commit 0e3baae415
4 changed files with 121 additions and 27 deletions

View File

@@ -6,10 +6,12 @@ set -euo pipefail
STACK_NAME="${1:-mosaic}"
COMPOSE_FILE="docker-compose.swarm.yml"
IMAGE_TAG="${IMAGE_TAG:-latest}"
echo "🚀 Deploying Mosaic Stack to Docker Swarm..."
echo "Stack name: $STACK_NAME"
echo "Compose file: $COMPOSE_FILE"
echo "Image tag: $IMAGE_TAG"
echo ""
# Check if .env exists
@@ -72,38 +74,58 @@ else
echo "✅ traefik-public network already exists"
fi
# Check if images exist, offer to build if not
# Check if using registry images or local images
echo ""
echo "🔍 Checking if images are built..."
IMAGES_MISSING=0
for img in mosaic-stack-postgres mosaic-stack-openbao mosaic-stack-api mosaic-stack-orchestrator mosaic-stack-web; do
if ! docker images --format "{{.Repository}}" | grep -q "^${img}$"; then
echo " ⚠️ Missing: $img"
IMAGES_MISSING=1
fi
done
REGISTRY="git.mosaicstack.dev"
USE_REGISTRY=true
if [ $IMAGES_MISSING -eq 1 ]; then
echo ""
echo "❌ Some images are missing. Build them first:"
echo " ./build-images.sh"
echo ""
read -p "Build images now? [Y/n]: " BUILD_NOW
BUILD_NOW=${BUILD_NOW:-Y}
if [[ $BUILD_NOW =~ ^[Yy]$ ]]; then
./build-images.sh || exit 1
# If IMAGE_TAG is set to "local", use local images
if [ "$IMAGE_TAG" = "local" ]; then
USE_REGISTRY=false
echo "🔍 Using local images (IMAGE_TAG=local)"
IMAGES_MISSING=0
for img in mosaic-stack-postgres mosaic-stack-openbao mosaic-stack-api mosaic-stack-orchestrator mosaic-stack-web; do
if ! docker images --format "{{.Repository}}" | grep -q "^${img}$"; then
echo " ⚠️ Missing: $img"
IMAGES_MISSING=1
fi
done
if [ $IMAGES_MISSING -eq 1 ]; then
echo ""
echo "❌ Some local images are missing. Build them first:"
echo " ./build-images.sh"
echo ""
read -p "Build images now? [Y/n]: " BUILD_NOW
BUILD_NOW=${BUILD_NOW:-Y}
if [[ $BUILD_NOW =~ ^[Yy]$ ]]; then
./build-images.sh || exit 1
else
echo "Aborting deployment. Build images first."
exit 1
fi
else
echo "Aborting deployment. Build images first."
exit 1
echo "✅ All local images are built"
fi
else
echo "✅ All images are built"
echo "🔍 Using registry images from $REGISTRY"
echo " Tag: $IMAGE_TAG"
echo ""
echo " Images will be pulled from:"
echo " - $REGISTRY/mosaic/postgres:$IMAGE_TAG"
echo " - $REGISTRY/mosaic/openbao:$IMAGE_TAG"
echo " - $REGISTRY/mosaic/api:$IMAGE_TAG"
echo " - $REGISTRY/mosaic/orchestrator:$IMAGE_TAG"
echo " - $REGISTRY/mosaic/web:$IMAGE_TAG"
echo ""
echo " Note: Ensure you're logged in to the registry:"
echo " docker login $REGISTRY"
fi
# Deploy the stack
echo ""
echo "📦 Deploying stack..."
docker stack deploy -c $COMPOSE_FILE --with-registry-auth $STACK_NAME
IMAGE_TAG=$IMAGE_TAG docker stack deploy -c $COMPOSE_FILE --with-registry-auth $STACK_NAME
echo ""
echo "✅ Stack deployed successfully!"