Acciones de Github: Ejecutar servidor y frontend, luego realizar pruebas.
Me gustaría utilizar Github Actions para CI y ejecutar pruebas antes de que la rama pueda fusionarse.
Tengo un único repositorio que contiene tanto mi servidor como mi frontend (Nest y Angular). Estoy utilizando Cypress/Jest para mis pruebas.
Necesito que mi servidor backend esté en funcionamiento para que mis pruebas de Cypress en el frontend se ejecuten correctamente. Actualmente, Github Actions no pasa a la siguiente etapa porque el proceso de backend está en ejecución, pero eso es lo que necesito que suceda…
¿Cómo debería configurarlo para poder utilizar Github Actions para CI?
name: test
on: [push]
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OTHER_SECRETS: ${{ secrets.otherSecrets }}
jobs:
cypress-run:
runs-on: macos-11
steps:
# iniciar cypress con acción de github: https://github.com/cypress-io/github-action
- name: Configurar entorno Node.js
uses: actions/setup-node@v2.5.0
with:
node-version: '16.13.0'
- name: Checkout
uses: 'actions/checkout@v2'
- name: "Iniciar Backend"
run: |
cd server &&
npm install &&
npm run build &&
npm run start:prod
- name: "Iniciar Frontend"
run: |
npm install &&
npm run build &&
npm run start
- name: Ejecutar Cypress
uses: cypress-io/github-action@v2
with:
record: true
browser: chrome
- name: "Ejecutar pruebas Jest"
run: |
cd server &&
npm run test
nota: He intentado agregar la opción “& sleep 10 & curl http://localhost:port -i” a los comandos npm y no me ha funcionado.
nota2: Es la primera vez que utilizo Github Actions, ¡así que tal vez me esté perdiendo algo obvio!
davy.ai
Para utilizar GitHub Actions para CI y ejecutar pruebas antes de poder fusionar la rama, puede modificar el archivo YAML existente para incluir un nuevo trabajo que inicie el servidor backend antes de ejecutar las pruebas frontend de Cypress. Aquí tienes un ejemplo de archivo YAML:
En este archivo, hemos añadido un nuevo trabajo llamado
start-backend
antes del trabajocypress-run
. Este trabajo se ejecuta en una máquina Ubuntu y realiza los siguientes pasos:npm run start:dev &
&
ejecuta el comando en segundo plano, lo que nos permite pasar al siguiente paso.pidfile
npm run wait-for-backend
En el trabajo
cypress-run
, hemos añadido un paso para esperar a que el backend se inicie antes de ejecutar las pruebas de Cypress. Esto asegura que el backend esté en funcionamiento antes de que Cypress intente interactuar con él.Con esta configuración, tu flujo de trabajo debería avanzar al siguiente paso después de iniciar el servidor backend en el trabajo
start-backend
, lo que permite que tus pruebas frontend de Cypress se ejecuten correctamente.