sábado, 11 de agosto de 2018

Fuck you GUI, el commandline dominará el mundo. Una historia que empezó con SonarQube y Jenkins

Soy linuxero, ya lo sabéis, y como buen linuxero soy de línea de comandos más que de de entorno gráfico, es más, muchas veces cuando he tenido que utilizar una aplicación con mucha interfaz gráfica me pierdo y no sé utilizarla y puedo ser lo más torpe que hay en el mundo. Mis familiares y mi pareja se ríen a veces, pero los mandos de las televisiones modernas o muchas aplicaciones con excesiva GUI, no sé usarlas.



Hoy os voy a contar cómo con una historia la más de tonta muestra que la línea de comandos, al fin de cuentas, es más útil que tanta GUI. Y es que todo empezó cuando empecé a investigar sobre SonarQube y quise probarlo.

SonarQube es una plataforma a la que le subes tu código y te lo analiza diciendo cuántos fallos tienes en el mismo con sus bugs y sus gráficas. Algo muy útil para el debug de los programas que realicemos.

Pues empecé a instalar y realizar toda la configuración necesaria para empezar a utilizar SonarQube. Os la cuento por aquí de forma muy reducida.

Lo primero que hay que hacer es irnos a BitBucket y crearnos una cuenta que será la que posteriormente utilizaremos para hacer login en SonarQube.

Una vez que estamos dentro de sonarcloud, nos iremos a "My Account">"Security" e introduciremos un nombre para nuestro token y le damos a generar. Es importante que nos copiemos el nombre del token y el token en sí para utilizarlo después.

Ahora nos tendríamos que ir a "Organizations" y nos copiaremos la key de nuestro proyecto para utilizarla posteriormente. Ahora daremos en el icono "+" que hay al lado de nuestra foto de perfil y le daremos a "Analyze new project" y seguiremos los pasos.

Si nos fijamos, tendremos un pequeño cuadro donde nos dirá todos los datos que necesitaremos en un momento, no cerraremos esta ventana nueva aunque nos salga el botón de "done".

Ahora lo que tenemos es que irnos a otra máquina (puede ser una VM) . Yo lo he hecho sobre un CentOS Minimal y lo que haremos será lo siguiente:

  • mkdir TestSonarQube
  • cd TestSonarQube
  • mkdir src
  • nano src/main.c (podemos utilizar vim también si lo preferís)
  • Introducir un código cualquiera en C
  • wget https://sonarcloud.io/static/cpp/build-wrapper-linux-x86.zip
  • wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
  • unzip build-wrapper-linux-x86.zip
  • unzip sonar-scanner-cli-3.2.0.1227-linux.zip
  • rm -f build-wrapper-linux-x86.zip
  • rm -f  sonar-scanner-cli-3.2.0.1227-linux.zip
Puede que no tengáis wget ni unzip en CentOS  Minimal, no pasa nada, lo descargáis con yum install y listo.

Ahora ejecutaremos la siguiente línea

./build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir bw-output gcc src/main.c -o src/main.c
En bw-output tendremos un folder que compilará el código y será aquí donde se almacenen todos los datos de la compilación.

Ahora realizaremos el scanner con SonnarQueb, para ello ejecutaremos las siguientes líneas.

./sonnar-scanner-3.2.0.1227-linux/bin/sonar-scanner \
-Dsonar.projectKey=<PROJECT_KEY> \
-Dsonar.sourcer=src \  #si esto os diese un error, probad con un punto en lugar de src
-Dsonar.cfamily.build-wrapper-output=bw-output  \
-Dsonar.host.url=https://sonarcloud.io \
-Dsonar.organization=<ORGANIZATION_KEY> \
-Dsonar.login=<TOKEN>

Estos datos los tendréis en esa pestaña que os he dicho antes que no cerréis aunque os salga "Done". Será un cuadradito gris con todos esos comandos ya con nuestros datos del proyecto.


Y si nos vamos a nuestra cuenta y nuestros proyectos, veremos algo como y esto. En mi caso solamente hice un printf de un "Hello World" por lo que no hay mucho donde equivocarse, pero si declaráis variables que después no utilizáis o introducís líneas redundantes os lo marcará.

Ahora el siguiente paso era utilizar Jenkis y perfeccionar este entorno. Pues aquí empezaron los problemas.

Lo primero es fácil:

  • wget -O /etc/yum.repos.d/jenkis.repo http://pkg.jenkis-ci.org/redhat-stable/jenkis.repo
  • rpm --import https://jenkis-ci.org/redhat/jenkis-ci.org.key
  • yum install jenkis
  • yum install java
  • service jenkis start || /etc/init.d/jenkis start || systemctl start jenkis
Comprobamos el estado de Jenkis con systemctl status jenkis.


Nos debe salir eso de "active (running)".


Pues ahora te ibas a otra máquina e introducía la IP del CentOS (ip addr show o ip a) y me marcaba error cuando los pasos eran esos. Hasta revisé el archivo de configuración de jenkis que se encuentra en /etc/sysconf/jenkins.conf si no recuerdo mal.

Con esto me tiré unas cuantas horas, pero no veía el error así que trate de ver qué pasaba. Hice un "curl" a la ip en ese puerto y me marcaba algo que es lo que me tenía que marcar, que estaba accediendo como "anonymous" y no tenía permiso para ver el contenido. Eso ya me decía que la configuración estaba bien, solo necesitaba la password de admin y entraba.



Utilicé el navegador en modo texto Lynx y accedí a dicha dirección y me pide autentificación. Con las flechas vas moviéndote por este curioso navegador.


Y ya está, ya accedí a Jenkis por navegador. Ahí solamente tenía que introducir la password del administrador. Si no sabéis dónde está esta password, tranquilxs, os dice en qué archivo buscar.


Solamente tendríamos que introducir esa password y ya está. Esto que parece muy tonto pero un navegador en modo texto y que "en teoría" es peor, ha sido el único que ha tirado sin problemas la página que estaba buscando, una prueba más de cómo el software libre y bajo commandline sigue siendo la mejor opción. Ya sabéis que Gnu/Linux manda.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...