Skip to content

Feature 534495: Documentation Generation (GH Pages) #8

Feature 534495: Documentation Generation (GH Pages)

Feature 534495: Documentation Generation (GH Pages) #8

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:
# Build job
test-docs-generation:
runs-on: ubuntu-latest
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: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build Jekyll site
run: |
# Install Jekyll and necessary plugins
gem install bundler jekyll jekyll-relative-links
# Create Jekyll source directory
mkdir -p site-src
cp -r docs/* site-src/
# Create lowercase index.md (Jekyll requirement)
cp site-src/INDEX.md site-src/index.md
# Write Jekyll configuration
cat > site-src/_config.yml << EOF
title: DEFRA Forms Engine Plugin
description: Documentation for the DEFRA Forms Engine Plugin
markdown: kramdown
kramdown:
input: GFM
syntax_highlighter: rouge
theme: minima
plugins:
- jekyll-relative-links
relative_links:
enabled: true
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" | sort | head -n 20
echo "... (and more files)"
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '_site'
# Deployment job
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
with:
timeout: 600000 # 10 minutes in milliseconds