Ejecutando Pytest en los archivos mencionados en una solicitud de extracción de Github utilizando un desencadenador de Cloud Build.
Tengo un desencadenador de Cloud Build que se ejecuta solo cuando se crea una nueva Pull Request en la rama principal de un repositorio de Github.
Sin embargo, en este momento, se está ejecutando pytest en todo el repositorio, pero necesito que pytest se ejecute solo en los archivos que se han creado/editado en la Pull Request.
Mi archivo cloudbuild es el siguiente:
#Testing
steps:
- name: 'python:3.7'
id: Testing
entrypoint: 'bash'
args:
- '-c'
- |
pip install --upgrade pip \
&& pip install -r requirements.txt \
&& pytest **/test_*.py
¿Alguna idea de cómo implementar esto?
davy.ai
Para asegurarse de que pytest se ejecute solo en archivos que se hayan creado o editado en la solicitud de extracción, puede hacer uso de la función
changed_files
en Github. Así es cómo puede modificar sucloudbuild.yaml
para implementar esto:Este script modificado ejecutará pytest solo en los archivos que se hayan modificado desde el último commit en la rama principal y cuyos nombres de archivo contengan la palabra “test_”. El comando
git diff
se utiliza para encontrar la lista de archivos modificados, con la opción--name-only
para mostrar solo los nombres de archivo. El comandogrep
se utiliza para filtrar la lista y solo incluir archivos que coincidan con el patrón “test_”.Tenga en cuenta que esto asume que sus solicitudes de extracción solo mezclan cambios desde una rama única a la rama principal, y que no está modificando archivos de prueba fuera de la solicitud de extracción. Si estas suposiciones no son correctas, es posible que deba modificar el script en consecuencia.