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-23-24]Objetivo 6 #61

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
0eafc12
Creación workflow con Cloudbees close#59
cloudbees-platform[bot] Dec 27, 2023
d252755
Creación de workflow con Cloudbees close#59
cloudbees-platform[bot] Dec 27, 2023
7522055
Creación workflow con Cloudbees close #59
cloudbees-platform[bot] Dec 27, 2023
570ef99
Creación workflow cloudbees close #59
cloudbees-platform[bot] Dec 27, 2023
cae9a25
Creación workflow cloudbees close #59
cloudbees-platform[bot] Dec 27, 2023
6153286
Creación workflow cloudbees close #59
cloudbees-platform[bot] Dec 27, 2023
f6826fe
workflow cloudbees close #59
cloudbees-platform[bot] Dec 27, 2023
1a8d5f4
Actualizo y elimino errores cloudbees.yaml close #59
cloudbees-platform[bot] Jan 3, 2024
0a445d4
Actualizo workflow cloudbees close #59
cloudbees-platform[bot] Jan 3, 2024
3f92f9b
Subida archivo configuración appveyor close #59
Christianlr Jan 4, 2024
3c6e5c6
Añado archivo de configuración appveyor close #59
Christianlr Jan 4, 2024
707df1a
Añado configuración GHActions close #62
Christianlr Jan 4, 2024
cb378db
Añador criterios y elección para herramientas CI close #58
Christianlr Jan 4, 2024
8266fcd
Modifico archivo iv.yaml con apartado CI close #63
Christianlr Jan 4, 2024
8353f04
Añador apartado de elección herramientas CI close #64
Christianlr Jan 4, 2024
759da27
Modifico appveyor para docker close #65
Christianlr Jan 4, 2024
0d24e1a
Cambio de imagen en appveyor close #65
Christianlr Jan 4, 2024
8f0ff1e
Cambio la sentencia de ejecución en appveyor
Christianlr Jan 4, 2024
e746bab
Arreglo términos y explicaciones close #66
Christianlr Jan 5, 2024
dde8f3b
Cambio expresión en archivo con mayor contexto close #67
Christianlr Jan 5, 2024
80c1d0a
Elimino archivos no relevantes close #68
Christianlr Jan 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .cloudbees/workflows/cloudbees.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

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
28 changes: 28 additions & 0 deletions .github/workflows/ci_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: CI test
on:
push:

jobs:
build:
Christianlr marked this conversation as resolved.
Show resolved Hide resolved
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
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
11 changes: 11 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 1.0.{build}
image: Ubuntu

install:
- docker version
Copy link

Choose a reason for hiding this comment

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

Esto en realidad no hace nada...


build_script:
- docker build -t christianlr/mibarberschedule .
Copy link

Choose a reason for hiding this comment

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

¿Por qué necesitas construirlo? ¿No te lo puedes bajar directamente del repo?


test_script:
- docker run -tv `pwd`:/app/test christianlr/mibarberschedule
30 changes: 30 additions & 0 deletions docs/eleccion_herramienta_ci.md
Original file line number Diff line number Diff line change
@@ -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.
Christianlr marked this conversation as resolved.
Show resolved Hide resolved
### 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.
Christianlr marked this conversation as resolved.
Show resolved Hide resolved
- **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:
Christianlr marked this conversation as resolved.
Show resolved Hide resolved

- [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.
Christianlr marked this conversation as resolved.
Show resolved Hide resolved

### 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
Christianlr marked this conversation as resolved.
Show resolved Hide resolved

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.
Christianlr marked this conversation as resolved.
Show resolved Hide resolved
5 changes: 4 additions & 1 deletion iv.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,7 @@ entidad: src/agenda.ts
automatizar:
fichero: package.json
orden: pnpm run
test: tests/agenda_test.ts
test: tests/agenda_test.ts
CI:
- .github/workflows/ci_test.yml
- appveyor.yml