Skip to content

Render Docs Website #95

Render Docs Website

Render Docs Website #95

Workflow file for this run

name: Render Docs Website
on:
push:
branches:
- master
- backport-v0.*
workflow_dispatch: # manual trigger for testing
concurrency:
group: docs
cancel-in-progress: true
permissions:
contents: write
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Julia
uses: julia-actions/setup-julia@v2
with:
version: '1.10'
- name: Load Julia packages from cache
uses: julia-actions/cache@v2
# Note: needs resolve() to fix #518
- name: Instantiate Julia environment
run: julia --project=. -e 'using Pkg; Pkg.instantiate(); Pkg.resolve()'
- name: Set up Quarto
uses: quarto-dev/quarto-actions/setup@v2
with:
# Needs Quarto 1.6 to fix #533, which is currently a pre-release version
version: pre-release
- name: Install jq
run: sudo apt-get install jq
- name: Restore cached _freeze folder
id: cache-restore
uses: actions/cache/restore@v4
with:
path: |
./_freeze/
key: |
${{ runner.os }}-${{ hashFiles('**/Manifest.toml') }}-${{ hashFiles('**/index.qmd') }}
restore-keys: |
${{ runner.os }}-${{ hashFiles('**/Manifest.toml') }}
- name: Extract version from _quarto.yml
id: extract_version
run: |
minor_version=$(grep -oP 'text:\s+"v\K\d+\.\d+' _quarto.yml)
echo "minor_version=$minor_version" >> $GITHUB_ENV
- name: Fetch latest bugfix version for the extracted minor version
id: fetch_latest_bugfix
run: |
repo_url="https://api.github.com/repos/TuringLang/Turing.jl/tags"
tags=$(curl -s $repo_url | jq -r '.[].name')
stable_tags=$(echo "$tags" | grep -Eo 'v[0-9]+\.[0-9]+\.[0-9]+$')
latest_bugfix=$(echo "$stable_tags" | grep "^v${{ env.minor_version }}" | sort -rV | head -n 1)
echo "version=$latest_bugfix" >> $GITHUB_ENV
- name: Fetch the actual latest bugfix version
id: fetch_latest_bugfix_actual
run: |
latest=$(curl --silent "https://api.github.com/repos/TuringLang/Turing.jl/releases/latest" | jq -r .tag_name)
echo "LATEST=$latest" >> $GITHUB_ENV
- name: Run Changelog and Versions Scripts
if: env.version == env.LATEST
run: |
sh assets/scripts/changelog.sh
sh assets/scripts/versions.sh
- name: Render Quarto site
run: quarto render
- name: Rename original search index
run: mv _site/search.json _site/search_original.json
- name: Save _freeze folder
id: cache-save
uses: actions/cache/save@v4
with:
path: |
./_freeze/
key: ${{ runner.os }}-${{ hashFiles('**/Manifest.toml') }}-${{ hashFiles('**/index.qmd') }}
- name: Fetch search_original.json from main site
run: curl -O https://raw.githubusercontent.com/TuringLang/turinglang.github.io/gh-pages/search_original.json
- name: Convert main site search index URLs to relative URLs
run: |
jq 'map(
if .href then .href = "../" + .href else . end |
if .objectID then .objectID = "../" + .objectID else . end)' search_original.json > fixed_main_search.json
- name: Merge both search index
run: |
jq -s '.[0] + .[1]' _site/search_original.json fixed_main_search.json > _site/search.json
- name: Checkout gh-pages branch
uses: actions/checkout@v4
with:
ref: gh-pages
path: ../gh-pages
- name: Update gh-pages branch
run: |
# Copy to versions/ subdirectory
mkdir -p ../gh-pages/versions/${{ env.version }}
cp -r _site/* ../gh-pages/versions/${{ env.version }}
# Find the latest version of the docs and copy that to the root
cd ../gh-pages/versions
LATEST_DOCS=$(ls -d * | sort -V | tail -n 1)
cp -r $LATEST_DOCS/* ../
# Commit and push
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add .
git commit -m "Publish docs @ ${GITHUB_REPOSITORY}@${GITHUB_SHA}"
git push