#!/bin/bash # Comprehensive Docker-based CI/CD testing script # Tests workflows locally using Docker containers set -e echo "๐Ÿณ Docker-based CI/CD Testing" echo "================================" # 1. Check Docker is available if ! command -v docker >/dev/null 2>&1; then echo "โŒ Docker not found. Please install Docker first." echo " https://docs.docker.com/get-docker/" exit 1 fi echo "โœ… Docker is available" # 2. Pull required images echo "" echo "๐Ÿ“ฆ Pulling Docker images..." docker pull gitea/act_runner:latest docker pull pipelinecomponents/yamllint:latest docker pull mikefarah/yq:latest echo "โœ… Images pulled successfully" # 3. Validate YAML syntax with yq echo "" echo "๐Ÿ” Validating YAML syntax..." docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ mikefarah/yq:latest \ yq eval .gitea/workflows/go-ci-cd.yaml > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "โœ… YAML syntax is valid" else echo "โŒ YAML syntax error" docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ mikefarah/yq:latest \ yq eval .gitea/workflows/go-ci-cd.yaml || true exit 1 fi # 4. Lint YAML with yamllint echo "" echo "๐Ÿงน Linting YAML..." docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ pipelinecomponents/yamllint:latest \ yamllint .gitea/workflows/ if [ $? -eq 0 ]; then echo "โœ… YAML linting passed" else echo "โŒ YAML linting failed" exit 1 fi # 5. Run workflow with act echo "" echo "๐Ÿš€ Running CI/CD workflow..." docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ -e GITEA_INTERNAL="https://gitea.arcodange.lab/" \ -e GITEA_EXTERNAL="https://gitea.arcodange.fr/" \ -e GITEA_ORG="arcodange" \ -e GITEA_REPO="DanceLessonsCoach" \ gitea/act_runner:latest \ act -W .gitea/workflows/go-ci-cd.yaml --rm if [ $? -eq 0 ]; then echo "โœ… Workflow executed successfully" else echo "โŒ Workflow execution failed" exit 1 fi echo "" echo "๐ŸŽ‰ All CI/CD tests passed!" echo "================================" echo "๐Ÿ“ Workflow: .gitea/workflows/ci-cd.yaml" echo "โœ… YAML syntax validated" echo "โœ… YAML linting passed" echo "โœ… Workflow execution successful" echo "๐ŸŽฏ Ready for production deployment" echo "" echo "๐Ÿ’ก Next Steps:" echo " 1. Commit changes: git commit -m '๐Ÿค– ci: update workflow'" echo " 2. Push to trigger: git push origin main" echo " 3. Monitor pipeline: https://gitea.arcodange.lab/arcodange/DanceLessonsCoach/actions" echo " 4. Check badges: https://gitea.arcodange.fr/arcodange/DanceLessonsCoach"