Feature 534495: Documentation Generation (GH Pages) #8
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: | |
| # 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 |