Skip to content

Commit

Permalink
Actualiza documentación CI, fixes #37
Browse files Browse the repository at this point in the history
Se documenta la elección de las herramientas de CI consideradas y finalmente seleccionadas, lo que también se ve reflejado en el README.
  • Loading branch information
marinajcs committed Jan 10, 2024
1 parent ad10ade commit 4b34747
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 12 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
75 changes: 63 additions & 12 deletions docs/eleccion-ci.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

0 comments on commit 4b34747

Please sign in to comment.