#!/bin/bash set -e GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' echo -e "${YELLOW}=== Preparando Máquina Ubuntu 24.04 para Agentes Jenkins (TESTE E2E) ===${NC}" if [ "$EUID" -ne 0 ]; then echo -e "${YELLOW}Elevação de privilégio necessária para instalar pacotes no Host...${NC}" SUDO="sudo" else SUDO="" fi $SUDO apt-get update $SUDO apt-get install -y ca-certificates curl gnupg lsb-release jq git unzip wget apt-transport-https # Docker Engine no HOST if ! command -v docker &> /dev/null; then echo -e "${YELLOW}Docker não encontrado no Host. Instalando Docker Engine...${NC}" $SUDO install -m 0755 -d /etc/apt/keyrings $SUDO curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc $SUDO chmod a+r /etc/apt/keyrings/docker.asc echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ $SUDO tee /etc/apt/sources.list.d/docker.list > /dev/null $SUDO apt-get update $SUDO apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin $SUDO systemctl enable docker $SUDO systemctl start docker else echo -e "${GREEN}Docker já instalado no Host.${NC}" fi # Otimiza o daemon do Docker echo "Configurando daemon do Docker..." $SUDO tee /etc/docker/daemon.json > /dev/null <<'DAEMON_EOF' { "log-driver": "local", "log-opts": { "max-size": "50m", "max-file": "3" }, "max-concurrent-downloads": 10, "max-concurrent-uploads": 5 } DAEMON_EOF $SUDO systemctl restart docker # Limites de GC do BuildKit $SUDO mkdir -p /etc/buildkit $SUDO tee /etc/buildkit/buildkitd.toml > /dev/null <<'BUILDKIT_EOF' [worker.oci] gc = true gckeepstorage = 20480 BUILDKIT_EOF # Cron no host: limpa cache buildx a cada 6h echo "0 */6 * * * root docker buildx prune --reserved-space 15gb -f 2>/dev/null" | \ $SUDO tee /etc/cron.d/docker-buildx-prune > /dev/null $SUDO chmod 0644 /etc/cron.d/docker-buildx-prune # Diretório de trabalho WORK_DIR="/opt/sittax/jenkins-self-host-test" echo "Criando ambiente em $WORK_DIR..." $SUDO mkdir -p "$WORK_DIR" cd "$WORK_DIR" CDN_BASE="https://script.sittax.com.br/jenkins/self-host-test" echo "Baixando arquivos do CDN..." $SUDO curl -fsSLO "$CDN_BASE/Dockerfile" $SUDO curl -fsSLO "$CDN_BASE/setup-agents.sh" $SUDO curl -fsSLO "$CDN_BASE/start.sh" $SUDO curl -fsSLO "$CDN_BASE/docker-prune.sh" $SUDO sed -i 's/\r$//' setup-agents.sh start.sh docker-prune.sh $SUDO chmod +x setup-agents.sh start.sh docker-prune.sh echo -e "\n${GREEN}Servidor de Testes E2E provisionado para Jenkins!${NC}" echo -e "Iniciando o setup interativo dos agentes...\n" if [ -t 0 ]; then $SUDO ./setup-agents.sh else $SUDO bash -c "./setup-agents.sh < /dev/tty" fi