Skip to content

Commit 583b68f

Browse files
authored
Merge pull request #16 from Lemoncode/feature/ci-cd_exercises
Feature/ci cd exercises
2 parents ea8663e + adb77e4 commit 583b68f

File tree

12 files changed

+92
-1
lines changed

12 files changed

+92
-1
lines changed

03-cd/02-gitlab/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ user@localhost:~02-gitlab/$ sudo vagrant up
7474
- Redeploy de la aplicación
7575
- Rollback de la aplicación
7676
8. Ejemplo de aplicación spring con tests
77-
9. Conatiner Registry
77+
9. Container Registry
7878
- Creando nuestras propias imágenes base
7979
- usando nuestras propias imágenes base
8080
10. Gitlab Pages

03-cd/exercises/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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

Comments
 (0)