bookmark_borderAnotaciones de JUnit

@BeforeEach. Se ejecuta el método antes de realizar cada uno de los test que se encuentra en la clase.

@AfterEach. Se ejecuta el método después de ejecutar cada uno de los métodos que se encuentra en la clase.

@BeforeAll. Se ejecuta el método antes de realizar cualquier método de las clases. (Solo se ejecuta una sola vez) es por eso que debe de un método estático.

@AfterAll. Se ejecuta el método después de realizar todas las pruebas de las clases. Solo se ejecuta una sola vez, es por eso que debe de ser un método estático. Utilice esto para liberar los recursos que están siendo atrapados, como bases de datos o archivos

@Test. Le indica al motor de JUnit que la función contiene un test.

@DisplayName. Cambia el nombre del test, sirve para darme una semántica mejor. En caso de no indicarse se el nombre que se muestra es el nombre de la función.

@Nestable. Sirve para indicar que la subclase también pertenece a la lista de pruebas unitarias de la clase principal. Solo puede ponerse en una subclase. Utilizar para generar una jerarquia

@RepeatedTest(). Sirve para hacer un test unitario que debe de ejecutarse en varias ocasiones
value, Indica el numero de repeticiones que se debe de ejecutar el test, ocupa algunas valores {index} y {argumentsWithNames}
name, Nombre que va a mostrarse en el

Parametros en la funcion 
    RepetitionInfo. Se inyecta por 

Assumption. Sirve para crer condicionales de como debe de ejecutarse.

@ParameterizedTest. sirve para pasar los valores a un test. Debe de estar seguido de la anotación que indique el Source, por ejemplo, en el @ValueSource
name. Cambia el texto que se pueda tener
@ValueSource(strings = {“100”, “200”})
void test(String arg) {

@CsvSource({“1,100”, “2,200”, “3,300”}). Cada entrada es una cadena separada por comas.
void testCsvSource(String indice, String monto) {
….

@CsvFileSource(resources = “/data.csv”).
Resource indica donde esta el archivo dentro de la carpeta de resources.

void testCsvFileSource(String monto). El método debe de tener tantos argumentos como columnas tenga el csv.

private static List methdo () {
….

@MethodSource(“nombreMethodo”). Debe de mostrase el nombre del método, que se va a inyectar, y debe de volver una Lista con el tipo de objeto el método debe de ser estático.
void testMethodSource(List<String) {

bookmark_borderInstalar Jenkins 2 LTS en ubuntu 22.04 LTS

Vamos a instalar Jenkins 2 LTS para producción. Nota siempre ocupamos para producción las versiones LTS (Long Term Service) para los ambientes de producción.

En una consola de ingresa los siguientes comandos

  • Instalación de Java JDK 17 LTS
sudo apt update
sudo apt install openjdk-17-jdk
java -version
javac -version
sudo update-alternatives --config java
  • Instala Maven, en el Filesystem recomendado.
curl https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz --output apache-maven-3.9.0-bin.tar.gz
tar xzvf apache-maven-3.9.0-bin.tar.gz
sudo chown root:root -R /usr/bin/apache-maven-3.9.0
  • Instala GIT
sudo apt update
sudo apt install git
  • Instala Jenkins

Descarga la llave para mantener la versión actualizada.

$ curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
    /usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
    https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
    /etc/apt/sources.list.d/jenkins.list > /dev/null
$ sudo apt install jenkins
  • Instala CertBot

  • Configura Jenkins con CertBot

bookmark_borderComo configurar un microservicio para que utilice Spring Cloud Config Server

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: file:~/config-server-properties
server:
  port: 8888
Lo mas importante, porque se van a utilizar para 
- nombre de la aplicación.
- lugar donde estan los archivos de configuración
- puerto.

bookmark_borderComo empaquetar un microservicio hecho en spring con docker

Prerequisitos

  • Aplicación Spring
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.4</version>
  • Docker version 2.10.12, build e91ed57
  • Apache Maven 3.8.5

Pasos

  • Asegurate de que tu aplicacon de spring se ejecute con maven
./mvnw package && java -jar target/gs-spring-boot-docker-0.1.0.jar
  • Crea el Dockerfile en el proyecto de spring con las siguientes caracteristicas. No olvides renombrar al app.jar para que los guar
FROM openjdk:17-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  • Compila con maven y que genera el componente jar.
mvn install
  • Construye la imagen con el comando de maven. No olvides sustituir myorg/myapp por un identificador para el hub de docker (compañia, y aplicacion)
docker build --build-arg JAR_FILE=target/*.jar -t myorg/myapp .
  • una vez que se haya creado por primera vez la imagen, puedes ahora reconstruirla solo utilizando la sentencia
docker build -t myorg/myapp .
  • Comprueba que se haya construido la imagen
docker image list --all
REPOSITORY                                         TAG             IMAGE ID       CREATED          SIZE
bcee/eureka                                        latest          2782caf7a46e   28 minutes ago   372MB
  • Crea un contenedor con la imagen creada.
docker run -p 8080:8080 myorg/myapp
  • Recuerda que los otros parametros de run (ver comandos de docker)