Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[IV 22-23] : Objetivo 6 #72

Merged
merged 38 commits into from
Feb 9, 2023
Merged

[IV 22-23] : Objetivo 6 #72

merged 38 commits into from
Feb 9, 2023

Conversation

danielsp13
Copy link
Owner

@danielsp13 danielsp13 commented Feb 6, 2023

  • ¿Se ha evitado Circle CI, porque a estas alturas ya lo ha usado todo el
    mundo?
  • ¿Se han establecido criterios a priori para elegir el sistema de
    integración continua más conveniente y se han calificado los sistemas que
    cumplan esos requisitos según esos criterios?
  • ¿Se han examinado varios sistemas de integración continua?
  • ¿Se han configurado varios sistemas de integración continua?
  • ¿Se ha configurado correctamente el Checks API en los sistemas en los que sea necesario para que aparezca correctamente en GitHub (y se pueda comprobar desde los tests)?
  • ¿Uno de los sistemas configurados permite comprobar cuales son las versiones del lenguaje con las que funciona correctamente nuestra aplicación?
  • ¿Se escogen de forma adecuada las versiones del lenguaje que se testean, tanto en el sistema de CI como en el contenedor Docker?
  • ¿Se han justificado correctamente las versiones del lenguaje que se están testeando y se ha comprobado que no se comprueban varias veces lo mismo (la misma versión en CI y en el contenedor Docker en otro sistema CI?

@danielsp13
Copy link
Owner Author

7c407db y faff399 realmente refieren a #75

@github-actions github-actions bot mentioned this pull request Feb 7, 2023
3 tasks
@danielsp13
Copy link
Owner Author

Buenos días @JJ / revisor que vaya (o quiera) mirar este PR. Está listo para una revisión. Muchas gracias.

Copy link

@manujurado1 manujurado1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

¡Buenas de nuevo Daniel!

Me alegro que consiguieses alcanzar el objetivo 5 bastante rápido pese a esos problemillas que surgieron.
Le he echado un vistazo a tu PR y la verdad es que lo veo todo bien, solo te he comentado una cosilla que entiendo que ha sido una confusión puntual. Mucha suerte!


Se realizarán las pruebas en las siguientes versiones de Python, donde se han comparado todas las que hay en [Status of Python Versions](https://devguide.python.org/versions/), y se ha decidido tomar las que sean más interesantes para el testeo de la aplicación:

* **Python 3.11.1:** Esta versión es la que está en el *Contenedor Docker*, por lo que se hará esta comprobación en Cirrus. (Esta versión es la última lanzada que es estable).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Creo que esto lo has puesto al revés si no estoy yo equivocado. Ya que según he visto estás testeando desde docker usando GitHub Actions, por lo que presupongo que esta versión es la que tienes en docker ya que usas como imagen base la última versión estable.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❗ totalmente cierto, al final lo acabé haciendo al revés y se me pasó hacer este cambio. gracias!!

@@ -3,17 +3,13 @@
from supercatch.corrector import *
from supercatch.examen import Modelo, Examen

#=====================================================================

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Y bueno sobre esto es lo mismo que en el otro objetivo, no debería aparecer ya que no tiene relación, pero al ser simples comentarios dudo que tenga importancia. 👍

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esto lo único por lo que lo hice fue para pasar los tests a la hora de entregarlo, porque necesitaba que un último commit comprobase tareas (ya que las comprobaciones se lanzan únicamente cuando los cambios incluyen ficheros de código y no he hecho nada de esto en esta rama). Tuve en cuenta lo que me dijiste en el objetivo pero no tenía claro si cualquier commit servía así que por eso decidí hacerlo sobre esta rama por si la liaba.

@danielsp13
Copy link
Owner Author

@JJ, espero tu aprobación. 😄

Copy link

@JJ JJ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parece todo correcto, pero hay cosas en la configuración de cirrus que deberías revisar.

.cirrus.yml Outdated
image: python:${PYTHON_VERSION}-slim
install_script: |
apt-get update
apt-get install gcc libffi-dev -y
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

???

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#76 , es necesario

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a la hora de probarlo con github actions, no he tenido este problema porque al parecer la imagen que usa sí que o tiene un compilador, o lo resuelve de otra forma, mucho más lenta he de decir, me ha llegado a tardar 3 minutos, y realmente creo que sí me interesa probar esta versión que es la que está en desarrollo

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

y como está en desarrollo, relacionado con ese issue, estaban trabajando en una opción que permita la instalación como se ha venido haciendo en todas las versiones de python (pero está en discusión todavía)

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el problema viene de la instalación de poetry (se haga vía pip o curl), a partir de una dependencia llamada cffi, que es la que lanza estos problemas. lo único que se me ocurre es explorar si puedo instalar esta dependencia directamente.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

o no tener en cuenta esta versión y usar una por debajo de la 3.11, pero entre elegir una versión aleatoria sin ningún interés y la que está desarrollo, creo que está claro.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el problema viene de la instalación de poetry (se haga vía pip o curl), a partir de una dependencia llamada cffi, que es la que lanza estos problemas. lo único que se me ocurre es explorar si puedo instalar esta dependencia directamente.

De hecho voy a investigar esto que realmente creo que es lo mejor..., lo abordaré en un issue relacionado con el que le he indicado.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el problema viene de la instalación de poetry (se haga vía pip o curl), a partir de una dependencia llamada cffi, que es la que lanza estos problemas. lo único que se me ocurre es explorar si puedo instalar esta dependencia directamente.

OK, entonces es por poetry, no tanto por la versión. Tiene sentido, aunque es extraño que cirrus no se prepare para eso.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A menos que cffi se construya desde el fuente, tampoco veo la necesidad de que instales eso. Una opción es siempre ver la biblioteca que falla y ver si está empaquetada para Ubuntu o Debian. Muchas veces te evitas problemas de esa forma. Incluso, en este caso, instalar la versión de poetry que está empaquetada, siempre que use el Python del sistema (que supongo que lo hará)

Copy link
Owner Author

@danielsp13 danielsp13 Feb 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el problema viene de la instalación de poetry (se haga vía pip o curl), a partir de una dependencia llamada cffi, que es la que lanza estos problemas. lo único que se me ocurre es explorar si puedo instalar esta dependencia directamente.

OK, entonces es por poetry, no tanto por la versión. Tiene sentido, aunque es extraño que cirrus no se prepare para eso.

A mi también y sobre todo cuando al principio tenía pensado hacer estas comprobaciones con GitHub Actions. Acabé haciéndolo, y no me produjo ahí ningún tipo de fallo, salvo que la instalación de poetry tarda muchísimo en comparación con la versión 3.7, pero al fin y al cabo termina instalándolo todo sin problemas.

.cirrus.yml Outdated
@@ -0,0 +1,16 @@
task:
name: Verify Tests
skip: "!changesInclude('**.py')"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puede haber cambios en las dependencias que hay que testear también.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no se me había ocurrido la verdad, lo cambiaré.

@danielsp13
Copy link
Owner Author

danielsp13 commented Feb 8, 2023

@JJ, he corregido el cambio que me ha indicado. Con respecto a lo que hemos hablado referente a #76 (abordado en #78) he comprobado que la mejor forma de solucionarlo es como lo tengo actualmente, al menos hasta que los desarrolladores de cffi lancen un paquete que no requiera de compilación previa (no hay ahora mismo para esta versión de python) o se resuelva la discusión actual sobre incluir una opción en la forma de instalar los paquetes de python como en todas las versiones existentes hasta la 3.11.

He probado eso, y también utilizar otras imágenes base, donde se resuelve el problema en aquellas que disponen de gcc (las versiones más reducidas como slim, no dispone de esto).

@JJ
Copy link

JJ commented Feb 8, 2023

@JJ, he corregido el cambio que me ha indicado. Con respecto a lo que hemos hablado referente a #76 (abordado en #78) he comprobado que la mejor forma de solucionarlo es como lo tengo actualmente, al menos hasta que los desarrolladores de cffi lancen un paquete que no requiera de compilación previa (no hay ahora mismo para esta versión de python) o se resuelva la discusión actual sobre incluir una opción en la forma de instalar los paquetes de python como en todas las versiones existentes hasta la 3.11.

He probado eso, y también utilizar otras imágenes base, donde se resuelve el problema en aquellas que disponen de gcc (las versiones más reducidas como slim, no dispone de esto).

En general, debes tratar de proporcionar una solución mínima y viable a los problemas. ¿Has mirado si, como te digo, está empaquetado cffi para Debian? ¿Has visto esto? ¿O poetry directamente?

@danielsp13
Copy link
Owner Author

@JJ, en 30d9ad4 he resuelto la cuestión abordada en #78 con lo que me había enlazado en el último comentario, pero después de eso surgió #79, así que considero que lo mejor es dejarlo como lo tenía.

@JJ
Copy link

JJ commented Feb 8, 2023

Sólo se ejecutan los tests en Cirrus, no se ejecutan los tests en GitHub actions. En "checks passed" sólo muestra dos de ellos.

Copy link

@JJ JJ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aparte de lo encontrado, sigo viendo un problema que tengas que instalar gcc cada vez. Eso hace que un test tarde casi un minuto, de los cuales sólo un segundo es para el test en sí. Hay varias cuestiones

  • Nadie te obliga a que uses Cirrus. Si uno de tus requisitos es usar la versión rc de Python, deberías usar el runner en el que se pueda instalar sin necesidad de instalaciones adicionales.
  • Incluso aunque necesites hacerlo, estás ejecutando la matriz de versiones en Cirrus, ejecutando esa instalación en versiones (la 3.7) donde no necesitas
  • Incluso aunque necesites testear esa versión, tampoco te obliga nadie a que la ejecutes de esta forma. Lo más razonable para estas versiones es, precisamente, usar contenedores de test, que tendrían todo lo necesario instalado en la imagen y no tardarían un minuto en ejecutarse

Recuerda que no es la elección de herramienta la que tiene que condicionar tu configuración. Es tu configuración la que tiene que condicionar la elección de herramienta, de forma que se elija la más adecuada para las diferentes pruebas que se quieren hacer.

Si no te queda otro remedio que instalar una serie de herramientas (que no creo que sea el caso) conviene que configures una caché. Si lo que tarda mucho en la instalación es la parte de Python, seguro que es sencillo configurarla.

on:
push:
paths:
- '**.py'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Estos paths tendrías que modificarlos de la misma forma que el otro.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Entendido esto.

@danielsp13
Copy link
Owner Author

danielsp13 commented Feb 8, 2023

Sólo se ejecutan los tests en Cirrus, no se ejecutan los tests en GitHub actions. En "checks passed" sólo muestra dos de ellos.

Se ejecutan si los cambios incluye
código en el push, como es el caso de e4d9e85 (aquí el job job, ¿debo definir una comprobación diferente en GitHub actions?

@JJ
Copy link

JJ commented Feb 8, 2023

Sólo se ejecutan los tests en Cirrus, no se ejecutan los tests en GitHub actions. En "checks passed" sólo muestra dos de ellos.

Se ejecutan si los cambios incluye código en el push, como es el caso de e4d9e85, ¿debo definir una comprobación diferente en GitHub actions?

En general no, pero en este caso tengo que ir viendo check por check si se han ejecutado los dos o no. Normalmente cuando se está probando algo se incluyen los ficheros que se estén probando, en este caso los ficheros propios de los sistemas de CI. Luego se puede quitar después de fusionarlo.

@danielsp13
Copy link
Owner Author

Aparte de lo encontrado, sigo viendo un problema que tengas que instalar gcc cada vez. Eso hace que un test tarde casi un minuto, de los cuales sólo un segundo es para el test en sí. Hay varias cuestiones

  • Nadie te obliga a que uses Cirrus. Si uno de tus requisitos es usar la versión rc de Python, deberías usar el runner en el que se pueda instalar sin necesidad de instalaciones adicionales.
  • Incluso aunque necesites hacerlo, estás ejecutando la matriz de versiones en Cirrus, ejecutando esa instalación en versiones (la 3.7) donde no necesitas
  • Incluso aunque necesites testear esa versión, tampoco te obliga nadie a que la ejecutes de esta forma. Lo más razonable para estas versiones es, precisamente, usar contenedores de test, que tendrían todo lo necesario instalado en la imagen y no tardarían un minuto en ejecutarse

Recuerda que no es la elección de herramienta la que tiene que condicionar tu configuración. Es tu configuración la que tiene que condicionar la elección de herramienta, de forma que se elija la más adecuada para las diferentes pruebas que se quieren hacer.

Si no te queda otro remedio que instalar una serie de herramientas (que no creo que sea el caso) conviene que configures una caché. Si lo que tarda mucho en la instalación es la parte de Python, seguro que es sencillo configurarla.

Estoy de acuerdo, optaré por el segundo punto de lo que me comenta, que es lo que también he probado, porque el problema no es de cirrus es de utilizar una imagen que tenga ya todo lo que necesite como dice.

@danielsp13
Copy link
Owner Author

Sólo se ejecutan los tests en Cirrus, no se ejecutan los tests en GitHub actions. En "checks passed" sólo muestra dos de ellos.

Se ejecutan si los cambios incluye código en el push, como es el caso de e4d9e85, ¿debo definir una comprobación diferente en GitHub actions?

En general no, pero en este caso tengo que ir viendo check por check si se han ejecutado los dos o no. Normalmente cuando se está probando algo se incluyen los ficheros que se estén probando, en este caso los ficheros propios de los sistemas de CI. Luego se puede quitar después de fusionarlo.

Vale, los siguientes cambios inlcuirán eso también para que lo pueda ver. Le volveré a mencionar cuando tenga todo listo.

también se añade al path de Github Actions los ficheros de configuración de CI, sólo para testear.
es en lo que más tarda en instalar de las dependencias de poetry
@danielsp13
Copy link
Owner Author

@JJ resuelto. he combinado el uso de caché con una imagen que contiene directamente lo que se necesita.

Copy link

@JJ JJ left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@danielsp13 danielsp13 merged commit 8c29498 into main Feb 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants