Skip to content

perf, a11y & SEO: accessible names, meta descriptions, FA subset, asset pipeline #74

perf, a11y & SEO: accessible names, meta descriptions, FA subset, asset pipeline

perf, a11y & SEO: accessible names, meta descriptions, FA subset, asset pipeline #74

Workflow file for this run

name: Build Hugo Site
on:
pull_request:
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.155.1
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install Node dependencies
run: |
if [ -f package.json ]; then
npm install
fi
- name: Create data directory
run: mkdir -p data
- name: Update community stats
run: |
if [ -f .github/scripts/fetch-discourse-activity.js ]; then
echo "Running Discourse activity script..."
node .github/scripts/fetch-discourse-activity.js || true
fi
if [ ! -f data/community_stats.json ]; then
echo "Creating fallback community stats..."
cat > data/community_stats.json << 'EOF'
{
"activities": [
{
"message": "PowerShell community thriving",
"time": "Ongoing",
"type": "community",
"color": "bg-blue-500"
}
],
"stats": {
"total_topics": 15000,
"total_posts": 80000,
"active_users": 12000,
"topics_this_week": 40
},
"last_updated": "2024-01-01T00:00:00.000Z",
"fallback": true
}
EOF
fi
# Deploys ship the committed, purged assets/css/*.css and subsetted
# assets/fonts/fa-*-subset.woff2 as-is (deploy runs bare hugo, not the
# build:* scripts). This guard regenerates them and fails the PR if the
# committed CSS is stale, so markup/content changes that add Tailwind
# classes or fa-* icons can't merge without the regenerated assets.
# We diff the generated CSS (deterministic and the source of truth for
# which classes/icons are included), not the woff2 bytes, which can vary
# across subset-font versions.
- name: Verify generated assets are up to date
run: |
npm run build:css
npm run build:icons
if ! git diff --quiet -- assets/css/tailwind.css assets/css/fontawesome-subset.css; then
echo "::error::Generated CSS is out of date. Run 'npm run build:css' and 'npm run build:icons' locally and commit assets/css/*.css and assets/fonts/fa-*-subset.woff2."
git diff --stat -- assets/css/tailwind.css assets/css/fontawesome-subset.css
git --no-pager diff -- assets/css/fontawesome-subset.css
exit 1
fi
- name: Build with Hugo
env:
HUGO_ENVIRONMENT: production
HUGO_ENV: production
run: |
hugo \
--gc \
--minify \
--destination public