#!/bin/bash # Build CI Docker Images for Gitea Actions Runner # - php-ci: PHP 8.5, Composer, Ansible, and other CI tools # - docker-build: Docker CLI, Buildx, Git, Bash set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" # PHP CI Image PHP_CI_IMAGE="${CI_IMAGE_NAME:-php-ci:latest}" REGISTRY="${CI_REGISTRY:-registry.michaelschiemer.de}" PHP_CI_REGISTRY_IMAGE="${REGISTRY}/ci/php-ci:latest" # Docker Build Image DOCKER_BUILD_IMAGE="${DOCKER_BUILD_IMAGE_NAME:-docker-build:latest}" DOCKER_BUILD_REGISTRY_IMAGE="${REGISTRY}/ci/docker-build:latest" echo "🔨 Building CI Docker Images..." echo "" echo "1. PHP CI Image: ${PHP_CI_IMAGE}" echo " Dockerfile: ${PROJECT_ROOT}/docker/ci/Dockerfile" echo "" echo "2. Docker Build Image: ${DOCKER_BUILD_IMAGE}" echo " Dockerfile: ${PROJECT_ROOT}/docker/ci/Dockerfile.build" cd "$PROJECT_ROOT" # Build PHP CI image echo "" echo "📦 Building PHP CI image..." docker build \ -f docker/ci/Dockerfile \ -t "${PHP_CI_IMAGE}" \ -t "${PHP_CI_REGISTRY_IMAGE}" \ --platform linux/amd64 \ . # Build Docker Build image echo "" echo "📦 Building Docker Build image..." docker build \ -f docker/ci/Dockerfile.build \ -t "${DOCKER_BUILD_IMAGE}" \ -t "${DOCKER_BUILD_REGISTRY_IMAGE}" \ --platform linux/amd64 \ . echo "" echo "✅ Images built successfully!" echo "" echo "📋 Next steps:" echo "" echo "1. Tag and push to registry (if using registry):" echo " docker login ${REGISTRY}" echo " docker push ${PHP_CI_REGISTRY_IMAGE}" echo " docker push ${DOCKER_BUILD_REGISTRY_IMAGE}" echo "" echo "2. Update GITEA_RUNNER_LABELS in .env:" echo " Add: php-ci:docker://${PHP_CI_IMAGE}" echo " Add: docker-build:docker://${DOCKER_BUILD_IMAGE}" echo "" echo "3. Or use registry images:" echo " Add: php-ci:docker://${PHP_CI_REGISTRY_IMAGE}" echo " Add: docker-build:docker://${DOCKER_BUILD_REGISTRY_IMAGE}" echo "" echo "4. Restart runner to pick up new labels:" echo " cd deployment/gitea-runner" echo " ./unregister.sh" echo " # Update .env with new labels" echo " ./register.sh" echo "" # Ask if user wants to push to registry if [ -n "$CI_REGISTRY" ] && [ -n "$CI_REGISTRY_USER" ] && [ -n "$CI_REGISTRY_PASSWORD" ]; then read -p "Push images to registry? (y/N) " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "🔐 Logging in to registry..." echo "$CI_REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin echo "📤 Pushing PHP CI image..." docker push "${PHP_CI_REGISTRY_IMAGE}" echo "📤 Pushing Docker Build image..." docker push "${DOCKER_BUILD_REGISTRY_IMAGE}" echo "✅ Images pushed to registry" fi fi