Skip to content

Feature 534495: Documentation Generation (GH Pages) #12

Feature 534495: Documentation Generation (GH Pages)

Feature 534495: Documentation Generation (GH Pages) #12

name: Test Documentation Generation
on:
workflow_dispatch:
inputs:
branch_type:
description: 'Type of branch to simulate'
required: true
default: 'main'
type: choice
options:
- main
- release/v1
- release/v2
pull_request:
branches:
- main
permissions:
contents: read
pages: write
id-token: write
jobs:
test-docs-generation:
runs-on: ubuntu-latest
environment:
name: github-pages-test
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.2'
bundler-cache: true
- name: Install dependencies
run: npm ci
- name: Set branch type based on trigger
id: set-branch
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "BRANCH_TYPE=${{ github.event.inputs.branch_type }}" >> $GITHUB_ENV
else
echo "BRANCH_TYPE=main" >> $GITHUB_ENV
fi
echo "VERSION=1.2.3" >> $GITHUB_ENV
- name: Generate documentation
run: |
mkdir -p .github/scripts/docs
bash .github/scripts/docs/generate-and-publish-docs.sh "$BRANCH_TYPE" "$VERSION"
- name: Build Jekyll site
run: |
# Install Jekyll and necessary plugins
gem install bundler jekyll jekyll-relative-links jekyll-remote-theme
# Create Jekyll source directory
mkdir -p site-src
cp -r docs/* site-src/
# Create lowercase index.md (Jekyll requirement)
cat > site-src/index.md << EOF
---
layout: default
title: DXT Documentation
---
$(grep -v "^# DXT documentation" site-src/INDEX.md)
EOF
# Write Jekyll _config.yml with remote theme
cat > site-src/_config.yml << EOF
title: DXT Documentation
description: Documentation for the DEFRA Forms Engine Plugin
markdown: kramdown
kramdown:
input: GFM
syntax_highlighter: rouge
# Use remote GitHub-hosted theme
remote_theme: pages-themes/minimal
plugins:
- jekyll-remote-theme
- jekyll-relative-links
relative_links:
enabled: true
defaults:
- scope:
path: "schemas"
type: "pages"
values:
layout: default
- scope:
path: "features"
type: "pages"
values:
layout: default
- scope:
path: ""
type: "pages"
values:
layout: default
EOF
# Build the site using Jekyll
jekyll build --source site-src --destination _site
# Display final build structure for debugging
echo "Final site structure:"
find _site -type f | grep -v ".git" | grep -e "index.html" -e "assets" | head -n 10
echo "... (and more files)"
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '_site'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
with:
timeout: 600000 # 10 minutes in milliseconds