Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

290
Vistas
Gitlab CI: el servidor se 'elimina' antes de que se puedan ejecutar las pruebas de Cypress

Estoy ejecutando una canalización de CI en Gitlab que ejecuta algunas pruebas de integración de Cypress como parte de la etapa de prueba. Las pruebas funcionan absolutamente bien en mi máquina localmente, pero cuando intento ejecutarlas en Gitlab CI, parece que el ejecutor de Gitlab está matando mi servidor local antes de que pueda ejecutar mis pruebas de Cypress en él. Aquí está mi configuración de Gitlab:

 variables: API_BASE_URL: https://t.local.um.io/api CYPRESS_API_BASE_URL: https://t.local.um.io/api npm_config_cache: '$CI_PROJECT_DIR/.npm' CYPRESS_CACHE_FOLDER: '$CI_PROJECT_DIR/cache/Cypress' cache: paths: - node_modules/ - cache/Cypress stages: - install - build - tests install: image: cypress/browsers:node14.15.0-chrome86-ff82 stage: install cache: key: 'e2eDeps' paths: - node_modules/ - cache/Cypress/ script: - npm ci build: stage: build dependencies: - install script: - npm run build artifacts: expire_in: 1 days when: on_success tests: image: cypress/browsers:node14.15.0-chrome86-ff82 stage: tests script: - npm ci - npm run test:ci

Y aquí están los scripts relevantes de package.json que la configuración anterior ejecuta en CI:

 "scripts": { "build": "webpack --config webpack.prod.js", "dev": "webpack serve --config webpack.dev.js", "start:ci": "export NODE_OPTIONS=--max_old_space_size=4096 serve dist --no-clipboard --listen ${PORT:-3000}", "test": "cross-env NODE_ENV=test && npm run test:cypress && npm run test:jest", "test:ci": "cross-env NODE_ENV=test && start-server-and-test start:ci http-get://localhost:3000 test", "test:cypress": "cypress run --headless --browser chrome", "test:jest": "jest", },

Es la etapa final de tests la que actualmente está fallando. Aquí está la salida de la consola del corredor Gitlab, puede ver donde dice 'matado' y luego 'err no 137', parece que simplemente detiene el proceso start:ci , que es lo que ejecuta mi servidor local para que las pruebas de integración puedan ejecutarse contra a ellos.

ingrese la descripción de la imagen aquí

Finalmente, aquí hay un pequeño fragmento de mi prueba, uso el comando cy.visit que nunca responde cuando el servidor se apaga:

 describe('Code entry page - API responses are managed correctly', () => { beforeEach(() => { cy.visit(routes.APP.HOME); // this just times out }); ...

EDITAR He intentado ejecutar el script test:ci dentro del mismo contenedor docker que usa ( cypress/browsers:node14.15.0-chrome86-ff82 ) localmente (no en gitlabci) y funciona sin problemas. ¿El problema debe estar en Gitlab seguramente?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El error 137 generalmente significa que su contenedor Docker se eliminó debido a que no tenía suficientes recursos. Como mencioné en los comentarios, su contenedor actual se ejecuta con 4 GB de memoria. Dado que no está definiendo claves de tag dentro de su CI/CD, es probable que esté ejecutando en la nube del corredor de Linux de GitLab, que se ejecuta con una instancia n1-standard-1 en GCP, que está limitada a 3,75 GB de RAM. Esencialmente, tan pronto como se inicia su contenedor de prueba, consume instantáneamente toda la memoria disponible en el corredor y su contenedor se elimina.

Para sortear la limitación de memoria, debe ejecutar su propio gitlab-runner. No hay forma de ejecutar usando una mayor cantidad de memoria en la nube del corredor compartido. Puede probar esto con bastante facilidad activando un gitlab-runner en su máquina local ( consulte las instrucciones aquí para instalar un gitlab runner). Una vez que haya instalado su corredor, registre su corredor en la etiqueta high-memory , luego actualice su CI/CD para usar esa etiqueta usando la siguiente sintaxis en ese último trabajo:

 tests: image: cypress/browsers:node14.15.0-chrome86-ff82 stage: tests tags: - high-memory script: - npm ci - npm run test:ci

Sus trabajos pueden usar tanta memoria como haya asignado su ejecutor. Si su máquina tiene 8 Gb de memoria, los trabajos podrán usar hasta 8 Gb de memoria.

Si su máquina no tiene suficiente memoria por sí misma, siempre puede activar temporalmente una instancia en la nube con suficiente memoria. Podrías probar una gota digital del océano con 16GB de memoria por 0.11c/hora, por ejemplo. Esto le permitiría ejecutar una instancia durante un par de horas para probar la solución antes de determinar qué es viable a largo plazo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda