⚙️ Automatización

Configuración del Entorno de Desarrollo

Genere scripts para automatizar la configuración del entorno de desarrollo para nuevos miembros del equipo

★★☆ Intermedio 20 min 13 de enero de 2025

Caso de Uso

La incorporación de nuevos desarrolladores requiere configurar entornos de desarrollo consistentes. Cowork puede crear scripts de configuración completos que automatizan todo el proceso.

Ejemplo de Prompt

Necesito crear un script de configuración de entorno de desarrollo para nuestro equipo. El proyecto requiere:

- Node.js 20.x (mediante nvm)
- Python 3.11 (mediante pyenv)
- Docker Desktop
- PostgreSQL 15
- Redis
- VS Code con extensiones específicas
- Configuración de Git

Por favor, cree:
1. Un script setup.sh para macOS
2. Un setup.ps1 para Windows
3. Un script de verificación para comprobar que todo está instalado
4. Un README con pasos manuales si es necesario

Guarde en ~/Projects/team-setup/

Qué Hace Cowork

  1. Análisis de Requisitos: Analiza los requisitos de software
  2. Generación de Scripts: Crea instaladores específicos para cada plataforma
  3. Orden de Dependencias: Secuencia las instalaciones correctamente
  4. Verificación: Agrega comprobaciones de estado para cada componente
  5. Documentación: Genera guías de configuración

Salida de Ejemplo

#!/bin/bash
# setup.sh - Configuración del Entorno de Desarrollo para macOS

set -e

echo "🚀 Iniciando configuración del entorno de desarrollo..."

# Colores para la salida
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

# Verificar Homebrew
if ! command -v brew &> /dev/null; then
    echo "Instalando Homebrew..."
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi

# Instalar nvm
echo "📦 Instalando nvm..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Instalar Node.js 20
echo "📦 Instalando Node.js 20..."
nvm install 20
nvm use 20
nvm alias default 20

# Instalar pyenv
echo "🐍 Instalando pyenv..."
brew install pyenv
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
eval "$(pyenv init -)"

# Instalar Python 3.11
pyenv install 3.11.0
pyenv global 3.11.0

# Instalar Docker Desktop
echo "🐳 Instalando Docker..."
brew install --cask docker

# Instalar PostgreSQL 15
echo "🐘 Instalando PostgreSQL..."
brew install postgresql@15
brew services start postgresql@15

# Instalar Redis
echo "📮 Instalando Redis..."
brew install redis
brew services start redis

# Instalar VS Code
echo "📝 Instalando VS Code..."
brew install --cask visual-studio-code

# Extensiones de VS Code
echo "Instalando extensiones de VS Code..."
EXTENSIONS=(
    "ms-python.python"
    "dbaeumer.vscode-eslint"
    "esbenp.prettier-vscode"
    "ms-azuretools.vscode-docker"
    "eamodio.gitlens"
    "bradlc.vscode-tailwindcss"
)

for ext in "${EXTENSIONS[@]}"; do
    code --install-extension "$ext" || true
done

# Configuración de Git
echo "🔧 Configurando Git..."
read -p "Ingrese su nombre de Git: " git_name
read -p "Ingrese su correo de Git: " git_email
git config --global user.name "$git_name"
git config --global user.email "$git_email"
git config --global init.defaultBranch main
git config --global pull.rebase true

echo -e "${GREEN}✅ ¡Configuración completada!${NC}"
echo "Por favor, reinicie su terminal para que todos los cambios surtan efecto."
#!/bin/bash
# verify.sh - Verificar instalación

echo "🔍 Verificando instalaciones..."

check_command() {
    if command -v $1 &> /dev/null; then
        echo "✅ $1: $($1 --version 2>&1 | head -1)"
    else
        echo "❌ $1: NO ENCONTRADO"
        return 1
    fi
}

check_service() {
    if brew services list | grep "$1" | grep -q "started"; then
        echo "✅ Servicio $1: ejecutándose"
    else
        echo "❌ Servicio $1: no está ejecutándose"
        return 1
    fi
}

FAILED=0

check_command node || FAILED=1
check_command npm || FAILED=1
check_command python3 || FAILED=1
check_command docker || FAILED=1
check_command psql || FAILED=1
check_command redis-cli || FAILED=1
check_command code || FAILED=1
check_command git || FAILED=1

check_service postgresql@15 || FAILED=1
check_service redis || FAILED=1

if [ $FAILED -eq 0 ]; then
    echo ""
    echo "🎉 ¡Todas las verificaciones pasaron!"
else
    echo ""
    echo "⚠️  Algunas verificaciones fallaron. Por favor, revise arriba."
fi

Consejos

  • Mantenga los scripts idempotentes (seguros para ejecutar múltiples veces)
  • Incluya fijación de versiones para reproducibilidad
  • Agregue opciones de reversión/desinstalación
  • Pruebe en sistemas limpios antes de compartir