Skip to content

Add latexdiff to artifacts #78

Add latexdiff to artifacts

Add latexdiff to artifacts #78

Workflow file for this run

name: CI
on:
push:
pull_request:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.12.2'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r scripts/requirements.txt
- name: Run pytest
run: pytest
build:
runs-on: ubuntu-latest
container: makeappdev/uselatex:latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Git safe directory with GITHUB_WORKSPACE
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
# Build documents via CMake
- name: Build documents
run: |
cmake --version
pdflatex --version
# Create and enter the build directory.
mkdir -p build && cd build
cmake ..
make
# Prepare the "original" version from the default branch.
- name: Checkout default branch for diff
run: |
git fetch origin ${{ github.event.repository.default_branch }}
git worktree add original origin/${{ github.event.repository.default_branch }}
# Run latexdiff on each document.
- name: Run latexdiff on documents
run: |
# Install latexdiff if not present
apt-get install -y latexdiff
# Create a directory to hold diff outputs.
mkdir -p diff
# Loop over each PDF in the build folder.
for pdf in build/*.pdf; do
# Extract the basename (e.g. "document" from "document.pdf")
filename=$(basename "$pdf" .pdf)
if [ -f "$filename.tex" ] && [ -f original/"$filename.tex" ]; then
echo "Running latexdiff on $filename.tex"
# Generate a diff TeX file.
latexdiff original/"$filename.tex" "$filename.tex" > diff/"${filename}_diff.tex"
# Compile the diff file to produce a diff PDF.
pdflatex -output-directory=diff diff/"${filename}_diff.tex"
else
echo "Skipping $filename: Corresponding .tex file not found in one of the branches."
fi
done
# Upload the PDFs produced by build.
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: build-artifact
path: build/*.pdf
# Upload the diff PDFs produced by latexdiff.
- name: Upload latexdiff artifact
uses: actions/upload-artifact@v4
with:
name: latexdiff-artifact
path: diff/*.pdf
- name: Comment on PR with artifact link
if: ${{ github.event_name == 'pull_request' }}
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const pr_number = context.payload.pull_request.number
const run_id = process.env.GITHUB_RUN_ID
const run_url = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${run_id}`
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr_number,
body: `:robot: The artifacts from this build are available [here](${run_url}).`
})
- name: Prepare Deployment
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
run: |
mkdir -p export
echo "# This branch is for deployment only" >> export/README.md
cp build/*.pdf export
cp build/git.id export
- name: Deploy
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main'
uses: JamesIves/[email protected]
with:
branch: gh-pages
folder: export
single-commit: true
silent: true