|
| 1 | +# Ejercicios |
| 2 | + |
| 3 | +## Ejercios Jenkins |
| 4 | + |
| 5 | +### 1. CI/CD de una Java + Gradle |
| 6 | + |
| 7 | +En el directorio raíz de este [código fuente](./jenkins-resources/calcultor), crea un `Jenkinsfile` que contenga un pipeline declarativa con los siguientes stages: |
| 8 | + |
| 9 | +* **Checkout** descarga de código desde un repositorio remoto, preferentemente utiliza GitHub. |
| 10 | +* **Compile** compilar el código fuente, para ello utilizar `gradlew compileJava` |
| 11 | +* **Unit Tests** ejecutar los test unitarios, para ello utilizar `gradlew test` |
| 12 | + |
| 13 | +Para ejecutar Jenkins en local y tener las dependencias necesarias disponibles podemos contruir una imagen a partir de [este Dockerfile](./jenkins-resources/gradle.Dockerfile) |
| 14 | + |
| 15 | +### 2. Modificar la pipeline para que utilice la imagen Docker de Gradle como build runner |
| 16 | + |
| 17 | +## Ejercicios GitLab |
| 18 | + |
| 19 | +### 1. CI/CD de una aplicación spring |
| 20 | + |
| 21 | +* Crea un nuevo proyecto en GitLab y un repositorio en el mismo, para la aplicación `springapp`. El código fuente de la misma lo puedes encontrar en este [enlace](../02-gitlab/springapp). |
| 22 | +* Sube el código al repositorio recientemente creado en GitLab. |
| 23 | +* Crea una pipeline con los siguientes stages: |
| 24 | + * maven:build - En este `stage` el código de la aplicación se compila con [maven](https://maven.apache.org/). |
| 25 | + * maven:test - En este `stage` ejecutamos los tests utilizando [maven](https://maven.apache.org/). |
| 26 | + * docker:build - En este `stage` generamos una nueva imagen de Docker a partir del Dockerfile suministrado en el raíz del proyecto. |
| 27 | + * deploy - En este `stage` utilizamos la imagen anteriormente creada, y la hacemos correr en nuestro local |
| 28 | + |
| 29 | +* **Pistas**: |
| 30 | + - Utiliza la versión de maven 3.6.3 |
| 31 | + - El comando para realizar una `build` con maven: `mvn clean package` |
| 32 | + - El comando para realizar los tests con maven: `mvn verify` |
| 33 | + - Cuando despleguemos la aplicación en local, podemos comprobar su ejecución en: `http://localhost:8080` |
| 34 | + |
| 35 | +En resumen, la `pipeline` de `CI/CD`, debe hacer la build de la aplicación generando los ficheros jar, hacer los tests de maven y finalmente dockerizar la app (el dockerfile ya se proporciona en el repo) y hacer un deploy en local. |
| 36 | + |
| 37 | +### 2. Crear un usuario nuevo y probar que no puede acceder al proyecto anteriormente creado |
| 38 | + * Añadirlo con el role `guest`, comprobar que acciones puede hacer. |
| 39 | +* Cambiar a role `reporter`, comprobar que acciones puede hacer. |
| 40 | +* Cambiar a role `developer`, comprobar que acciones puede hacer. |
| 41 | +* Cambiar a role `maintainer`, comprobar que acciones puede hacer. |
| 42 | + |
| 43 | +* **Nota** (acciones a probar): |
| 44 | + - Commit |
| 45 | + - Ejecutar pipeline manualmente |
| 46 | + - Push and pull del repo |
| 47 | + - Merge request |
| 48 | + - Acceder a la administración del repo |
| 49 | + |
| 50 | +### 3. Crear un nuevo repositorio, que contenga una pipeline, que clone otro proyecto, springapp anteriormente creado. Realizarlo de las siguientes maneras: |
| 51 | + |
| 52 | +* Con el método de CI job permissions model |
| 53 | + - ¿Qué ocurre si el repo que estoy clonando no estoy cómo miembro? |
| 54 | + > Pista: https://docs.gitlab.com/ee/user/project/new_ci_build_permissions_model.html (Dependent Repositories) |
| 55 | + * Con el método deploy keys |
| 56 | + - Crear deploy key en el repo springapp y poner solo lectura |
| 57 | + - Crear pipeline que usando la deploy key |
| 58 | + > Pista: https://docs.gitlab.com/ee/ci/ssh_keys/ |
| 59 | + |
| 60 | + |
0 commit comments