Saltar a contenido

Configuración del entorno de desarrollo

Esta guía lo guiará en la configuración de un entorno de desarrollo local para omegaUp usando Docker.

Videotutorial

Tenemos un video tutorial que demuestra visualmente el proceso de configuración.

Requisitos previos

Antes de comenzar, asegúrese de tener instalado lo siguiente:

Usuarios de WSL

Si está utilizando WSL (Subsistema de Windows para Linux), siga la [guía oficial de integración de WSL de Docker Desktop] (https://docs.docker.com/desktop/features/wsl).

Configuración específica de Linux

Si está ejecutando Linux, después de instalar Docker, agregue su usuario al grupo de Docker:

sudo usermod -a -G docker $USER
Cierra sesión y vuelve a iniciarla para que los cambios surtan efecto.

Git Knowledge

Si no está seguro de usar Git, le recomendamos leer este tutorial de Git primero.

Paso 1: bifurcar y clonar el repositorio

  1. Bifurcar el repositorio: visita github.com/omegaup/omegaup y haz clic en el botón "Bifurcar"

  2. Clona tu tenedor:

    git clone --recurse-submodules https://github.com/YOURUSERNAME/omegaup
    cd omegaup
    

  3. Inicializar submódulos (si es necesario):
    git submodule update --init --recursive
    

Paso 2: Iniciar contenedores Docker

Configuración por primera vez

En su primera ejecución, extraiga las imágenes de Docker e inicie los contenedores:

docker-compose pull
docker-compose up --no-build
Esto tardará entre 2 y 10 minutos. Sabrá que está listo cuando vea un resultado similar a:

frontend_1     | Child frontend:
frontend_1     |        1550 modules
frontend_1     |     Child HtmlWebpackCompiler:
frontend_1     |            1 module
...

Ejecuciones posteriores

Después de la primera ejecución, puedes iniciar contenedores más rápido con:

docker compose up --no-build
La bandera --no-build evita reconstruir todo, acelerando significativamente el inicio.

Paso 3: acceda a su instancia local

Una vez que los contenedores se estén ejecutando, acceda a su instancia local de omegaUp en:

http://localhost:8001

Paso 4: Acceder a la consola del contenedor

Para ejecutar comandos dentro del contenedor:

docker exec -it omegaup-frontend-1 /bin/bash
El código base se encuentra en /opt/omegaup dentro del contenedor.

Cuentas de Desarrollo

Su instalación local incluye cuentas preconfiguradas:

Cuenta de administrador

  • Nombre de usuario: omegaup
  • Contraseña: omegaup
  • Rol: Administrador (privilegios de administrador de sistemas)

Cuenta de usuario habitual

  • Nombre de usuario: user
  • Contraseña: user
  • Rol: Usuario habitual

Cuentas de prueba

Para fines de prueba, puede utilizar estas cuentas de prueba:

Nombre de usuario Contraseña
test_user_0 test_user_0
test_user_1 test_user_1
... ...
course_test_user_0 course_test_user_0

Verificación por correo electrónico

En el modo de desarrollo, la verificación de correo electrónico está deshabilitada. Puede utilizar direcciones de correo electrónico ficticias al crear cuentas nuevas.

Ejecución de pruebas localmente

Si desea ejecutar pruebas de JavaScript/TypeScript fuera de Docker:

Requisitos previos

  1. Node.js: Versión 16 o superior
  2. Yarn: Administrador de paquetes

Pasos de configuración

  1. Inicializar submódulos de Git:
    git submodule update --init --recursive
    
    Esta descarga requiere dependencias:
  2. pagedown - Editor de rebajas
  3. iso-3166-2.js - Códigos de país/región
  4. csv.js - Análisis CSV
  5. mathjax - Representación matemática

  6. Instalar dependencias:

    yarn install
    

  7. Ejecutar pruebas:
    yarn test
    

Inicio rápido (clon nuevo)

Para un clon nuevo, use este único comando:

git clone --recurse-submodules https://github.com/YOURUSERNAME/omegaup
cd omegaup
yarn install
yarn test

Estructura de la base de código

El código base de omegaUp está organizado de la siguiente manera:

omegaup/
├── frontend/
│   ├── server/
│   │   └── src/
│   │       ├── Controllers/    # Business logic & API endpoints
│   │       ├── DAO/            # Data Access Objects
│   │       └── libs/           # Libraries & utilities
│   ├── www/                    # Frontend assets (TypeScript, Vue.js)
│   ├── templates/              # Smarty templates & i18n files
│   ├── database/               # Database migrations
│   └── tests/                  # Test files
Para obtener más detalles, consulte la Descripción general de la arquitectura.

Problemas comunes

La aplicación web no muestra mis cambios

Asegúrese de que Docker se esté ejecutando:

docker compose up --no-build
Si el problema persiste pide ayuda en los canales de comunicación de omegaUp.

El navegador redirige HTTP a HTTPS

Si su navegador sigue cambiando http a https para localhost, puede desactivar las políticas de seguridad para localhost. Consulte esta guía.

Error de MySQL no encontrado

Si encuentra este error al ingresar a GitHub:

FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/mysql'
Instale el cliente MySQL fuera del contenedor:

sudo apt-get install mysql-client mysql-server
Luego configure la conexión MySQL:

cat > ~/.mysql.docker.cnf <<EOF
[client]
port=13306
host=127.0.0.1
protocol=tcp
user=root
password=omegaup
EOF
ln -sf ~/.mysql.docker.cnf .my.cnf

Error de conexión MySQL

Si MySQL está instalado pero obtiene errores de conexión, asegúrese de que el archivo de configuración anterior esté configurado correctamente.

Próximos pasos

Obtener ayuda

Si encuentra problemas que no se tratan aquí:

  1. Consulte la Guía para obtener ayuda
  2. Busque [problemas de GitHub] existentes (https://github.com/omegaup/deploy/issues)
  3. Pregunta en nuestro servidor de Discord

¿Listo para comenzar a codificar? Dirígete a la Guía de contribución para saber cómo enviar tu primera solicitud de extracción.