|
1 | 1 | # Ejercicios |
2 | | - |
| 2 | + |
3 | 3 | ## Ejercios Jenkins |
4 | | - |
| 4 | + |
5 | 5 | ### 1. CI/CD de una Java + Gradle |
6 | | - |
7 | | -En el directorio raíz de este [codigo fuente](), crea un `Jenkinsfile` que contenga un pipeline declarativa con los siguinetes stages: |
8 | | - |
| 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 | 9 | * **Checkout** descarga de código desde un repositorio remoto, preferentemente utiliza GitHub. |
10 | 10 | * **Compile** compilar el código fuente, para ello utilizar `gradlew compileJava` |
11 | 11 | * **Unit Tests** ejecutar los test unitarios, para ello utilizar `gradlew test` |
12 | | - |
| 12 | + |
13 | 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 runners |
16 | | - |
| 14 | + |
| 15 | +### 2. Modificar la pipeline para que utilice la imagen Docker de Gradle como build runners |
| 16 | + |
17 | 17 | ## Ejercicios GitLab |
18 | | - |
| 18 | + |
19 | 19 | ### 1. CI/CD de una aplicación spring |
20 | | - |
| 20 | + |
21 | 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 | 22 | * Sube el código al repositorio recientemente creado en GitLab. |
23 | 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 | | - |
| 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 | 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 | | - |
| 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 | 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 usario nuevo y probar que no puede acceder al proyecto anteriormente creado |
38 | | - |
39 | | -* Añadirlo con el role `guest`, comprobar que acciones puede hacer. |
| 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. |
40 | 39 | * Cambiar a role `reporter`, comprobar que acciones puede hacer. |
41 | 40 | * Cambiar a role `developer`, comprobar que acciones puede hacer. |
42 | 41 | * Cambiar a role `maintainer`, comprobar que acciones puede hacer. |
43 | | - |
| 42 | + |
44 | 43 | * **Nota** (acciones a probar): |
45 | | - - Commit |
46 | | - - Ejecutar pipeline manualmente |
47 | | - - Push and pull del repo |
48 | | - - Merge request |
49 | | - - Acceder a la administracion del repo |
50 | | - |
| 44 | + - Commit |
| 45 | + - Ejecutar pipeline manualmente |
| 46 | + - Push and pull del repo |
| 47 | + - Merge request |
| 48 | + - Acceder a la administración del repo |
| 49 | + |
51 | 50 | ### 3. Crear un nuevo repositorio, que contenga una pipeline, que clone otro proyecto, springapp anteriormente creado. Realizarlo de las siguientes maneras: |
52 | | - |
53 | | -* Con el método de CI job permissions model |
54 | | - - ¿Que ocurre si el repo que estoy clonando no estoy cómo miembro? |
55 | | - |
56 | | -> Pista: https://docs.gitlab.com/ee/user/project/new_ci_build_permissions_model.html (Dependent Repositories) |
57 | | - |
58 | | -* Con el método deploy keys |
59 | | - - Crear deploy key en el repo springapp y poner solo lectura |
60 | | - - Crear pipeline que usando la deploy key |
61 | 51 |
|
62 | | -> Pista: https://docs.gitlab.com/ee/ci/ssh_keys/ |
| 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