From 0eafc124c0ee74914e1878ebe9d54b8d7fda39d4 Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:35:38 +0000 Subject: [PATCH 01/21] =?UTF-8?q?Creaci=C3=B3n=20workflow=20con=20Cloudbee?= =?UTF-8?q?s=20close#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cloudbees/workflows/cloudbees.yaml | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .cloudbees/workflows/cloudbees.yaml diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml new file mode 100644 index 0000000..f4b7e5f --- /dev/null +++ b/.cloudbees/workflows/cloudbees.yaml @@ -0,0 +1,30 @@ +apiVersion: automation.cloudbees.io/v1alpha1 +kind: workflow +name: cloudbees + +on: + push: + branches: + - '**' + +jobs: + build: + runs-on: docker://ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20.9.0 + + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: 8.13.1 + + - name: Run tests + uses: docker://ubuntu-latest + run: pnpm run test \ No newline at end of file From d252755260079a32ddaf1aa474ea8eb57b44c872 Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:36:21 +0000 Subject: [PATCH 02/21] =?UTF-8?q?Creaci=C3=B3n=20de=20workflow=20con=20Clo?= =?UTF-8?q?udbees=20close#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From 752205574645af380103d4d006ef55ad4a71d7ba Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:38:42 +0000 Subject: [PATCH 03/21] =?UTF-8?q?Creaci=C3=B3n=20workflow=20con=20Cloudbee?= =?UTF-8?q?s=20close=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cloudbees/workflows/cloudbees.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index f4b7e5f..30546c1 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -8,9 +8,7 @@ on: - '**' jobs: - build: - runs-on: docker://ubuntu-latest - + ci-job: steps: - name: Checkout uses: actions/checkout@v3 From 570ef9974afccaee2551d3e8c52ad528c9a5790a Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:41:33 +0000 Subject: [PATCH 04/21] =?UTF-8?q?Creaci=C3=B3n=20workflow=20cloudbees=20cl?= =?UTF-8?q?ose=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cloudbees/workflows/cloudbees.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index 30546c1..43af543 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -10,6 +10,9 @@ on: jobs: ci-job: steps: + - uses: docker://ubuntu-latest + run: | + git config --global --add safe.directory /cloudbees/workspace - name: Checkout uses: actions/checkout@v3 From cae9a25e3dcb1c18385dd394eaad96c85c1b2ca3 Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:46:56 +0000 Subject: [PATCH 05/21] =?UTF-8?q?Creaci=C3=B3n=20workflow=20cloudbees=20cl?= =?UTF-8?q?ose=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cloudbees/workflows/cloudbees.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index 43af543..2cb50f8 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -1,7 +1,3 @@ -apiVersion: automation.cloudbees.io/v1alpha1 -kind: workflow -name: cloudbees - on: push: branches: From 615328606abd94ee40959c91eaf735dca45272cd Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:49:56 +0000 Subject: [PATCH 06/21] =?UTF-8?q?Creaci=C3=B3n=20workflow=20cloudbees=20cl?= =?UTF-8?q?ose=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cloudbees/workflows/cloudbees.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index 2cb50f8..ff49108 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -1,3 +1,8 @@ + +apiVersion: automation.cloudbees.io/v1 +kind: workflow +name: My automation + on: push: branches: From f6826fe47344c9ef719b2c48a34b69b16798a3c0 Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:59:32 +0000 Subject: [PATCH 07/21] workflow cloudbees close #59 --- .cloudbees/workflows/cloudbees.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index ff49108..8f0b7f6 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -1,5 +1,5 @@ -apiVersion: automation.cloudbees.io/v1 +apiVersion: automation.cloudbees.io/v1alpha1 kind: workflow name: My automation @@ -15,15 +15,15 @@ jobs: run: | git config --global --add safe.directory /cloudbees/workspace - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v1 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v1 with: node-version: 20.9.0 - name: Install pnpm - uses: pnpm/action-setup@v2 + uses: pnpm/action-setup@v1 with: version: 8.13.1 From 1a8d5f442a31978b1cb0d8def3027ee62accd34f Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 18:32:54 +0000 Subject: [PATCH 08/21] Actualizo y elimino errores cloudbees.yaml close #59 --- .cloudbees/workflows/cloudbees.yaml | 35 ++++++++++++----------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index 8f0b7f6..ba6fb25 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -1,4 +1,3 @@ - apiVersion: automation.cloudbees.io/v1alpha1 kind: workflow name: My automation @@ -9,24 +8,18 @@ on: - '**' jobs: - ci-job: + ci-job: steps: - - uses: docker://ubuntu-latest - run: | - git config --global --add safe.directory /cloudbees/workspace - - name: Checkout - uses: actions/checkout@v1 - - - name: Setup Node.js - uses: actions/setup-node@v1 - with: - node-version: 20.9.0 - - - name: Install pnpm - uses: pnpm/action-setup@v1 - with: - version: 8.13.1 - - - name: Run tests - uses: docker://ubuntu-latest - run: pnpm run test \ No newline at end of file + - uses: docker://alpine/git:latest + run: | + git config --global --add safe.directory /cloudbees/workspace + - name: checkout + uses: cloudbees-io/checkout@v1 + - name: Pull Docker Image + uses: docker://docker:stable + run: | + docker pull christianlr/mibarberschedule:latest + - name: Run Tests + uses: docker://docker:stable + run: | + docker run -v $(pwd):/app/test christianlr/mibarberschedule:latest From 0a445d4d9c77ae8871213414a5f4c5a4b7b80cc1 Mon Sep 17 00:00:00 2001 From: "cloudbees-platform[bot]" <138695131+cloudbees-platform[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 22:57:42 +0000 Subject: [PATCH 09/21] Actualizo workflow cloudbees close #59 --- .cloudbees/workflows/cloudbees.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml index ba6fb25..84f819a 100644 --- a/.cloudbees/workflows/cloudbees.yaml +++ b/.cloudbees/workflows/cloudbees.yaml @@ -1,3 +1,4 @@ + apiVersion: automation.cloudbees.io/v1alpha1 kind: workflow name: My automation @@ -15,10 +16,10 @@ jobs: git config --global --add safe.directory /cloudbees/workspace - name: checkout uses: cloudbees-io/checkout@v1 - - name: Pull Docker Image + - name: Build Docker Image uses: docker://docker:stable run: | - docker pull christianlr/mibarberschedule:latest + docker build -t christianlr/mibarberschedule:latest . - name: Run Tests uses: docker://docker:stable run: | From 3f92f9b280bcce581f1693eecc298a3860ed1c3c Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:15:17 +0100 Subject: [PATCH 10/21] =?UTF-8?q?Subida=20archivo=20configuraci=C3=B3n=20a?= =?UTF-8?q?ppveyor=20close=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..011e597 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,5 @@ +version: 1.0.{build} + +build: + + verbosity: minimal \ No newline at end of file From 3c6e5c6f2af287b19300c6f4a34e560acd850e34 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:35:07 +0100 Subject: [PATCH 11/21] =?UTF-8?q?A=C3=B1ado=20archivo=20de=20configuraci?= =?UTF-8?q?=C3=B3n=20appveyor=20close=20#59?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 011e597..e7f5618 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,4 @@ version: 1.0.{build} build: - verbosity: minimal \ No newline at end of file From 707df1a793d7bbc0ce33747267eedb57ed4a3303 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:36:15 +0100 Subject: [PATCH 12/21] =?UTF-8?q?A=C3=B1ado=20configuraci=C3=B3n=20GHActio?= =?UTF-8?q?ns=20close=20#62?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci_test.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/ci_test.yml diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml new file mode 100644 index 0000000..73523a4 --- /dev/null +++ b/.github/workflows/ci_test.yml @@ -0,0 +1,28 @@ +name: CI test +on: + push: + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + node-version: ['lts/-1', 'lts/*', 'current'] + steps: + + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Run test + run: pnpm run test From cb378dba2a4135dd0abc2ab33d224e1c072a17d6 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:37:00 +0100 Subject: [PATCH 13/21] =?UTF-8?q?A=C3=B1ador=20criterios=20y=20elecci?= =?UTF-8?q?=C3=B3n=20para=20herramientas=20CI=20close=20#58?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/eleccion_herramienta_ci.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 docs/eleccion_herramienta_ci.md diff --git a/docs/eleccion_herramienta_ci.md b/docs/eleccion_herramienta_ci.md new file mode 100644 index 0000000..800ba9e --- /dev/null +++ b/docs/eleccion_herramienta_ci.md @@ -0,0 +1,30 @@ +## Elección de la herramienta de integración continua +La integridad continua (CI) en el desarrollo de software implica la integración regular y automática de código con pruebas automatizadas frecuentes. Aporta beneficios al proyecto al detectar tempranamente errores, permitir entregas rápidas, mejorar la calidad del código, facilitar la colaboración en equipo, automatizar procesos de construcción y proporcionar retroalimentación inmediata. Por tanto, se determina para este proyecto una herramienta para llevar a cabo estos aspectos. +### Criterios de elección + +- **Que sea fácil de obtener y duradera**: Son muchas las herramientas que se pueden encontrar en la web, pero muchas de ellas vienen ligadas a cortos periodos de prueba y a pagos mensuales. Se debe encontrar una herramienta que sea gratuita y además tenga o sea accesible el mayor tiempo posible. +- **Integración con GitHub**: Esta herramienta que estamos buscando debe trabajar correctamente con GitHub y no debe tener problemas de integración con nuestro proyecto. +- **Compatibilidad con el proyecto**: Al querer establecer una integración continua para llevar correctamente a cabo los cambios que se hagan, seria ideal que se puedan realizar +buenas prácticas con aquellas herramientas que estamos usando (Docker, node, pnpm, etc). + +### Herramientas consideradas + +Hay gran variedad de herramientas disponibles para aportar CI a un proyecto. Principalmente debemos tener en cuenta el tamaño del proyecto que se desarrolla y, en cuanto a la herramienta, si es fácil de obtener (si está ligada a una suscripción o periodo corto de prueba). He tenido en cuenta aquellos criterios mencionados en [G2](https://www.g2.com/) para la elección. Se tienen en cuenta las siguientes: + +- [GitHub Actions](https://github.com/features/actions): Herramienta interna de GitHub la cual se integra con repositorios de este mismo sitio. Fácil acceso y permite buen mantenimiento junto con el proyecto. +- [Travis](https://www.travis-ci.com/): Ofrece un montaje muy sencillo y no necesita gran código para su configuración. Es muy flexible en cuando a adaptarse a ciertas configuraciones, requisitos y preferencias de un proyecto. +- [Circle CI](https://circleci.com/): Ofrece configuración flexible mediante archivos YAML y escalabilidad para proyectos de distintos tamaños. Su plan básico es gratuito con opciones de pago para características avanzadas. +- [Semaphore CI](https://semaphoreci.com/): Proporciona un enfoque simple y eficiente para la CI/CD, admitiendo múltiples lenguajes y entornos de ejecución. Ofrece planes gratuitos y de pago con características adicionales. +- [CloudBees](https://cloudbees.io/): Ofrece integración y orquestación continua para equipos ágiles, con soporte para pipelines complejas y despliegues continuos. Es una solución empresarial con opciones de pago. +- [TeamCityCI](https://www.jetbrains.com/es-es/teamcity/): Herramienta de CI/CD potente y altamente personalizable, con escalabilidad y compatibilidad con diferentes tecnologías. Tiene versiones gratuita y de pago para empresas y equipos grandes. +- [AppVeyor](https://www.appveyor.com/): Compatible con el proyecto y permite una configuración eficiente. Ofrece un plan gratuito con opciones de pago para características avanzadas. + +### Elección + +Una vez estudiadas las posibles opciones que se pueden encontrar, dentro de la gran multitud que hay, me decanto por Appveyor. Además, tambien usaré GitHub Actions, por ser una herramienta propia de GitHub. Al principio trabajé con CloudBees, pero debido a dificultades que he tenido con ella, me decanté por Appveyor. + +### En cuanto a las versiones... + +Las versiones que van a ser testeadas son las que encontramos en la página de [NodeJS](https://nodejs.org/en). Estas se basan en la versión current y las LTS. La principal diferencia que hay entre ellas es el soporte, siendo las versiones LTS las más . Por otro lado, la version "current", es decir, la actual, es aquella versión + +El principal motivo para el testeo de las versiones es que se detecten imcompatibilidades del proyecto en otras versiones que puedan ser usadas y así garantizar que el proyecto es compatible en las distintas versiones estables y de producción, como las LTS, junto con las versiones actuales, sus características y mejoras. From 8266fcdefc1629345458138693ca6efa58521fe4 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:38:17 +0100 Subject: [PATCH 14/21] =?UTF-8?q?Modifico=20archivo=20iv.yaml=20con=20apar?= =?UTF-8?q?tado=20CI=20close=20#63=20a=C3=B1ado=20apartado=20con=20los=20a?= =?UTF-8?q?rchivos=20de=20integraci=C3=B3n=20continua?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iv.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/iv.yaml b/iv.yaml index 83876d9..b1927b5 100644 --- a/iv.yaml +++ b/iv.yaml @@ -3,4 +3,7 @@ entidad: src/agenda.ts automatizar: fichero: package.json orden: pnpm run -test: tests/agenda_test.ts \ No newline at end of file +test: tests/agenda_test.ts +CI: + - .github/workflows/ci_test.yml + - appveyor.yml \ No newline at end of file From 8353f044693a984d991a4d1d98268ec326d26409 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 16:38:52 +0100 Subject: [PATCH 15/21] =?UTF-8?q?A=C3=B1ador=20apartado=20de=20elecci?= =?UTF-8?q?=C3=B3n=20herramientas=20CI=20close=20#64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 19754e6..1d97718 100644 --- a/README.md +++ b/README.md @@ -56,3 +56,5 @@ La imagen puede se puede encontrar [aquí](https://hub.docker.com/repository/doc * [Herramientas para los test](docs/test_tools.md) * [Elección de la imagen](docs/eleccion_imagen_base.md) + +* [Elección de las herramientas CI](docs/eleccion_herramienta_ci.md) From 759da27b23d8c1e0e8b10bf7365d76b987453f2f Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 17:03:21 +0100 Subject: [PATCH 16/21] =?UTF-8?q?Modifico=20appveyor=20para=20docker=20clo?= =?UTF-8?q?se=20#65=20a=C3=B1ado=20configuraci=C3=B3n=20para=20poder=20lan?= =?UTF-8?q?zar=20el=20contenedor=20y=20ejecutar=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index e7f5618..6755d9b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,11 @@ version: 1.0.{build} +image: Visual Studio 2019 -build: - verbosity: minimal \ No newline at end of file +install: + - docker version + +build_script: + - docker build -t christianlr/mibarberschedule . + +test_script: + - docker run christianlr/mibarberschedule From 0d24e1ab229cdd0fb31cf83ce30b2df9ab4a3607 Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 17:16:39 +0100 Subject: [PATCH 17/21] Cambio de imagen en appveyor close #65 --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 6755d9b..d1db826 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,5 @@ version: 1.0.{build} -image: Visual Studio 2019 +image: Ubuntu install: - docker version From 8f0ff1e749393f86625e31327140ddbd83217cff Mon Sep 17 00:00:00 2001 From: christianlr Date: Thu, 4 Jan 2024 17:20:26 +0100 Subject: [PATCH 18/21] =?UTF-8?q?Cambio=20la=20sentencia=20de=20ejecuci?= =?UTF-8?q?=C3=B3n=20en=20appveyor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index d1db826..5f872c2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -8,4 +8,4 @@ build_script: - docker build -t christianlr/mibarberschedule . test_script: - - docker run christianlr/mibarberschedule + - docker run -tv `pwd`:/app/test christianlr/mibarberschedule From e746babeeac9652206646ccfbec86b684ab8b5ea Mon Sep 17 00:00:00 2001 From: christianlr Date: Fri, 5 Jan 2024 13:16:13 +0100 Subject: [PATCH 19/21] =?UTF-8?q?Arreglo=20t=C3=A9rminos=20y=20explicacion?= =?UTF-8?q?es=20close=20#66=20expreso=20con=20mayor=20claridad=20puntos=20?= =?UTF-8?q?mencionados=20en=20la=20elecci=C3=B3n=20de=20herramientas=20CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/eleccion_herramienta_ci.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/eleccion_herramienta_ci.md b/docs/eleccion_herramienta_ci.md index 800ba9e..8a2c02c 100644 --- a/docs/eleccion_herramienta_ci.md +++ b/docs/eleccion_herramienta_ci.md @@ -1,15 +1,16 @@ ## Elección de la herramienta de integración continua -La integridad continua (CI) en el desarrollo de software implica la integración regular y automática de código con pruebas automatizadas frecuentes. Aporta beneficios al proyecto al detectar tempranamente errores, permitir entregas rápidas, mejorar la calidad del código, facilitar la colaboración en equipo, automatizar procesos de construcción y proporcionar retroalimentación inmediata. Por tanto, se determina para este proyecto una herramienta para llevar a cabo estos aspectos. +La integración continua (CI) en el desarrollo de software implica la integración regular y automática de código con pruebas automatizadas frecuentes. Aporta beneficios al proyecto al detectar tempranamente errores, permitir entregas rápidas, mejorar la calidad del código, facilitar la colaboración en equipo, automatizar procesos de construcción y proporcionar retroalimentación inmediata. Por tanto, se determina para este proyecto una herramienta para llevar a cabo estos aspectos. ### Criterios de elección - **Que sea fácil de obtener y duradera**: Son muchas las herramientas que se pueden encontrar en la web, pero muchas de ellas vienen ligadas a cortos periodos de prueba y a pagos mensuales. Se debe encontrar una herramienta que sea gratuita y además tenga o sea accesible el mayor tiempo posible. -- **Integración con GitHub**: Esta herramienta que estamos buscando debe trabajar correctamente con GitHub y no debe tener problemas de integración con nuestro proyecto. - **Compatibilidad con el proyecto**: Al querer establecer una integración continua para llevar correctamente a cabo los cambios que se hagan, seria ideal que se puedan realizar buenas prácticas con aquellas herramientas que estamos usando (Docker, node, pnpm, etc). ### Herramientas consideradas -Hay gran variedad de herramientas disponibles para aportar CI a un proyecto. Principalmente debemos tener en cuenta el tamaño del proyecto que se desarrolla y, en cuanto a la herramienta, si es fácil de obtener (si está ligada a una suscripción o periodo corto de prueba). He tenido en cuenta aquellos criterios mencionados en [G2](https://www.g2.com/) para la elección. Se tienen en cuenta las siguientes: +Hay gran variedad de herramientas disponibles para aportar CI a un proyecto. Principalmente debemos tener en cuenta el tamaño del proyecto que se desarrolla y, en cuanto a la herramienta, si es fácil de obtener (si está ligada a una suscripción o periodo corto de prueba). He tenido en cuenta aquellos criterios mencionados en [G2](https://www.g2.com/) para la elección, como pueden ser opiniones (aunque esto es algo subjetivo de cada uno) quizás con información de interés, algunas introducciones y definiciones de a que están enfocadas algunas herramientas como tambien a los apartados de características de cada uno, en los que se contienen datos como la funcionalidad, procesos que pueden llevar a cabo y gestiones. [En este enlace](https://www.g2.com/products/cloudbees/features), a modo de ejemplo, se muestran todos estos puntos para CloudBees, junto con comparaciones sobre aspectos relevantes. + +Entrando en las herramientas consideradas, se tienen en cuenta las siguientes: - [GitHub Actions](https://github.com/features/actions): Herramienta interna de GitHub la cual se integra con repositorios de este mismo sitio. Fácil acceso y permite buen mantenimiento junto con el proyecto. - [Travis](https://www.travis-ci.com/): Ofrece un montaje muy sencillo y no necesita gran código para su configuración. Es muy flexible en cuando a adaptarse a ciertas configuraciones, requisitos y preferencias de un proyecto. @@ -17,14 +18,16 @@ Hay gran variedad de herramientas disponibles para aportar CI a un proyecto. Pri - [Semaphore CI](https://semaphoreci.com/): Proporciona un enfoque simple y eficiente para la CI/CD, admitiendo múltiples lenguajes y entornos de ejecución. Ofrece planes gratuitos y de pago con características adicionales. - [CloudBees](https://cloudbees.io/): Ofrece integración y orquestación continua para equipos ágiles, con soporte para pipelines complejas y despliegues continuos. Es una solución empresarial con opciones de pago. - [TeamCityCI](https://www.jetbrains.com/es-es/teamcity/): Herramienta de CI/CD potente y altamente personalizable, con escalabilidad y compatibilidad con diferentes tecnologías. Tiene versiones gratuita y de pago para empresas y equipos grandes. -- [AppVeyor](https://www.appveyor.com/): Compatible con el proyecto y permite una configuración eficiente. Ofrece un plan gratuito con opciones de pago para características avanzadas. +- [AppVeyor](https://www.Appveyor.com/): Compatible con el proyecto y permite una configuración eficiente. Ofrece un plan gratuito con opciones de pago para características avanzadas. ### Elección -Una vez estudiadas las posibles opciones que se pueden encontrar, dentro de la gran multitud que hay, me decanto por Appveyor. Además, tambien usaré GitHub Actions, por ser una herramienta propia de GitHub. Al principio trabajé con CloudBees, pero debido a dificultades que he tenido con ella, me decanté por Appveyor. +Una vez estudiadas las posibles opciones que se pueden encontrar, dentro de la gran multitud que hay, me decanto por AppVeyor. Los principales motivos han sido la sencillez en cuanto a integridad y configuración. Bastaría con la creación de un archivo .yml al cual se le pueden añadir las ordenes que se consideren. Esto me sorprendió, ya que parto de herramientas como CloudBees, la cuál es algo más engorrosa a la hora de configuraciones y compatibilidades con ciertas ordenes. Otro aspecto que me ha hecho finalmente escoger a AppVeyor, es que la interfaz en la web es simple y concisa, mostrando lo más relevante a aquellos cambios que se hagan tanto en el proyecto como en el archivo de configuración. Por último y un aspecto que me ha gustado bastante es que, pese a ser más orientada a proyectos de Windows, ofrece una compatibilidad con aquellos proyectos que quizas contengan ordenes para Linux, como es el caso del montaje del contenedor de pruebas. Finalmente, ofrece un apartado para poder validar el archivo de configuración que se crea por si existe algún tipo de error. Al principio trabajé con CloudBees como he mencionado, pasando por otras herramientas como TeamCity CI e incluso considerando otras como las mencionadas, pero debido dichas dificultades que he tenido con ellas en cuando a inicio, configuración, ... me quedo con AppVeyor, y el cambio ha sido bastante rápido. + +Además, tambien usaré GitHub Actions, por ser una herramienta propia de GitHub. ### En cuanto a las versiones... -Las versiones que van a ser testeadas son las que encontramos en la página de [NodeJS](https://nodejs.org/en). Estas se basan en la versión current y las LTS. La principal diferencia que hay entre ellas es el soporte, siendo las versiones LTS las más . Por otro lado, la version "current", es decir, la actual, es aquella versión +Las versiones que van a ser testeadas son las que encontramos en la página de [NodeJS](https://nodejs.org/en). Estas se basan en la versión current y las LTS. La principal diferencia que hay entre ellas es el soporte, siendo las versiones LTS las que más soporte tienen a largo plazo y están destinadas a entornos de producción. Por otro lado, la version "current", es decir, la actual, es aquella versión más estable. Aunque no tiene un soporte tan duradero como las LTS, están destinadas a ser versiones que ofrecen las últimas funcionalidades posibles. -El principal motivo para el testeo de las versiones es que se detecten imcompatibilidades del proyecto en otras versiones que puedan ser usadas y así garantizar que el proyecto es compatible en las distintas versiones estables y de producción, como las LTS, junto con las versiones actuales, sus características y mejoras. +El propósito principal de probar distintas versiones de Node.js radica en identificar posibles incompatibilidades del proyecto con las diferentes versiones que podrían ser utilizadas. Este proceso garantiza la compatibilidad del proyecto tanto con las versiones estables y de producción, como las LTS (con soporte a largo plazo), como con las versiones actuales que ofrecen las características y mejoras más recientes. From dde8f3b4bbc14581ba2db73ddbd797cafaf56863 Mon Sep 17 00:00:00 2001 From: christianlr Date: Fri, 5 Jan 2024 13:17:41 +0100 Subject: [PATCH 20/21] =?UTF-8?q?Cambio=20expresi=C3=B3n=20en=20archivo=20?= =?UTF-8?q?con=20mayor=20contexto=20close=20#67=20Se=20quieren=20lanzar=20?= =?UTF-8?q?test,=20por=20lo=20que=20no=20tiene=20sentido=20tener=20'build'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml index 73523a4..1cd8dc9 100644 --- a/.github/workflows/ci_test.yml +++ b/.github/workflows/ci_test.yml @@ -3,7 +3,7 @@ on: push: jobs: - build: + test: runs-on: ubuntu-latest strategy: matrix: From 80c1d0ac531648bd1929d10fef01520a880b56f8 Mon Sep 17 00:00:00 2001 From: christianlr Date: Fri, 5 Jan 2024 13:31:03 +0100 Subject: [PATCH 21/21] Elimino archivos no relevantes close #68 --- .cloudbees/workflows/cloudbees.yaml | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 .cloudbees/workflows/cloudbees.yaml diff --git a/.cloudbees/workflows/cloudbees.yaml b/.cloudbees/workflows/cloudbees.yaml deleted file mode 100644 index 84f819a..0000000 --- a/.cloudbees/workflows/cloudbees.yaml +++ /dev/null @@ -1,26 +0,0 @@ - -apiVersion: automation.cloudbees.io/v1alpha1 -kind: workflow -name: My automation - -on: - push: - branches: - - '**' - -jobs: - ci-job: - steps: - - uses: docker://alpine/git:latest - run: | - git config --global --add safe.directory /cloudbees/workspace - - name: checkout - uses: cloudbees-io/checkout@v1 - - name: Build Docker Image - uses: docker://docker:stable - run: | - docker build -t christianlr/mibarberschedule:latest . - - name: Run Tests - uses: docker://docker:stable - run: | - docker run -v $(pwd):/app/test christianlr/mibarberschedule:latest