Feature 534495: Documentation Generation (GH Pages) #12
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |