<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Spanish | DCMST</title><link>https://portfolio.devcrumbs.com/tag/spanish/</link><atom:link href="https://portfolio.devcrumbs.com/tag/spanish/index.xml" rel="self" type="application/rss+xml"/><description>Spanish</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Mon, 05 Mar 2018 00:00:00 +0000</lastBuildDate><image><url>https://portfolio.devcrumbs.com/media/icon_hu28290437db960aa4e7d19bb9f7230401_6937_512x512_fill_lanczos_center_3.png</url><title>Spanish</title><link>https://portfolio.devcrumbs.com/tag/spanish/</link></image><item><title>Deployment de un sitio estatico con Hugo y Git Hooks</title><link>https://portfolio.devcrumbs.com/deployment-hugo-site-git-hooks/</link><pubDate>Mon, 05 Mar 2018 00:00:00 +0000</pubDate><guid>https://portfolio.devcrumbs.com/deployment-hugo-site-git-hooks/</guid><description>&lt;details class="toc-inpage d-print-none " open>
&lt;summary class="font-weight-bold">Table of Contents&lt;/summary>
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#motivación">Motivación&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#consideraciones">Consideraciones&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#instruciones">Instruciones&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#consideraciones-técnicas">Consideraciones técnicas&lt;/a>&lt;/li>
&lt;li>&lt;a href="#autenticación-mediante-llaves-ssh">Autenticación mediante llaves SSH&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuración-sitio-con-hugo">Configuración sitio con Hugo&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuración-del-repositorio-git-en-el-servidor-de-desarrollo-1ra-parte">Configuración del repositorio Git en el servidor de desarrollo 1ra parte&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuración-del-repositorio-git-en-el-servidor-productivo">Configuración del repositorio Git en el servidor productivo&lt;/a>&lt;/li>
&lt;li>&lt;a href="#configuración-del-repositorio-git-en-el-servidor-de-desarrollo-2da-parte">Configuración del repositorio Git en el servidor de desarrollo 2da parte&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/details>
&lt;h2 id="motivación">Motivación&lt;/h2>
&lt;p>Estoy intentando escribir un poco más en mi blog, ya que noté que muchas veces no lo hacia muy a menudo
por que al llegar a la consola de administración de Wordpress, habia que dar bastantes clicks para llegar al menu de &amp;ldquo;Posts&amp;rdquo;,
además de que cada vez que entraba había un plugin diferente que actualizar, y verificar que nada se rompiera con
las nuevas actualizaciónes, en pocas palabras hay que darle bastante mantenimiento a un sitio con Wordpress,
y además de eso había que dedicarse a escribir el post.&lt;/p>
&lt;p>Otra razón por lo que opté hacer el cambio de plataforma, es que al estar tratando de convertirme en DevOps, es necesario,
desde mi punto de vista; tratar automatizar/scriptear la mayoria de tus tareas que realizas día a día, y con &lt;a href="https://gohugo.io/" title="Hugo" target="_blank" rel="noopener">Hugo&lt;/a> considero que se puede realizar este objetivo también.&lt;/p>
&lt;h3 id="consideraciones">Consideraciones&lt;/h3>
&lt;p>Una vez que decidí migrarme de Wordpress, el siguiente paso era decidir a que plataforma mudarme.
De entrada la plataforma que queria probar era un &lt;a href="https://en.wikipedia.org/wiki/Static_web_page" target="_blank" rel="noopener">Static Site Generator&lt;/a>,
aqui otro &lt;a href="https://cloudcannon.com/blog/what-is-a-static-website/" target="_blank" rel="noopener">link&lt;/a> de por que usar un Static Site Generator.&lt;/p>
&lt;p>Partiendo de lo anterior, las opciones que me parecieron interesantes fueron:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://gohugo.io" target="_blank" rel="noopener">Hugo&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://jekyllrb.com" target="_blank" rel="noopener">Jekyll&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://octopress.org/" target="_blank" rel="noopener">Octopress&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://hexo.io/" target="_blank" rel="noopener">Hexo&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Cada una de las opciones tiene diferentes caracteristicas, que no vamos a discutir en este post,
sin embargo las carteristicas que me convencieron de usar &lt;a href="https://gohugo.io/" title="Hugo" target="_blank" rel="noopener">Hugo&lt;/a> por encima de las otras alternativas fueron:&lt;/p>
&lt;ul>
&lt;li>Consta solamente de un binario, que comparado con las otras posibilidades hay que instalar todo un ambiente de desarrollo/producción.&lt;/li>
&lt;li>Es bastante rápido.&lt;/li>
&lt;li>Es Multi-plataforma&lt;/li>
&lt;li>Tiene diversos &lt;a href="https://themes.gohugo.io/" target="_blank" rel="noopener">temas&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="instruciones">Instruciones&lt;/h2>
&lt;h3 id="consideraciones-técnicas">Consideraciones técnicas&lt;/h3>
&lt;p>El ambiente consta de:&lt;/p>
&lt;ul>
&lt;li>1 servidor productivo donde esta instalado hugo, git y un servidor web (apache o nginx) , haremos todos los deployments usando el usuario admin, ojo que no es el usuario root.&lt;/li>
&lt;li>1 servidor/equipo de desarrollo, de igual forma que cuenta con hugo y git, en mi caso, es mi computadora personal y mi usuario es d-cmst.&lt;/li>
&lt;li>1 cuenta de &lt;a href="https://github.com" target="_blank" rel="noopener">github.com&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="autenticación-mediante-llaves-ssh">Autenticación mediante llaves SSH&lt;/h3>
&lt;p>El primer paso es realizar el intercambio de llaves SSH entre el equipo de desarrollo y el equipo productivo. Para ello seguimos los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Generar la llave SSH, tendrás que contestar algunas preguntas, entre las cuales está si quieres ponerle un password, a lo cual deberas dejarlo en blanco para que no te pida contraseña.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ ssh-keygen
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Copiar la llave SSH hacia el equipo productivo:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ ssh-copy-id admin@IP_servidor_productivo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Verificar que te puedas conectar desde tu servidor de desarrollo, con tu usuario al servidor productivo, con el usuario que realizará los deployments.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ ssh admin@162.125.2.30 hostname
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>En este caso, debera de mostrarte el hostname del servidor productivo sin pedirte el password.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="configuración-sitio-con-hugo">Configuración sitio con Hugo&lt;/h3>
&lt;p>El siguiente paso es configurar nuestro ambiente de desarrollo con Hugo y Git.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Para instalar ambos en Ubuntu o derivados debes de ejecutar:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ sudo apt install hugo git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Para tener la version más actualizada de hugo puedes seguir los pasos descritos en este &lt;a href="https://gohugo.io/getting-started/installing/" target="_blank" rel="noopener">link&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Vamos a crear un directorio de trabajo para nuestro sitio estatico&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ mkdir ~/sites
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">cd&lt;/span> ~/sites
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Crearemos un nuevo sitio usando el comando hugo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ hugo new site d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Congratulations! Your new Hugo site is created in /home/d-cmst/sites/d-cmst.io.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Just a few more steps and you&lt;span class="err">&amp;#39;&lt;/span>re ready to go:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1.- Download a theme into the same-named folder.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Choose a theme from https://themes.gohugo.io/, or
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> create your own with the &lt;span class="s2">&amp;#34;hugo new theme &amp;lt;THEMENAME&amp;gt;&amp;#34;&lt;/span> command.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2.- Perhaps you want to add some content. You can add single files
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> with &lt;span class="s2">&amp;#34;hugo new &amp;lt;SECTIONNAME&amp;gt;/&amp;lt;FILENAME&amp;gt;.&amp;lt;FORMAT&amp;gt;&amp;#34;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">3.- Start the built-in live server via &lt;span class="s2">&amp;#34;hugo server&amp;#34;&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Visit https://gohugo.io/ &lt;span class="k">for&lt;/span> quickstart guide and full documentation.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Cuando termine de correr el comando se podra apreciar los siguientes directorios y archivos&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">cd&lt;/span> d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ ls
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">archetypes config.toml content data layouts static themes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ tree
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── archetypes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│   └── default.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── config.toml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── data
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── layouts
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">├── static
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└── themes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">6&lt;/span> directories, &lt;span class="m">2&lt;/span> files
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>El siguiente paso es agregar un tema, puedes encontrar uno que te guste en &lt;a href="https://themes.gohugo.io/" target="_blank" rel="noopener">https://themes.gohugo.io/&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git init
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git submodule add https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Edit your config.toml configuration file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># and add the new theme.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;theme = &amp;#34;ananke&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; config.toml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Como recomendación adicional en este paso, puedes realizar un fork del tema que te guste en github para poder realizar modificaciones y proponer cambios al mismo,
contribuyendo de esa forma a su desarrollo, para hacerlo, sigue los pasos:&lt;/p>
&lt;ol>
&lt;li>Realizar un fork del tema, sigue esta &lt;a href="https://docs.github.com/en/get-started/quickstart/contributing-to-projects" target="_blank" rel="noopener">guia&lt;/a> para hacerlo.&lt;/li>
&lt;li>Al realizar el fork, tendras en tus repositorios de github el tema que quieras, por lo que tendras que ejecutar los mismos comandos del punto anterior,
pero el repositorio del tema apuntara a tu usario en github&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">git init
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git submodule add https://github.com/dc-mst/gohugo-theme-ananke.git themes/ananke
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Edit your config.toml configuration file&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># and add the new theme.&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s1">&amp;#39;theme = &amp;#34;ananke&amp;#34;&amp;#39;&lt;/span> &amp;gt;&amp;gt; config.toml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Vamos a crear un post de prueba para verificar que todo esta funcionando correctamente&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">hugo new posts/my-first-post.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Hola Mundo&amp;#34;&lt;/span> &amp;gt;&amp;gt; content/posts/my-first-post.md
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>El comando anterior creara un archivo en la ruta content/posts/my-first-post.md, y el contenido será:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;My First Post&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2018-02-28T12:02:38&lt;/span>&lt;span class="m">-06&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="m">00&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">draft&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="l">Hola Mundo!!!&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Finalmente, probaremos que nuestro sitio estatico con nuestro post se muestren de manera local, en nuestro servidor de desarrollo.
Cabe mencionar, que por defecto el comando &amp;lsquo;hugo server&amp;rsquo; no mostrará los posts que tengan la opción &amp;lsquo;draft: true&amp;rsquo;, por ello se agrega la bandera -D&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ hugo server -D
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h3 id="configuración-del-repositorio-git-en-el-servidor-de-desarrollo-1ra-parte">Configuración del repositorio Git en el servidor de desarrollo 1ra parte&lt;/h3>
&lt;p>En el paso pasado, realizamos la inicialización del repositorio dentro del directorio del sitio estatico:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">pwd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/home/d-cmst/sites/d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git status
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">On branch master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Initial commit
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Changes to be committed:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git rm --cached &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to unstage&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> new file: .gitmodules
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> new file: themes/ananke
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Untracked files:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="o">(&lt;/span>use &lt;span class="s2">&amp;#34;git add &amp;lt;file&amp;gt;...&amp;#34;&lt;/span> to include in what will be committed&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> archetypes/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> config.toml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> content/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> themes/ananke/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ahora, para tener el repositorio publico, tenemos que &lt;a href="https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository" target="_blank" rel="noopener">crear&lt;/a> el repositorio
en &lt;a href="https://github.com" target="_blank" rel="noopener">github.com&lt;/a> y configurarlo como un repositorio remoto&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git add *
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git commit -m &lt;span class="s2">&amp;#34;First commit&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git remote add origin https://github.com/dc-mst/d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git push -u origin master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configuración-del-repositorio-git-en-el-servidor-productivo">Configuración del repositorio Git en el servidor productivo&lt;/h3>
&lt;p>Para poder ocupar los hooks de git es necesario hacer una primera copia inicial del repositorio en el que vamos a trabajar, con la particularidad de que el repositorio clonado debe ser del tipo &lt;a href="http://www.saintsjd.com/2011/01/what-is-a-bare-git-repository/" target="_blank" rel="noopener">bare&lt;/a>.&lt;/p>
&lt;p>En nuestro servidor productivo haremos:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ mkdir sites
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ &lt;span class="nb">cd&lt;/span> sites
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ git clone --bare https://github.com/dc-mst/d-cmst.io d-cmst.io.git
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="configuración-del-hook">Configuración del hook&lt;/h4>
&lt;ol>
&lt;li>
&lt;p>Ya que tenemos nuestro repositorio tipo bare en el servidor productivo vamos a crear el script que mandará a llamar el hook de git.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ &lt;span class="nb">cd&lt;/span> sites/d-cmst.io.git/hooks
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ vim post-update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Y agregamos algo asi:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#!/bin/bash
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">GIT_REPO&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nv">$HOME&lt;/span>/d-cmst.io.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">WORKING_DIRECTORY&lt;/span>&lt;span class="o">=&lt;/span>/var/www/vhosts/d-cmst.io/working_hugo
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">PUBLIC_WWW&lt;/span>&lt;span class="o">=&lt;/span>/var/www/vhosts/d-cmst.io/public_html
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">BACKUP_WWW&lt;/span>&lt;span class="o">=&lt;/span>/var/www/vhosts/d-cmst.io/backup_html
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">MY_DOMAIN&lt;/span>&lt;span class="o">=&lt;/span>d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">set&lt;/span> -e
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf &lt;span class="nv">$WORKING_DIRECTORY&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rsync -aqz &lt;span class="nv">$PUBLIC_WWW&lt;/span>/ &lt;span class="nv">$BACKUP_WWW&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">trap&lt;/span> &lt;span class="s2">&amp;#34;echo &amp;#39;A problem occurred. Reverting to backup.&amp;#39;; rsync -aqz --del &lt;/span>&lt;span class="nv">$BACKUP_WWW&lt;/span>&lt;span class="s2">/ &lt;/span>&lt;span class="nv">$PUBLIC_WWW&lt;/span>&lt;span class="s2">; rm -rf &lt;/span>&lt;span class="nv">$WORKING_DIRECTORY&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> EXIT
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">git clone &lt;span class="nv">$GIT_REPO&lt;/span> &lt;span class="nv">$WORKING_DIRECTORY&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">mkdir -p &lt;span class="nv">$WORKING_DIRECTORY&lt;/span>/themes
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">rm -rf &lt;span class="nv">$PUBLIC_WWW&lt;/span>/*
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">/home/admin/bin/hugo -v -s &lt;span class="nv">$WORKING_DIRECTORY&lt;/span> -d &lt;span class="nv">$PUBLIC_WWW&lt;/span> -b &lt;span class="s2">&amp;#34;http://&lt;/span>&lt;span class="si">${&lt;/span>&lt;span class="nv">MY_DOMAIN&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">trap&lt;/span> - EXIT
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Damos permisos de ejecución al script&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ chmod +x post-update
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Probamos que nuestro script funcione adecuadamente:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">admin@prod-server:~$ ~/sites/d-cmst.io.git/hooks/post-update
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Cloning into &lt;span class="s1">&amp;#39;/var/www/vhosts/d-cmst.io/working_hugo&amp;#39;&lt;/span>...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">done&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> draft content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> future content
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">4&lt;/span> pages created
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> paginator pages created
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">0&lt;/span> tags created
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="m">1&lt;/span> categories created
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">in &lt;span class="m">26&lt;/span> ms
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Podras verificar tu nuevo post en la URL de su sitio:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">http://production_domain_or_IP
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h3 id="configuración-del-repositorio-git-en-el-servidor-de-desarrollo-2da-parte">Configuración del repositorio Git en el servidor de desarrollo 2da parte&lt;/h3>
&lt;p>Una vez tenemos configurado nuestro repositorio en el servidor de producción, procedemos a agregarlo como repositorio remoto en nuestro servidor de desarrollo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">cd&lt;/span> /home/d-cmst/sites/d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git remote add prod admin@IP_servidor_productivo:d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git ls-remote prod
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d1b0b73528ab3117170ef74e133d0194dd2bc88a HEAD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d1b0b73528ab3117170ef74e133d0194dd2bc88a refs/heads/master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Puedes verificar los repositorios remotos con el comando:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git remote -v
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">origin git@github.com:d-cmst/d-cmst.io.git &lt;span class="o">(&lt;/span>fetch&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">origin git@github.com:d-cmst/d-cmst.io.git &lt;span class="o">(&lt;/span>push&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">prod admin@IP_servidor_productivo:d-cmst.io.git &lt;span class="o">(&lt;/span>fetch&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">prod admin@IP_servidor_productivo:d-cmst.io.git &lt;span class="o">(&lt;/span>push&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ahora cada vez que realizemos un push hacia el remote llamado &amp;lsquo;prod&amp;rsquo; se llamara la función del hook.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">cd&lt;/span> /home/d-cmst/sites/d-cmst.io
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ hugo new posts/Testing-Deployment.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ &lt;span class="nb">echo&lt;/span> &lt;span class="s2">&amp;#34;Deployment Test&amp;#34;&lt;/span> &amp;gt;&amp;gt; content/posts/Testing-Deployment.md
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git add *
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git commit -m &lt;span class="s1">&amp;#39;Deployment test with git hooks&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Este es el comando que hace la magia:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">d-cmst@dev-server:~$ git push prod master
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Counting objects: 3, &lt;span class="k">done&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Delta compression using up to &lt;span class="m">8&lt;/span> threads.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Compressing objects: 100% &lt;span class="o">(&lt;/span>3/3&lt;span class="o">)&lt;/span>, &lt;span class="k">done&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Writing objects: 100% &lt;span class="o">(&lt;/span>3/3&lt;span class="o">)&lt;/span>, &lt;span class="m">310&lt;/span> bytes &lt;span class="p">|&lt;/span> &lt;span class="m">0&lt;/span> bytes/s, &lt;span class="k">done&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Total &lt;span class="m">3&lt;/span> &lt;span class="o">(&lt;/span>delta 2&lt;span class="o">)&lt;/span>, reused &lt;span class="m">0&lt;/span> &lt;span class="o">(&lt;/span>delta 0&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Cloning into &lt;span class="s1">&amp;#39;/var/www/vhosts/d-cmst.io/working_hugo&amp;#39;&lt;/span>...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: &lt;span class="k">done&lt;/span>.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Cloning into &lt;span class="s1">&amp;#39;/var/www/vhosts/d-cmst.io/working_hugo/themes/hugo-future-imperfect&amp;#39;&lt;/span>...
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: INFO 2018/03/01 03:12:34 Using config file: /var/www/vhosts/d-cmst.io/working_hugo/config.toml
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Building sites … INFO 2018/03/01 03:12:34 syncing static files to /var/www/vhosts/d-cmst.io/public_html/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: &lt;span class="p">|&lt;/span> EN
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: +------------------+----+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Pages &lt;span class="p">|&lt;/span> &lt;span class="m">10&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Paginator pages &lt;span class="p">|&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Non-page files &lt;span class="p">|&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Static files &lt;span class="p">|&lt;/span> &lt;span class="m">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Processed images &lt;span class="p">|&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Aliases &lt;span class="p">|&lt;/span> &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Sitemaps &lt;span class="p">|&lt;/span> &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Cleaned &lt;span class="p">|&lt;/span> &lt;span class="m">0&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote:
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">remote: Total in &lt;span class="m">44&lt;/span> ms
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">To admin@IP_servidor_productivo:d-cmst.io.git
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> d5b0671..cvc4dee master -&amp;gt; master
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Listo ya podemos probar nuestro sitio&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">http://d-cmst.io
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Con esto el siguiente paso que realizare es hacer el deployment de mi servidor para el blog usando Ansible.&lt;/p>
&lt;p>Nos Vemos!!!&lt;/p>
&lt;p>&lt;strong>References:&lt;/strong>
Digital Ocean blog post &lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref">1&lt;/a>&lt;/sup>&lt;/p>
&lt;div class="footnotes" role="doc-endnotes">
&lt;hr>
&lt;ol>
&lt;li id="fn:1">
&lt;p>&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-deploy-a-hugo-site-to-production-with-git-hooks-on-ubuntu-14-04" target="_blank" rel="noopener">Digital Ocean&lt;/a>&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink">&amp;#x21a9;&amp;#xfe0e;&lt;/a>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;/div></description></item></channel></rss>