While ago I was thinking that it would be nice to have my CV always fresh and updated. Fixing it every time you change a job or just apply somewhere is a hudge pain. Over the years I used several methods to create my resume.
First it was a simple word document stored on a pendrive or desktop pc. Later on I added cloud storage and started to generate PDF files.
Next on the list was some nice tools that I found on the web to generate from templates. So decided to get everyting and automate the whole process using some free tools that is out there and thats the story how I did it.
- gitlab.com account - its having everything we need out of the box - CI, version controll and shared runners (on free account you have a limit of 2000 minutes per month)
- Awesome-CV - outstanding LaTeX template for your new CV!
1. Git repository
In this example I use gitlab but it can be easy replaced by something else. CI is also optional and I'm more then sure you could do the same in any other tool. I've prepared an example repository on both github and gitlab.
To be able to have awesome-cv inside my repository I will use
git sumbodule command to add it.
─╼ git submodule add https://github.com/posquit0/Awesome-CV.git Cloning into 'Awesome-CV'... remote: Counting objects: 945, done. remote: Compressing objects: 100% (5/5), done. remote: Total 945 (delta 0), reused 1 (delta 0), pack-reused 940 Receiving objects: 100% (945/945), 14.17 MiB | 1.28 MiB/s, done. Resolving deltas: 100% (478/478), done. Checking connectivity... done.
Create symlinks for
fonts directory to be able to generate without anythin missing. After that the repo structure should look like this:
─╼ ls -la total 24 drwxrwxr-x 4 bart bart 4096 wrz 29 15:14 . drwxrwxr-x 3 bart bart 4096 wrz 29 15:07 .. drwxrwxr-x 4 bart bart 4096 wrz 29 15:09 Awesome-CV lrwxrwxrwx 1 bart bart 25 wrz 29 15:14 awesome-cv.cls -> Awesome-CV/awesome-cv.cls lrwxrwxrwx 1 bart bart 26 wrz 29 15:14 fontawesome.sty -> Awesome-CV/fontawesome.sty lrwxrwxrwx 1 bart bart 17 wrz 29 15:14 fonts -> Awesome-CV/fonts/ drwxrwxr-x 8 bart bart 4096 wrz 29 15:14 .git -rw-rw-r-- 1 bart bart 94 wrz 29 15:09 .gitmodules -rw-rw-r-- 1 bart bart 15 wrz 29 15:07 README.md
And there it is! Base is ready, now the CV itself.
2. Curicullum Vitae
Now its time to put the CV to the repo (will use files provided in example
cv.tex). Remember that
texlive-full packages is needed to generate.
─╼ cp -r Awesome-CV/examples/cv* . ─╼ xelatex cv.tex ... Overfull \hbox (24.6408pt too wide) in alignment at lines 10--28   ) (./cv/experience.tex ) (./cv/extracurricular.tex) (./cv/honors.tex) (./cv/presentation.tex ) (./cv/writing.tex) (./cv/committees.tex)  (./cv.aux) ) (see the transcript file for additional information) Output written on cv.pdf (3 pages). Transcript written on cv.log.
3. Automate it with GitLab CI!
Last thing is to combine it and start a process of building basen on a repository change. Gitlab offers shared runners that are capable to launch custom docker image so decided to look for something that is having latex packages installed. Found a public container
It would be nice to have a place to store our generated files and as its nothing else then static content Gitlab is offering
To be able to upload generated PDF files to pages you need to enable it in Gitlab. Later the only thing to setup is a special task.
It has to be at stage
deploy and have to be called
Everything is quite straightforward.
Now lets prepare
.gitlab-ci.yml as this is a key automation file for gitlab.
image: ablu/ubuntu-texlive-full:latest before_script: - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y git imagemagick - git submodule update --init pages: stage: deploy script: - xelatex cv.tex - convert -verbose -density 300 -trim cv.pdf -quality 100 cv.png - mkdir .public - cp -r cv.pdf .public/ - cp -r cv*.png .public/ - mv .public public artifacts: paths: - public only: - master
Commiting .gitlab-ci.yml to our repository will triger the build and start the building process. Every other change of
master branch will trigger the build as well. I do also recommend to schedule a build once a day. Its couple of minutes and you have your Awesome-CV auto generated each day! Enjoy!