The Goal

I want to host the PDF of my CV on this site. I want it to link to the latest compiled version from where it’s tracked on github (private repo).

How I was doing it before

I linked to a public shared folder on my Dropbox. This meant that every time I update the CV locally, I have to upload the new version to github.

The solution

Building the document and releasing it

First, I created a new github action to build the PDF of the CV from .tex like this (only the jobs section necessary to show here):

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Compile
        uses: xu-cheng/latex-action@v2
        with:
          working-directory: "CV"
          root_file: |
            John_Brevard_Sigman_CV.tex
          pre_compile: |
            make build-bib
      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          tag_name: latest
          files: John_Brevard_Sigman_CV.pdf
      - name: Clear old releases
        uses: dev-drprasad/delete-older-releases@v0.2.1
        with:
          keep_latest: 1
        env:
          GITHUB_TOKEN: $
      - name: Close
        run: exit 0

I use xu-cheng/latex-action@v2 to compile to PDF, preceded by running build-bib from the make target (see below):

build-bib:
	latex John_Brevard_Sigman_CV.tex
	latex John_Brevard_Sigman_CV.tex
	bibtex John_Brevard_Sigman_CV1-blx
	bibtex John_Brevard_Sigman_CV2-blx
	bibtex John_Brevard_Sigman_CV3-blx

The three calls to bibtex are to compile separate bibliographies papers.bib, patents.bib, and government_reports.bib from the auxiliary files *CV[X]-blx. These files were generated by the two calls to latex.

Fetching the release from the website

I next modified the deployment action for this github pages website so that it would fetch the latest release of the CV repo.

Personal Access Token

First, make a personal access token with fine-grained read-only permission to the CV repo. Then, upload this as an encrypted secret (CV_ACCESS_TOKEN) of the website repo.

Action to pull the release

- name: Get latest CV release
  uses: robinraju/release-downloader@v1.8
  with:
    repository: "jsigman/CV"
    latest: true
    fileName: "John_Brevard_Sigman_CV.pdf"
    out-file-path: "assets/pdf/"
    token: ${{ secrets.CV_ACCESS_TOKEN }}

I use robinraju/release-downloader@v1.8 fetch the latest release, and it’s ready to be shared on the website. This setup is clean and hands off!