My resume as code
No clue. Hopefully parseable, otherwise I wasted a lot of time on this. I'll update when I start using it.
Make sure you have LaTeX dependencies installed as well as the LuaTeX engine. The resume uses FreeSerif
as its font so GNU FreeFont
should also be installed.
To build, your system will need to have GNU Make
to use make files.
The PDF (and build artifacts) can be generated with:
$ make all
The PDF (and build artifacts) can be deleted with:
$ make clean
On each pull request, CI will run and make sure that the PDF can be successfully built. It will also upload the new PDF to cloud storage and add a comment with a conveinient link to the built PDF for easy viewing.
When the PR is merged, the PDF is deleted from cloud storage.
Using the GitHub release interface:
- Draft a new release
- Create a tag for the release
- This somewhat follows semver for how big the changes made are
- Generate release notes for the release
This will kick off GitHub actions to:
- Create a new release for the pushed tag
- Build the resume PDF and attach it to the release
- Update cloud storage so the PDF can be reached via https://api.ajr.dev/files/austin-rovge-resume.pdf
This is more complicated that I would have liked it to be. This project started with me wanting to be able to have my resume as code and have a GitHub runner build a new PDF of it when any changes have been made. The latest resume build would then be accessible on ajr.dev
via a static link. However, for any assets that are attached to a GitHub release, they will be downloaded without the option to view the document in the browser
Here are the options I thought of for getting around this (in order of increasing complexity):
- Store the built PDF in a
latest
GitHub branch- To me, tags do the same thing as release branches except they're immutable. Any release pipeline to a testing/prod environment can be a pipeline run off of each tag. So in using tags vs a release branch, this option felt like doing both. Using both a GitHub release to show the different iterations and a
release
branch just so I could view the PDF artifact in the browser felt off
- To me, tags do the same thing as release branches except they're immutable. Any release pipeline to a testing/prod environment can be a pipeline run off of each tag. So in using tags vs a release branch, this option felt like doing both. Using both a GitHub release to show the different iterations and a
- Use GitHub repository webhook to trigger the
ajr.dev
build pipeline to push a new updateajr.dev
uses Cloudflare pags so this can be done easily. But this would require a simple script as a build step to download the latest PDF. I didn't want to couple the other projects build pipelines or to have a release ofresume
mean a deployment ofajr.dev
would happen. What if this release failed? I didn't like coupling projects build pipelines and having one trigger automatically
- Client side JS on ajr.dev to go to a static url, download a file, then open it in a new tab in the users browser.
- Probably possible, but I just want to have a static link in the browser. I don't want to edit
ajr.dev
to not do this. What if I want to link directly to the resume from a different site?
- Probably possible, but I just want to have a static link in the browser. I don't want to edit
- Store in publicly cloud storage
- Ideally using Cloudflare - meaning this would require a worker to sit in front of R2 to handle PUT/GET requests for the document. Maybe makes sense now if later on I want more endpoints built for any of my personal projects