name: Compilation Demo on: push: branches: [ main, develop ] pull_request: branches: [ main, develop ] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: compile: runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - name: Install dependencies run: | sudo apt-get update # Install Apptainer from PPA (for container support) sudo add-apt-repository -y ppa:apptainer/ppa 2>/dev/null || true sudo apt-get update 2>/dev/null || true sudo apt-get install -y apptainer 2>/dev/null || true # Always install TeXLive and required tools for native compilation echo "Installing TeXLive and dependencies for manuscript compilation..." sudo apt-get install -y texlive-full latexdiff ghostscript imagemagick perl parallel 2>/dev/null || \ echo "Warning: Some dependencies may not be available" - name: Install Python dependencies run: | python3 -m pip install --upgrade pip pip install xlsx2csv csv2latex bibtexparser || echo "Warning: Some Python dependencies may not be available" - name: Compile manuscript run: ./compile.sh manuscript - name: Compile supplementary run: ./compile.sh supplementary --no-figs --no-diff - name: Compile revision run: ./compile.sh revision --no-figs --no-tables --draft - name: Verify all PDFs generated run: | FAIL=0 for pdf in 01_manuscript/manuscript.pdf 02_supplementary/supplementary.pdf 03_revision/revision.pdf; do if [ -f "$pdf" ]; then SIZE=$(stat -c%s "$pdf" 2>/dev/null || stat -f%z "$pdf") echo "OK: $pdf ($SIZE bytes)" else echo "FAIL: $pdf not found" FAIL=1 fi done exit $FAIL - name: Upload compiled PDFs uses: actions/upload-artifact@v4 if: success() with: name: compiled-pdfs path: | 01_manuscript/manuscript.pdf 01_manuscript/manuscript_diff.pdf 02_supplementary/supplementary.pdf 03_revision/revision.pdf retention-days: 30