From 4b34747d04114b538864720a2b0119270ca9892f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marina=20Jun=20Carranza=20S=C3=A1nchez?= Date: Wed, 10 Jan 2024 21:25:21 +0100 Subject: [PATCH] =?UTF-8?q?Actualiza=20documentaci=C3=B3n=20CI,=20fixes=20?= =?UTF-8?q?#37?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se documenta la elección de las herramientas de CI consideradas y finalmente seleccionadas, lo que también se ve reflejado en el README. --- README.md | 1 + docs/eleccion-ci.md | 75 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index f71438b..0fd8baa 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Los [milestones](docs/milestones.md) o productos mínimamente viables. - Elección del [gestor de tareas](docs/gestor-tareas.md) - Elección de las [herramientas de test](docs/herramientas-test.md) - Elección de la [imagen base](docs/eleccion-imagen.md) +- Elección de las [herramientas de integración continua](docs/herramientas-test.md) ## Comprobación de sintaxis diff --git a/docs/eleccion-ci.md b/docs/eleccion-ci.md index f5a5358..6fdfeef 100644 --- a/docs/eleccion-ci.md +++ b/docs/eleccion-ci.md @@ -20,19 +20,70 @@ y una larga "esperanza de vida" mediante actualizaciones frecuentes. Etre las opciones de herramientas de CI, se encuentran: -* [**Jenkins**](): -* [**CircleCI**](): -* [**Atlassian Bamboo**](): -* [**GitLab**](): -* [**Bitbucket**](): -* [**Travis CI**]() -* [**TeamCity**]() -* [**Drone**]() -* [**Appveyor**]() -* [**Semaphore**]() -* [**Cirrus**]() -* [**Buildkite**]() +* [**Jenkins**](https://www.jenkins.io/): herramienta de automatización de código abierto +para construir, probar y desplegar software. Se terminó descartando +debido a su alta complejidad de configuración y al mayor esfuerzo +que requería su mantenimiento y administración. +* [**CircleCI**](https://circleci.com/): plataforma de CI/CD basada en la nube que permite +la construcción y prueba automatizadas de proyectos de software. Es +una opción sólida en general,aunque ya ha sido escogida varias veces. +* [**Atlassian Bamboo**](https://www.atlassian.com/es/software/bamboo): solución de CI/CD de Atlassian. Requiere +licencias de pago, lo que la descarta automáticamente. +* [**GitLab**](https://about.gitlab.com/): plataforma de desarrollo de ciclo de vida completo +que incluye funciones de CI/CD. Al ser un proyecto en GitHub, su +integración no es tan conveniente. +* [**Bitbucket**](https://bitbucket.org/product/es/features/pipelines): servicio de desarrollo de software que incluye +funciones de CI/CD. Mismo problema que con GitLab, están pensadas +para usarse de forma independiente, ya que requeriría la creación de +un proyecto entero en Bitbucket. +* [**Travis CI**](https://www.travis-ci.com/): servicio de CI/CD basado en la nube. Opción sólida +e interesante, aunque ya ha sido escogida por bastantes alumnos. +* [**TeamCity**](https://www.jetbrains.com/es-es/teamcity/): herramienta de CI/CD de JetBrains. De pago con una +versión gratis de varios días disponible. +* [**Drone**](https://www.drone.io/): plataforma de CI/CD basada en contenedores. +* [**Appveyor**](https://www.appveyor.com/): servicio de CI/CD para proyectos de Windows. Es una +opción interesante, pero ya ha sido escogida por varios alumnos. +* [**Semaphore**](https://semaphoreci.com/): plataforma de CI/CD en la nube. Opción sólida, pero +es de pago (aunque incluye una prueba gratis de varios días). +* [**Cirrus**](https://cirrus-ci.org/): plataforma de CI/CD en la nube. Opción sólida, pero +se ha seleccionado ya por algunos alumnos. +* [**Buildkite**](https://buildkite.com/): plataforma de CI/CD escalable y flexible. Dispone +de planes gratuitos y de pago, con una interfaz intuitiva y flexibilidad. ## Elección final y justificación +Tras el testeo de algunas (Semaphore, Cirrus, CircleCI...) se han +seleccionado finalmente dos de ellas: `GitHub Actions` (para la +comprobación de versiones de node) y `Buildkite` (para la [ejecución +de pruebas en docker](https://www.atomicjar.com/2023/11/running-testcontainers-tests-on-buildkite/)), debido a las siguientes razones: +1. *Compatibilidad con herramientas actuales*: tanto GitHub Actions +como Buildkite son compatibles con GitHub y Docker. GitHub Actions +ofrece soporte nativo para Node.js y Docker y Buildkite es una +plataforma flexible y escalable que permite integrarse con diversos entornos. +2. *Costo*: los servicios gratuitos ofrecidos por ambas herramientas +son más que suficientes para cumplis los requisitos del proyecto. +3. *Comunidad y mantenimiento*: GitHub Actions, como parte integral de +GitHub, cuenta con una comunidad masiva, con actualizaciones frecuentes +y soporte técnico sólido. Buildkite, aunque es un servicio más +independiente, también cuenta con una comunidad activa y su modelo +de código abierto para agentes permite una gran confianza en la +longevidad del servicio. + +## Versiones de Node probadas + +En el workflow de GitHub Actions `node.yml`, se prueban las siguientes +versiones de Node: + +1. *LTS (Long Term Support) anterior* (`lts/-1`): el lanzamiento LTS más +reciente antes del actual. Representa una versión estable y de largo +soporte. +2. *Versión actual* (`current`): es la versión más reciente y puede incluir +características más nuevas que aún no se han incorporado a las LTS. Se +prueba para comprobar que el código sea compatible con las características +más actuales de Node.js. +3. *El resto de versiones LTS* (`lts/*`): incluye todas las versiones LTS +disponibles. + +También podrían haberse probado más versiones estables (las que tienen +número par) y de desarrollo (impares).