Para superar el módulo debéis entregar como mínimo:
- La parte obligatoria de los ejercicios de Jenkins o GitLab.
- La parte obligatoria de los ejercicios de GitHub Actions.
- Uno de los dos ejercicios opcionales de la parte de GitHub Actions
En el directorio raíz de este código fuente, crea un Jenkinsfile que contenga una pipeline declarativa con los siguientes stages:
- Checkout. Descarga de código desde un repositorio remoto, preferentemente utiliza GitHub
- Compile. Compilar el código fuente utilizando
gradlew compileJava - Unit Tests. Ejecutar los test unitarios utilizando
gradlew test
Para ejecutar Jenkins en local y tener las dependencias necesarias disponibles podemos contruir una imagen a partir de este Dockerfile
2. Modificar la pipeline para que utilice la imagen Docker de Gradle como build runner - OBLIGATORIO
- Utilizar Docker in Docker a la hora de levantar Jenkins para realizar este ejercicio
- Como plugins deben estar instalados
DockeryDocker Pipeline - Usar la imagen de Docker
gradle:7.6.6-jdk17
-
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. -
Sube el código al repositorio recientemente creado en GitLab.
-
Crea una pipeline con los siguientes stages:
maven:build- En estestageel código de la aplicación se compila con maven.maven:test- En estestageejecutamos los tests utilizando maven.docker:build- En estestagegeneramos una nueva imagen de Docker a partir del Dockerfile suministrado en el raíz del proyecto.deploy- En estestageutilizamos la imagen anteriormente creada, y la hacemos correr en nuestro local.
-
Pistas:
- Utiliza la versión de maven 3.6.3
- El comando para realizar una
buildcon maven:mvn clean package - El comando para realizar los tests con maven:
mvn verify - Cuando despleguemos la aplicación en local, podemos comprobar su ejecución en:
http://localhost:8080
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.
2. Crear un usuario nuevo y probar que no puede acceder al proyecto anteriormente creado - OBLIGATORIO
- Añadirlo con el role
guest, comprobar que acciones puede hacer. - Cambiar a role
reporter, comprobar que acciones puede hacer. - Cambiar a role
developer, comprobar que acciones puede hacer. - Cambiar a role
maintainer, comprobar que acciones puede hacer.
Acciones a probar:
- Commit
- Ejecutar pipeline manualmente
- Push and pull del repo
- Merge request
- Acceder a la administración del repo
3. Crear un nuevo repositorio, que contenga una pipeline, que clone otro proyecto, springapp anteriormente creado - OPCIONAL
Relizar de las siguientes maneras:
- Con el método de CI job token
- ¿Qué ocurre si el repo que estoy clonando no estoy cómo miembro?
- Con el método deploy keys
- Crear deploy key en el repo springapp y poner solo lectura
- Crear pipeline que use la deploy key para clonar el repo
Copia el directorio .start-code/hangman-front en el directorio raíz del mismo repositorio que usaste para las clases de GitHub Actions. Si no lo creaste, crea un repositorio nuevo.
Después crea un nuevo workflow que se dispare cuando haya cambios en el proyecto hangman-front y exista una nueva pull request (deben darse las dos condiciones a la vez). El workflow ejecutará las siguientes operaciones:
- Build del proyecto de front
- Ejecutar los unit tests
Crea un nuevo workflow que se dispare manualmente y haga lo siguiente:
- Crear una nueva imagen de Docker
- Publicar dicha imagen en el container registry de GitHub
Crea un workflow que se lance de la manera que elijas y ejecute los tests e2e que encontrarás en este enlance. Puedes usar Docker Compose o Cypress action para ejecutar los tests.
- Tanto el front como la api se deben estar corriendo
docker run -d -p 3001:3000 hangman-api
docker run -d -p 8080:8080 -e API_URL=http://localhost:3001 hangman-front- Los tests se ejecutan desde el directorio
hangman-e2e/e2ehaciendo uso del comandonpm run open
cd hangman-e2e/e2e
npm run openCrea una custom JavaScript Action que se ejecute cada vez que una issue tenga la etiqueta motivate. La acción deberá pintar por consola un mensaje motivacional. Puedes usar esta API gratuita. Puedes encontrar más información de como crear una custom JS action en este enlace.
curl https://type.fit/api/quotes