Generate Ansible Inventory Docs GitHub Action

This GitHub Action automatically generates documentation for the Ansible inventories whenever changes are pushed to the main branch or a pull request is created. It uses the Generate Inventory Documentation Script Python script to generate markdown files for each inventory, and maintains a global index of inventories, and commits the changes back to the repository.


πŸ“„ Workflow File

name: Generate Ansible Inventory Docs

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  generate-inventory-docs:
    # Only run the job logic when the branch is main
    if: github.ref == 'refs/heads/main'
    
    runs-on: ubuntu-latest

    steps:
      # Checkout the repo
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0  # needed for committing back

      # Set up Python
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      # Install dependencies (if any)
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      # Run the documentation generator
      - name: Generate inventory docs
        run: |
          python ./scripts/generate_inventory_docs.py

      - name: Commit and push changes
        run: |
          git config --global user.name "github-actions[bot]"
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
          git pull origin main
          git add inventory/README.md docs/inventories/README.md docs/inventories/*.md

          if ! git diff --cached --quiet; then
            git commit -m "chore(docs): auto-generate inventory documentation"
            git push origin main
          else
            echo "No documentation changes to commit."
          fi

πŸ”Ή Workflow Details

Trigger

Jobs

generate-inventory-docs


⚑ Summary