Skip to content

Tweak LRR25 exchanges #448

Tweak LRR25 exchanges

Tweak LRR25 exchanges #448

Workflow file for this run

name: Build and Deploy Jekyll Site
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
concurrency: github-pages
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
cache: pip
- name: Install Python Dependencies
run: pip install uv && uv sync
- name: Check Schedules
continue-on-error: false
run: make check-schedules
- name: Normalize Routes
run: make normalize-routes
- name: Convert Routes to GeoJSON
run: make convert-routes
- name: Make Routes Table
run: make _data/routes.yml
- name: Build Calendar
run: make rcc.ics
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
cache-version: 0
# Needed for deploying under user namespaces (username.github.io/repository/)
- name: Set up Pages
id: pages
uses: actions/configure-pages@v4
- name: Set up Jekyll configuration
run: |
# Create override config file
cat > _config_ci.yml << EOF
url: ${{ github.repository == 'raceconditionrunning/raceconditionrunning.github.io'
&& 'https://raceconditionrunning.com'
|| format('https://{0}.github.io', github.repository_owner) }}
baseurl: ${{ steps.pages.outputs.base_path }}
EOF
echo "Created Jekyll config override:"
cat _config_ci.yml
- name: Build with Jekyll
run: make build
env:
JEKYLL_ENV: production
JEKYLL_FLAGS: "--config _config.yml,_config_ci.yml"
- name: Ensure image directories exist
run: mkdir -p _site/img/routes
# Cache the route OpenGraph images and manifest
- name: Restore OpenGraph route images from cache
uses: actions/cache/restore@v4
id: cache-route-images
with:
path: |
_site/img/routes/
.route-preview-cache-manifest
# Key based on the hash of all GPX files
key: og-route-images-${{ hashFiles('routes/_gpx/**/*.gpx') }}
restore-keys: |
og-route-images-
- name: Check which route images need generation
id: check-route-images
run: make route-previews-check
- name: Install Playwright
if: steps.check-route-images.outputs.needs_generation == 'true'
run: |
uv sync --extra route-images
uv run playwright install chromium
- name: Generate route OpenGraph images
if: steps.check-route-images.outputs.needs_generation == 'true'
run: make route-previews-generate-incremental
env:
URL_BASE_PATH: ${{ steps.pages.outputs.base_path }}
- name: Save OpenGraph route images to cache
if: steps.check-route-images.outputs.needs_generation == 'true'
uses: actions/cache/save@v4
with:
path: |
_site/img/routes/
.route-preview-cache-manifest
key: og-route-images-${{ hashFiles('routes/_gpx/**/*.gpx') }}
- name: Cache HTMLProofer
id: cache-htmlproofer
uses: actions/cache@v4
with:
path: tmp/.htmlproofer
key: ${{ runner.os }}-htmlproofer
- name: Check HTML
continue-on-error: true
run: make check-html
env:
URL_BASE_PATH: ${{ steps.pages.outputs.base_path }}
- name: Upload artifact
# Automatically uploads an artifact from the './_site' directory by default
uses: actions/upload-pages-artifact@v3
deploy:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4