name: Compile LaTeX Documents on: push: branches: [ main ] pull_request: branches: [ main ] permissions: contents: write packages: read jobs: build-public: runs-on: ubuntu-latest container: ghcr.io/xu-cheng/texlive-alpine:latest steps: - name: Install system dependencies run: apk add --no-cache git gettext bash - uses: actions/checkout@v4 - name: Create public info file env: PERSONAL_NAME: ${{ secrets.PERSONAL_NAME || github.repository_owner }} PERSONAL_EMAIL: ${{ secrets.PERSONAL_EMAIL || '' }} PERSONAL_WEBSITE: ${{ secrets.PERSONAL_WEBSITE || '' }} PERSONAL_SCHOOL_EMAIL: ${{ secrets.PERSONAL_SCHOOL_EMAIL || '' }} run: | cat > personal_info.tex << 'EOL' % Public version of personal information \newcommand{\personalName}{$PERSONAL_NAME} \newcommand{\personalEmail}{$PERSONAL_EMAIL} \newcommand{\personalPhone}{~} \newcommand{\personalWebsite}{$PERSONAL_WEBSITE} \newcommand{\personalSchoolEmail}{$PERSONAL_SCHOOL_EMAIL} \newcommand{\personalHomeAddressLineOne}{~} \newcommand{\personalHomeAddressLineTwo}{~} \newcommand{\personalSchoolAddressLineOne}{~} \newcommand{\personalSchoolAddressLineTwo}{~} \newcommand{\personalSchoolAddressLineThree}{~} EOL envsubst < personal_info.tex > personal_info.tex.tmp mv personal_info.tex.tmp personal_info.tex - name: Cache TeX Live uses: actions/cache@v4 with: path: | /tmp/texlive ~/.texlive* key: texlive-${{ runner.os }}-${{ hashFiles('**/*.tex', 'subfiles/**/*.tex') }} restore-keys: | texlive-${{ runner.os }}- - name: Create TeX Live directory run: mkdir -p /tmp/texlive - name: Compile LaTeX run: | latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode cv.tex - name: Upload Public PDFs as Release uses: softprops/action-gh-release@v2 with: files: | resume.pdf cv.pdf name: Latest PDFs tag_name: latest body: | Latest version of resume and CV (public version) This release is automatically updated with each push to main. For versioned releases, see the numbered releases. prerelease: false draft: false fail_on_unmatched_files: true generate_release_notes: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Create a numbered release for version history - name: Create Numbered Release uses: softprops/action-gh-release@v2 with: files: | resume.pdf cv.pdf name: Release ${{ github.run_number }} tag_name: release-${{ github.run_number }} body: | Version ${{ github.run_number }} of resume and CV (public version) prerelease: false draft: false fail_on_unmatched_files: true generate_release_notes: false env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build-private: runs-on: ubuntu-latest container: ghcr.io/xu-cheng/texlive-alpine:latest if: github.actor == github.repository_owner steps: - name: Install system dependencies run: apk add --no-cache git gettext bash - uses: actions/checkout@v4 - name: Create private info file env: PERSONAL_NAME: ${{ secrets.PERSONAL_NAME || github.repository_owner }} PERSONAL_EMAIL: ${{ secrets.PERSONAL_EMAIL || '' }} PERSONAL_WEBSITE: ${{ secrets.PERSONAL_WEBSITE || '' }} PERSONAL_SCHOOL_EMAIL: ${{ secrets.PERSONAL_SCHOOL_EMAIL || '' }} PERSONAL_PHONE: ${{ secrets.PERSONAL_PHONE || '' }} PERSONAL_HOME_ADDRESS_LINE1: ${{ secrets.PERSONAL_HOME_ADDRESS_LINE1 || '' }} PERSONAL_HOME_ADDRESS_LINE2: ${{ secrets.PERSONAL_HOME_ADDRESS_LINE2 || '' }} PERSONAL_SCHOOL_ADDRESS_LINE1: ${{ secrets.PERSONAL_SCHOOL_ADDRESS_LINE1 || '' }} PERSONAL_SCHOOL_ADDRESS_LINE2: ${{ secrets.PERSONAL_SCHOOL_ADDRESS_LINE2 || '' }} PERSONAL_SCHOOL_ADDRESS_LINE3: ${{ secrets.PERSONAL_SCHOOL_ADDRESS_LINE3 || '' }} run: | cat > personal_info.tex << 'EOL' % Private version of personal information \newcommand{\personalName}{${PERSONAL_NAME}} \newcommand{\personalEmail}{${PERSONAL_EMAIL}} \newcommand{\personalPhone}{${PERSONAL_PHONE}} \newcommand{\personalWebsite}{${PERSONAL_WEBSITE}} \newcommand{\personalSchoolEmail}{${PERSONAL_SCHOOL_EMAIL}} \newcommand{\personalHomeAddressLineOne}{${PERSONAL_HOME_ADDRESS_LINE1}} \newcommand{\personalHomeAddressLineTwo}{${PERSONAL_HOME_ADDRESS_LINE2}} \newcommand{\personalSchoolAddressLineOne}{${PERSONAL_SCHOOL_ADDRESS_LINE1}} \newcommand{\personalSchoolAddressLineTwo}{${PERSONAL_SCHOOL_ADDRESS_LINE2}} \newcommand{\personalSchoolAddressLineThree}{${PERSONAL_SCHOOL_ADDRESS_LINE3}} EOL envsubst < personal_info.tex > personal_info.tex.tmp mv personal_info.tex.tmp personal_info.tex - name: Cache TeX Live uses: actions/cache@v4 with: path: | /tmp/texlive ~/.texlive* key: texlive-${{ runner.os }}-${{ hashFiles('**/*.tex', 'subfiles/**/*.tex') }} restore-keys: | texlive-${{ runner.os }}- - name: Create TeX Live directory run: mkdir -p /tmp/texlive - name: Compile LaTeX run: | latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode cv.tex - name: Upload Private PDFs uses: actions/upload-artifact@v4 with: name: private-documents path: | resume.pdf cv.pdf