CV con Latex y deploy en S3

PUBLISHED ON JAN 19, 2021 / 3 MIN READ — CV, LATEX

He tenido que actualizar el cv y mi última versión era uno que tenía en formato ai(adobe ilustrator), el problema era cambiar todo el diseño por simplemente agregar o quitar líneas y por el hecho que cada vez uso menos Windows, por lo que he optado por hacer el cv en LaTex y experimentar un poco con ello. De esta forma, se podría mantener actualizado y simplemente “compilarlo” y generar un nuevo cv. Por otro lado y para no tener que estar subiéndolo a mi página web(en mi caso la tengo alojada en un bucket S3 de AWS) de forma manual, he automatizado la “subida” directa después de la generación del archivo pdf.

Lo primero

Para introducirme en LaTex un buen recurso que he encontrado fue esta WEB, para editarlo de forma online al principio sin tener que instalar nada use Overleaf, para alguien que no tiene mucha idea y es novato es bastante intuitivo y ademas te permite realizar cambios en tiempo real y compilarlos y ver el resultado.

Otros links interesantes para ir metiendose en el tema:

LaTex Logo

Paso 1 -Instalación de LaTex y template para modificar.

Antes de empezar con la instalación deberíamos saber ya que es LaTex y algunas diferencias entre LaTeX, pdfTeX, XeTeX, LuaTeX and ConTeXt, en OverLeaf lo explican bastante bien.

Para la instalacion basica de LaTex:

sudo apt-get install texlive-latex-base

Recomiendan tambien instalar fuentes extras y paquetes extras:

sudo apt-get install texlive-fonts-recommended
sudo apt-get install texlive-fonts-extra
sudo apt-get install texlive-latex-extra

Hay una lista bastante buena dentro de OverLeaf donde se puede ver en tiempo real y hacer algunas pruebas. Uno de los que mas me ha gustado es el de FoutySeconds.

FourtySecondsCV

En su repositorio de GitHub nos advierten:

Requirements

You need to compile your document with XeLaTeX or LuaLaTeX in order to have the latest Font Awesome icons (fontawesome5) and Academicons. If you still want to compile with pdfLaTeX for whatever reason, FortySecondsCV will fall back to the older icon package (fontawesome), where some icons look different and some others are not even included Academicons won’t be available.

Por lo que seria recomendable instalar XeLatex

sudo apt-get install texlive-xetex

Paso 2 – Modificación del CV y generación de repositorio en git

Hacemos un fork, lo clonamos o descgarmaos y generamos un repositorio propio de git.

git init
git add .
git commit -m "Initial commit"

Creamos un archivo ..gitlab-ci.yml

stages:
  - createPDF
  - deploy

createPDF:
  stage: createPDF
  image: registry.gitlab.com/islandoftex/images/texlive:latest
  script:
    - xelatex cv.tex
  artifacts:
    paths:
    - cv.pdf

Hemos creado dos stages, uno para generar el archivo y el de deploy que utilizaremos para “subir” y actualizar el archivo de cv de la web(en mi caso esta en bucket de AWS)

En mi caso, he decidido utilizar la imagen de islandoftex. This repository provides dockerfiles for TeX Live repositories (full installation with all packages but without documentation). It also provides the necessary tooling to execute common helper tools (e.g. Java for Arara, Perl for Biber and Xindy, Python for Pygments). Please note that we only provide selected historical releases and one image corresponding to the latest release of TeX Live (tagged latest).

La otra opcion seria crear y configurar un una imagen de docker propia para utilizar y compliar los archivos:

Ya tenemos el archivo creado y el template modificado. Procedemos a la “subida”

git add .
git commit -m "Added .gitlab-ci.yml file"

Si hemos creado el repositorio Local y queremos sincronizarlo con git

Creamos un proyecto en Gitlab y asociamos el repositorio que tenemos local.

git remote add origin https://gitlab.com/username/projectname.git

Por último hacemos pushç

git push -u origin master

Deberia el CI/CD dashboard mostrarnos que se ha generado correctamente.

pipeline

Podriamos descargarnos el archivo generado desde Job artifacts

Artifact

Paso 3- Sincronizamos para la subida al bucket S3

gitlabToS3

En el archivo .gitlab-ci.yml agregamos las lineas de deploy

 deploy:
    stage: deploy
    image: cgbaker/alpine-hugo-aws:latest
    only:
    - master
    script:
    - aws s3 sync . s3://$S3_BUCKET_NAME/ --exclude='*' --include='cv.pdf'

Para que funcione debemos acordarnos de declarar las variables en los ajustes de CD/CI del proyecto.

variables

Para refrescar un poco dejo unos links: La otra opcion seria crear y configurar un una imagen de docker propia para utilizar y compliar los archivos:

Una vez terminamos volvemos a probar y el CI/CD dashboard mostrarnos:

pipelineFinal

Un ejemplo del job seria:

jobFinal

Referencias: