{"id":25760350,"url":"https://github.com/miw-upm/iwvg-devops","last_synced_at":"2025-04-09T13:08:24.342Z","repository":{"id":60214614,"uuid":"102260254","full_name":"miw-upm/iwvg-devops","owner":"miw-upm","description":"Docencia con Devops. Ecosistema Software","archived":false,"fork":false,"pushed_at":"2025-03-05T09:55:47.000Z","size":36791,"stargazers_count":17,"open_issues_count":16,"forks_count":73,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-02T11:08:04.582Z","etag":null,"topics":["devops","docker","ecosystem","fork-workflow","git-workflow","github","java","maven","miw","open-api","render","scrum-agile","slack","sonarcloud","upm"],"latest_commit_sha":null,"homepage":"http://miw.etsisi.upm.es","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/miw-upm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-03T11:38:08.000Z","updated_at":"2025-03-29T14:19:39.000Z","dependencies_parsed_at":"2024-09-13T01:55:46.633Z","dependency_job_id":"347501fb-8127-4a21-b73d-4f32a4e53b76","html_url":"https://github.com/miw-upm/iwvg-devops","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miw-upm%2Fiwvg-devops","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miw-upm%2Fiwvg-devops/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miw-upm%2Fiwvg-devops/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/miw-upm%2Fiwvg-devops/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/miw-upm","download_url":"https://codeload.github.com/miw-upm/iwvg-devops/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248045233,"owners_count":21038553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","docker","ecosystem","fork-workflow","git-workflow","github","java","maven","miw","open-api","render","scrum-agile","slack","sonarcloud","upm"],"created_at":"2025-02-26T18:19:03.150Z","updated_at":"2025-04-09T13:08:24.318Z","avatar_url":"https://github.com/miw-upm.png","language":"Java","readme":"## [Máster en Ingeniería Web por la Universidad Politécnica de Madrid (miw-upm)](http://miw.etsisi.upm.es)\r\n## Ingeniería Web: Visión General (IWVG) DevOps\r\n\u003e Este proyecto es un apoyo docente de la asignatura. Cada release liberada corresponde al código utilizado en clase del curso indicado\r\n\r\n[![GitHub](https://img.shields.io/github/license/miw-upm/iwvg-devops?color=informational)](https://github.com/miw-upm/iwvg-devops/blob/develop/LICENSE.md)\r\n[![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/miw-upm/iwvg-devops?color=informational)](https://github.com/miw-upm/iwvg-devops/releases)\r\n![GitHub Release Date](https://img.shields.io/github/release-date/miw-upm/iwvg-devops?color=informational)\r\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/miw-upm/iwvg-devops)\r\n![GitHub issues](https://img.shields.io/github/issues/miw-upm/iwvg-devops?color=important)\r\n![GitHub closed issues](https://img.shields.io/github/issues-closed/miw-upm/iwvg-devops?color=informational)\r\n\r\n### Estado del código\r\n[![DevOps](https://github.com/miw-upm/iwvg-devops/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/miw-upm/iwvg-devops/actions/workflows/continuous-integration.yml)\r\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=es.upm.miw%3Aiwvg-devops\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=es.upm.miw%3Aiwvg-devops)\r\n[![Render broken](https://iwvg-devops-latest.onrender.com/version-badge)](https://iwvg-devops-latest.onrender.com/swagger-ui.html)\r\n\r\n\r\n### Tecnologías necesarias\r\n`Java` `Maven` `GitHub` `GitHub Actions` `Sonarcloud` `Slack` `Spring-Boot` `GitHub Packages` `Docker` `OpenAPI`\r\n\r\n### :gear: Instalación del proyecto\r\n1. Clonar el repositorio en tu equipo, **mediante consola**:\r\n```sh\r\n\u003e cd \u003cfolder path\u003e\r\n\u003e git clone https://github.com/miw-upm/iwvg-devops\r\n```\r\n2. Importar el proyecto mediante **IntelliJ IDEA**  \r\n   * **Open**, y seleccionar la carpeta del proyecto.\r\n\r\n### :gear: Ejecución en local\r\n* Ejecutar en el proyecto la siguiente secuencia de comandos de Docker ( :warning: **incluir el punto final** ):\r\n```sh\r\n\u003e docker build -t devops .\r\n\u003e docker run -d --name de[.gitignore](../spring-api-rest/.gitignore)vops-app  -p 8080:8080 devops\r\n```\r\n* Cliente Web: `http://localhost:8080`\r\n\r\n### :book: Diapositivas\r\n* [Diapositivas de DevOps](docs/miw-iwvg-devops-slides.pdf)   \r\n\r\n### :dvd: [Plantilla de la práctica en _docs/template-webflux.zip_](docs/template-webflux-3.4.zip)\r\n\r\n### :page_with_curl: IWVG. Devops. Enunciado de la práctica\r\n\u003e Todo el software deberá estar en ingles.\r\n\r\n#### 1. Crear un proyecto (**0.5 pto**)\r\nCrear un proyecto Maven llamado: **iwvg-devops-apellido-nombre**, versión **4.0.0**. Para ello se aporta **zip** de la\r\nplantilla.\r\n\u003e Recordar editar el pom y cambiar el nombre del artefacto (artifactId).   \r\n\u003e Recordar cambiar el nombre de la  carpeta.   \r\n\u003e Importarlo desde IntelliJ.   \r\n\u003e Crear un repositorio en GitHub con el mensaje del primer comit: \"Initial. Nombre Apellido\"   \r\n \r\n#### 2. Preparar la gestión mediante Scrum (**0.5 pto**)\r\n\u003e Crear un proyecto de gestión en GitHub y prepararlo para la metodología de Scrum (columnas, etiquetas, hitos...).   \r\n\r\n#### 3. Sprint 1. Preparación del ecosistema (**1.5 ptos**)\r\nSe crearán las siguientes 2 historias (**Issues**) pero se trabajarán en las ramas **develop** \u0026 **master**.\r\n\r\n* :one: Integración continua con **GitHub Actions**. Incluir **Badge** en README con **link**.\r\n* :two: Análisis del código con **Sonarcloud**. Incluir **Badge** en README con **link** a la cuenta de Sonar.\r\n\u003e :one:, :two:... representa el orden temporal de desarrollo de los issues.\r\n\r\n#### 4. Release (**0.5 pto**)\r\n\u003e Realizar la primera liberación del código (_**v.4.0.0-release**_)\r\n\r\n#### 5. Sprint 2. Preparación del software a desarrollar (**2 ptos**)\r\nSe crearán las siguientes 4 historias (**Issues**).\r\n* Clases :one:**Fraction** \u0026 :five:**FractionTest**.\r\n* Clases :two:**User** \u0026 :three:**UserTest**.\r\n* Clases :four:**UsersDatabase**.\r\n* Ampliación :six:**Fraction** \u0026 :seven:**FractionTest** con las funcionalidades: **isProper, isImproper, isEquivalent, add, multiply \u0026 divide**.\r\n\r\n\u003e :one:, :two:... representa el orden temporal de desarrollo de los issues. Cuando un issue se termine se debe incorporar a la rama **develop**. Las clases User, Fraction y UsersDatabase se podrán copiar de las dadas en clase.\r\n\r\n\u003e Realizar la segunda liberación del código (_**v.4.1.0-release**_)\r\n\r\n#### 6. Sprint 3. Preparación de cuatro búsquedas a partir de las siguientes, según el valor de las primeros cuatro valores distintos del último commit realizado de la liberación anterior, se creará una historia (**\r\nIssues**) por cada búsqueda, con el test correspondiente (**3.5 ptos**).\r\n\r\n* `0` Stream\u0026lt;String\u003e findUserFamilyNameInitialBySomeProperFraction();\r\n* `1` Stream\u0026lt;String\u003e findUserIdBySomeProperFraction();\r\n* `2` Fraction findFractionMultiplicationByUserFamilyName(String familyName);\r\n* `3` Fraction findFractionDivisionByUserId(String id);\r\n* `4` Double findFirstDecimalFractionByUserName(String name);\r\n* `5` Stream\u0026lt;String\u003e findUserIdByAllProperFraction();\r\n* `6` Stream\u0026lt;Double\u003e findDecimalImproperFractionByUserName(String name);\r\n* `7` Fraction findFirstProperFractionByUserId(String id);\r\n* `8` Stream\u0026lt;String\u003e findUserFamilyNameBySomeImproperFraction();\r\n* `9` Fraction findHighestFraction();\r\n* `a` Stream\u0026lt;String\u003e findUserNameBySomeImproperFraction();\r\n* `b` Stream\u0026lt;String\u003e findUserFamilyNameByAllNegativeSignFractionDistinct();\r\n* `c` Stream\u0026lt;Double\u003e findDecimalFractionByUserName(String name);\r\n* `d` Stream\u0026lt;Double\u003e findDecimalFractionByNegativeSignFraction();\r\n* `e` Fraction findFractionAdditionByUserId(String id);\r\n* `f` Fraction findFractionSubtractionByUserName(String name);\r\n\r\n\u003e Realizar la tercera liberación del código (_**v.4.2.0-release**_)\r\n\r\n#### 7. Bug (**1.5 ptos**)\r\n\u003e Suponer que la búsqueda 3 anterior no es buena y se debe proceder a modificarla. Realizar un cambio y proceder a la cuarta liberación del código (_**v.4.2.1-release**_).\r\n\r\n### :white_check_mark: Criterios transversales **con pérdida de puntos por falta de calidad**\r\n* Uso correcto del flujo de trabajo ramificado. **Hasta -3 ptos**. \r\n* Adecuación de la temporalidad de desarrollo según el enunciado. **Hasta -3 ptos**.\r\n* Mantenimiento de calidad del código según GitHub Actions, Sonar, Better Code Hub. Cobertura \u003e= 80%. **Hasta -2 ptos**.\r\n* Gestión adecuada, completa y equlibrada (estimación, tiempo real...) durante el desarrollo. **Hasta -2 ptos**.\r\n* Commits correctos y completos. **Hasta -2 ptos**. \r\n* Código limpio, bien formateado y ordenado. **Hasta -2 ptos**. \r\n* Uso del ingles. **Hasta -1 pto**.\r\n\r\n\r\n### :clap: Entraga de la práctica\r\nIndicar como texto en la subida la **URL de GitHub**\r\n\u003e **NOTA. Acordarse de dar al botón de envío**\r\n\r\nEjemplo resuelto:\r\n![](./docs/miw-iwvg-devops-demo.png)\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiw-upm%2Fiwvg-devops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmiw-upm%2Fiwvg-devops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmiw-upm%2Fiwvg-devops/lists"}