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.

Resultados diferentes de cobertura de Jacoco en un entorno de acción de GitHub.

¿Existe alguna razón por la cual un informe de cobertura de Jacoco produce resultados diferentes al ejecutarlo en un entorno de CI?

Tengo la siguiente situación después de migrar a Java 17. Cuando ejecuto ./gradlew clean build, el informe se genera y la verificación de cobertura de jacocoTestCoverage no falla.

Pero cuando se ejecuta el mismo comando en un runner de Github, obtengo un resultado muy diferente, también se crea el informe de cobertura con diferentes valores de cobertura y algunas clases simplemente no pasan la verificación de cobertura.

Desafortunadamente, no puedo proporcionar fragmentos de código, pero ya intenté lo siguiente:

  • Ejecutar el runner de Github en mi máquina, con el mismo JDK y produce un resultado diferente si solo ejecuto la compilación en la línea de comandos 🙁
  • Añadir jvmargs noverify para las tareas de prueba
  • Ejecutar la acción de Github en un contenedor en lugar de un alojamiento propio, el mismo resultado
  • Otros desarrolladores también han construido el proyecto en diferentes máquinas sin error
  • Ejecutar el mismo comando de compilación del CI

Así que parece que algo en un entorno de acción de Github produce este comportamiento.

Versiones:

  • Plugin de jacoco: 0.8.7
  • Gradle 7.3
  • Java 17
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, puede haber varias razones por las que un informe de cobertura Jacoco pueda producir resultados diferentes cuando se ejecuta en un entorno de CI.

    Diferentes versiones JDK: La versión de JDK utilizada en el entorno de CI puede ser diferente de la utilizada localmente, lo que puede llevar a resultados diferentes.
    Diferentes versiones Gradle: La versión de Gradle utilizada en el entorno de CI puede ser diferente de la utilizada localmente, lo que puede llevar a resultados diferentes.
    Diferentes versiones del plugin Jacoco: La versión del plugin Jacoco utilizada en el entorno de CI puede ser diferente de la utilizada localmente, lo que puede llevar a resultados diferentes.
    Diferentes argumentos del JVM: Los argumentos del JVM utilizados en el entorno de CI pueden ser diferentes de los utilizados localmente, lo que puede llevar a resultados diferentes.
    Diferentes variables de entorno: Las variables de entorno utilizadas en el entorno de CI pueden ser diferentes de las utilizadas localmente, lo que puede llevar a resultados diferentes.
    Diferentes umbrales de cobertura de código: Los umbrales de cobertura de código utilizados en el entorno de CI pueden ser diferentes de los utilizados localmente, lo que puede llevar a resultados diferentes.

Comments are closed.