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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

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)