es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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 su cloudbuild.yaml para implementar esto:

    # Prueba
    steps:
    - name: 'python:3.7'
      id: Prueba
      entrypoint: 'bash'
      args:
        - '-c'
        - |
           pip install --upgrade pip \
           && pip install -r requirements.txt \
           && pytest $(git diff --name-only HEAD $(git merge-base HEAD master) | grep test_)
    

    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 comando grep 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.

Comments are closed.