#!/bin/bash set -e GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # Elevação de privilégio if [ "$EUID" -ne 0 ]; then SUDO="sudo" else SUDO="" fi echo -e "${YELLOW}=== Configuração de Agentes de Teste Self-Hosted Azure (Modo Privilegiado) ===${NC}\n" # 1. Pega informações do usuário read -p "Digite a URL da sua organização Azure [default: https://dev.azure.com/Sittax]: " AZP_URL if [ -z "$AZP_URL" ]; then AZP_URL="https://dev.azure.com/Sittax"; fi echo -n "Digite o seu Personal Access Token (PAT): " read -s AZP_TOKEN echo "" read -p "Digite o nome do Pool de Teste [default: Automatizados]: " AZP_POOL if [ -z "$AZP_POOL" ]; then AZP_POOL="Automatizados"; fi read -p "Quantos agentes você deseja criar? [default: 2]: " NUM_AGENTS if [ -z "$NUM_AGENTS" ]; then NUM_AGENTS="2"; fi read -p "Prefixo dos agentes? [default: sittax-test]: " AGENTS_PREFIX if [ -z "$AGENTS_PREFIX" ]; then AGENTS_PREFIX="sittax-test"; fi if ! [[ "$NUM_AGENTS" =~ ^[0-9]+$ ]] || [ "$NUM_AGENTS" -lt 1 ]; then echo -e "${RED}Erro: A quantidade de agentes deve ser um número inteiro positivo.${NC}" exit 1 fi # 2. Credenciais do MinIO echo -e "\n${YELLOW}--- Configuração do MinIO (upload de artefatos das pipelines) ---${NC}" read -p "Digite o Access Key do MinIO: " MINIO_ACCESS_KEY echo -n "Digite o Secret Key do MinIO: " read -s MINIO_SECRET_KEY echo "" if [ -z "$MINIO_ACCESS_KEY" ] || [ -z "$MINIO_SECRET_KEY" ]; then echo -e "${YELLOW}AVISO: Credenciais do MinIO não informadas. Upload de artefatos não funcionará.${NC}" fi # 3. Gera o docker-compose.yml dinamicamente COMPOSE_FILE="docker-compose.yml" echo "services:" > $COMPOSE_FILE for (( i=1; i<=$NUM_AGENTS; i++ )) do AGENT_NAME="$AGENTS_PREFIX-$i" cat <> $COMPOSE_FILE $AGENT_NAME: build: context: . dockerfile: Dockerfile container_name: $AGENT_NAME restart: always privileged: true shm_size: '2gb' dns: - 8.8.8.8 - 1.1.1.1 tmpfs: - /tmp:rw,size=2g ulimits: nofile: soft: 65536 hard: 65536 volumes: - /var/run/docker.sock:/var/run/docker.sock - ${AGENT_NAME}-work:/home/azureuser/myagent/_work - /opt/sittax/cache/npm:/home/azureuser/.npm - /opt/sittax/cache/cypress:/home/azureuser/.cache/Cypress environment: - AZP_URL=$AZP_URL - AZP_TOKEN=$AZP_TOKEN - AZP_POOL=$AZP_POOL - AZP_AGENT_NAME=$AGENT_NAME - MINIO_ACCESS_KEY=$MINIO_ACCESS_KEY - MINIO_SECRET_KEY=$MINIO_SECRET_KEY EOF done # Seção de volumes nomeados (um por agente para evitar conflitos de checkout) echo "" >> $COMPOSE_FILE echo "volumes:" >> $COMPOSE_FILE for (( i=1; i<=$NUM_AGENTS; i++ )) do echo " $AGENTS_PREFIX-$i-work:" >> $COMPOSE_FILE done echo -e "\n${GREEN}Arquivo docker-compose.yml criado com $NUM_AGENTS agente(s) de teste!${NC}" # 4. Cria diretórios de cache compartilhados no host echo "Criando diretórios de cache no host..." $SUDO mkdir -p /opt/sittax/cache/npm /opt/sittax/cache/cypress $SUDO chmod 777 /opt/sittax/cache/npm /opt/sittax/cache/cypress # 5. Inicia os containers via Compose echo -e "\n${YELLOW}Iniciando build e subindo containers de teste...${NC}" $SUDO docker compose up -d --build echo -e "\n${GREEN}=== Configuração concluída! ===${NC}" echo "Seus agentes de teste foram iniciados em background com privilégios elevados." echo "Para monitorar: sudo docker compose logs -f"