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_borderInstalar jdk 17 LTS en ubuntu server 22.04 LTS

Descripción

En una consola escribe la sentencia, para actualizar, buscar y en su caso instalar el openjdk desde el repository default de Ubuntu

sudo apt update
sudo apt search openjdk-17-jdk
sudo apt install openjdk-17-jdk

Verifica que se haya instalado la versión con el siguiente comando

java -version
javac -version

Si tienes varias versiones de java configura la que se va a ocupar por default

sudo update-alternatives --config java

bookmark_borderConfigurar https en TOMCAT con CertBot

En esta ocasion vamos a configurar el https en TOMCAT webserver utilizando Certbot para la generación de los certificados.

Software

  • Ubuntu Server 20.04
  • Certbot 1.29.0
  • Tomcat 9

Procedimiento

  • Ejecuta los siguientes comandos
sudo certbot certonly --standalone -d tomcat.luidasa.com
cd /etc/letsencrypt/live/tomcat.luidasa.com
sudo cp {cert,chain,privkey}.pem /opt/tomcat/conf/ 
sudo nano /opt/tomcat/conf/server.xml and modify
  • Localiza en el archivo y modificalo.
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
  <SSLHostConfig>
    <Certificate certificateFile="conf/cert.pem"
                 certificateKeyFile="conf/privkey.pem"
                 certificateChainFile="conf/chain.pem" />
  </SSLHostConfig>
</Connector>

....
<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" />
  • Agrega la siguiente sentencia en el archivo web.xml, para forzar a siempre use https.
<security-constraint>
 <web-resource-collection>
   <web-resource-name>Protected Context</web-resource-name>
   <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
</security-constraint>
  • Por ultimo reinicia el servicio de TOMCAT
sudo systemctl restart tomcat

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)

bookmark_borderInstalar Open Jdk 8 en Ubuntu Server 20.04

No obstante que la versión de Java 8 ya a perdido soporte, en algunas ocasiones es necesario la instalación de Java 8 porque el software ha sido desarrollada con esta versión y aun no se ha hecho la migración a una plataforma mas reciente.

  • Actualiza los paquetes
$ sudo apt update
  • Verifica si tienes instalada una versión de java
$ java -version
  • Instala la versión apropiada
$ sudo apt install openjdk-8-jdk
  • Selecciona la alternativa por default de java que se vaya a utilizar
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
  • Verifica que se haya seleccionado correctamente
$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

$ javac -version
javac 1.8.0_292

Referencias.

https://www.digitalocean.com/community/tutorials/como-instalar-java-con-apt-en-ubuntu-18-04-es