<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jenkins on Atlas</title><link>https://www.javiercd.es/tags/jenkins/</link><description>Recent content in Jenkins on Atlas</description><generator>Hugo -- gohugo.io</generator><language>es</language><lastBuildDate>Thu, 14 Mar 2024 10:00:00 +0000</lastBuildDate><atom:link href="https://www.javiercd.es/tags/jenkins/index.xml" rel="self" type="application/rss+xml"/><item><title>Práctica CI/CD con Jenkins</title><link>https://www.javiercd.es/posts/ci_cd/practica_jenkins/practica_jenkins/</link><pubDate>Thu, 14 Mar 2024 10:00:00 +0000</pubDate><guid>https://www.javiercd.es/posts/ci_cd/practica_jenkins/practica_jenkins/</guid><description>&lt;p&gt;El objetivo de esta práctica es el desarrollo gradual de un Pipeline que vaya realizando tareas sobre el repositorio de una aplicación.&lt;/p&gt;
&lt;p&gt;La aplicación con la que vamos a trabajar será tu fork de la aplicación django Polls. Como hemos visto esta aplicación que implementa el tutorial de Django tiene implementado un módulo de pruebas.&lt;/p&gt;
&lt;p&gt;Vamos a construir el Pipeline en varias fases:&lt;/p&gt;
&lt;h2 id="ejercicio-1-construcción-de-una-imagen-docker"&gt;&lt;a href="https://fp.josedomingo.org/iaw/5_ic/practica.html#ejercicio-1-construcci%C3%B3n-de-una-imagen-docker" target="_blank" rel="noopener"&gt;Ejercicio 1: Construcción de una imagen docker&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Partimos del pipeline que hemos desarrollado en el &lt;a href="https://fp.josedomingo.org/iaw/5_ic/taller3.html" target="_blank" rel="noopener"&gt;Taller 3: Integración continua de aplicación django (Test)&lt;/a&gt;, donde hemos automatizado el test de la aplicación.&lt;/p&gt;</description></item><item><title>Taller 1: Corrector ortográfico de documentos markdown (test)</title><link>https://www.javiercd.es/posts/ci_cd/taller1_jenkins/taller1/</link><pubDate>Thu, 14 Mar 2024 10:00:00 +0000</pubDate><guid>https://www.javiercd.es/posts/ci_cd/taller1_jenkins/taller1/</guid><description>&lt;h1 id="taller-1-corrector-ortográfico-de-documentos-markdown-test"&gt;Taller 1: Corrector ortográfico de documentos markdown (test)&lt;/h1&gt;
&lt;h2 id="qué-tienes-que-entregar"&gt;&lt;a href="https://fp.josedomingo.org/iaw/5_ic/taller1.html#qu%C3%A9-tienes-que-entregar" target="_blank" rel="noopener"&gt;¿Qué tienes que entregar?&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;La URL de tu repositorio GitHub.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;https://github.com/javierasping/taller1_jenkins_ic-diccionario
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;El contenido de tu fichero &lt;code&gt;Jenkinsfile&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pipeline &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; agent &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; docker &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; image &lt;span style="color:#e6db74"&gt;&amp;#39;debian&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; args &lt;span style="color:#e6db74"&gt;&amp;#39;-u root:root&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stages &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stage&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;Clone&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; steps &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; git branch:&lt;span style="color:#e6db74"&gt;&amp;#39;master&amp;#39;&lt;/span&gt;, url:&lt;span style="color:#e6db74"&gt;&amp;#39;https://github.com/javierasping/taller1_jenkins_ic-diccionario.git&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stage&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;Install&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; steps &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sh &lt;span style="color:#e6db74"&gt;&amp;#39;apt-get update &amp;amp;&amp;amp; apt-get install -y aspell-es &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; stage&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;Test&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; steps &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sh &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; export LC_ALL=C.UTF-8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; OUTPUT=`cat doc/*.md | aspell list -d es -p ./.aspell.es.pws`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; if [ -n &amp;#34;$OUTPUT&amp;#34; ]; then
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; echo $OUTPUT
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; exit 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; fi
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; post &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; always &lt;span style="color:#f92672"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mail to: &lt;span style="color:#e6db74"&gt;&amp;#39;javierasping@gmail.com&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subject: &lt;span style="color:#e6db74"&gt;&amp;#34;Status of pipeline: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;currentBuild.fullDisplayName&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; body: &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;env.BUILD_URL&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt; has result &lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;currentBuild.result&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Una captura de pantalla donde se vea la configuración del disparador del pipeline.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://www.javiercd.es/ci_cd/taller1_jenkins/img/Pasted_image_20240229084423.png" alt=""&gt;&lt;/p&gt;</description></item><item><title>Taller 2 Comprobación de HTML5 válido y despliegue en surge.sh (test y deploy)</title><link>https://www.javiercd.es/posts/ci_cd/taller2_jenkins/taller2/</link><pubDate>Thu, 14 Mar 2024 10:00:00 +0000</pubDate><guid>https://www.javiercd.es/posts/ci_cd/taller2_jenkins/taller2/</guid><description>&lt;p&gt;En este ejercicio queremos desplegar una página HTML5 en el servicio &lt;em&gt;surge.sh&lt;/em&gt;; además, queremos comprobar si el código HTML5 es válido. Estas dos operaciones: comprobar si el HTML5 es válido (test) y el despliegue en surge.sh (deploy), las realizaremos con Jenkins de forma automática (IC y DC). Recuerda que el repositorio es &lt;a href="https://github.com/josedom24/ic-html5" target="_blank" rel="noopener"&gt;https://github.com/josedom24/ic-html5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Como vimos en el ejemplo 2, para realizar el despliegue necesitamos guardar el token obtenido de surge para autentificarnos. Veamos cómo trabajar con credenciales en Jenkins.&lt;/p&gt;</description></item><item><title>Taller 3: Integración continua de aplicación django (Test)</title><link>https://www.javiercd.es/posts/ci_cd/taller3_jenkins/taller3/</link><pubDate>Thu, 14 Mar 2024 10:00:00 +0000</pubDate><guid>https://www.javiercd.es/posts/ci_cd/taller3_jenkins/taller3/</guid><description>&lt;p&gt;Vamos a trabajar con el repositorio de la aplicación &lt;a href="https://github.com/josedom24/django_tutorial" target="_blank" rel="noopener"&gt;django_tutorial&lt;/a&gt;. Esta aplicación tiene definidas una serie de test, que podemos estudiar en el fichero &lt;code&gt;tests.py&lt;/code&gt; del directorio &lt;code&gt;polls&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Cada test viene definido por una función. En el fichero puedes leer los comentarios para saber qué es lo que prueba cada test, o puedes consultar el documento &lt;a href="https://fp.josedomingo.org/iaw/5_ic/test_tutorial_django.html" target="_blank" rel="noopener"&gt;Tests en la aplicación tutorial Django&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para ejecutar los test ejecutamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;python3 manage.py test
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En ese momento se crea una base de datos temporal, donde se van a ir realizando las pruebas que están definidas:&lt;/p&gt;</description></item></channel></rss>