Skip to content

250825 Data Update, Ballot Topics and Quarto Enhancements (#13) #12

250825 Data Update, Ballot Topics and Quarto Enhancements (#13)

250825 Data Update, Ballot Topics and Quarto Enhancements (#13) #12

on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
name: Render and Publish
permissions:
contents: read
pages: write
id-token: write
jobs:
lint:
name: Lint with Prettier
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install dependencies
run: npm install
- name: Check for linting errors
run: npm run check
build-optimize:
name: Build, Optimize, and Upload Artifacts
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Overwrite _quarto.yml
if: github.repository == 'maehr/open-research-data-template'
run: |
cp .github/_quarto.yml _quarto.yml
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# with:
# To install LaTeX to build PDF book outputs, uncomment below
# tinytex: true
# uncomment below and fill to pin a version
# version: SPECIFIC-QUARTO-VERSION-HERE
# add software dependencies here and any libraries
# From https://github.com/actions/setup-python
# - name: Setup Python
# uses: actions/setup-python@v3
# From https://github.com/r-lib/actions/tree/v2-branch/setup-r
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
r-version: renv
- name: Install system dependencies for R packages
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev pkg-config libglpk-dev
- name: Setup R environment
uses: r-lib/actions/setup-renv@v2
# From https://github.com/julia-actions/setup-julia
# - name: Setup Julia
# uses: julia-actions/setup-julia@v1
# See more at https://github.com/quarto-dev/quarto-actions/blob/main/examples/example-03-dependencies.md
- name: Render Quarto Project
uses: quarto-dev/quarto-actions/render@v2
with:
to: html
- name: JamPack Optimization
run: |
npx @divriots/jampack ./_site
- name: Upload Built Artifacts
uses: actions/upload-artifact@v4
with:
name: built-site
path: _site
- name: Upload static files as artifact
id: deployment
uses: actions/upload-pages-artifact@v3 # or specific "vX.X.X" version tag for this action
with:
path: _site
deadlinkcheck:
name: Download Artifacts and Check for Dead Links
runs-on: ubuntu-latest
needs: build-optimize
steps:
- name: Download Built Artifacts
uses: actions/download-artifact@v4
with:
name: built-site
path: _site
- name: Start static server
run: |
cd _site
nohup python3 -m http.server 5528 &
sleep 3 # Give the server time to start
- name: Check for broken links (non-blocking)
run: |
echo "Checking for broken links (non-fatal)..."
wget --spider --recursive --no-parent --no-check-certificate http://localhost:5528/ 2>&1 | tee wget-log.txt
grep -q "Remote file does not exist" wget-log.txt && echo "::warning::Broken links found (ignored in CI)" || echo "No broken links found"
deploy:
name: Deploy
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: [build-optimize, deadlinkcheck]
if: github.event_name != 'pull_request'
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4