Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!