Skip to content

docs(doxygen): Migrate to shared Doxygen workflow from common_system #578

Description

@kcenon

What

Replace the inline Doxygen workflow with the shared reusable workflow from kcenon/common_system.

  • Current: monitoring_system uses a custom inline workflow (50 lines) in build-Doxygen.yaml with actions/checkout@v6, manual Doxygen install, and direct peaceiris/actions-gh-pages@v4 deployment.
  • Expected: Use kcenon/common_system/.github/workflows/doxygen.yml@main shared workflow, matching 5 other ecosystem libraries.
  • Scope: .github/workflows/build-Doxygen.yaml only

Why

  • DRY principle: The shared workflow centralizes Doxygen version, Graphviz setup, and deployment configuration. Changes to the shared workflow automatically propagate to all consumers.
  • Inconsistency risk: The inline workflow uses actions/checkout@v6 while the shared workflow uses @v5. Divergence grows over time.
  • Maintenance burden: 2 out of 8 libraries (monitoring, database) maintain their own workflow copy instead of reusing the shared one.

Where

File Action
.github/workflows/build-Doxygen.yaml Replace contents

How

Current (inline, 50 lines)

jobs:
  generate-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          submodules: true
      - name: Checkout common_system dependency
        uses: actions/checkout@v6
        with:
          repository: kcenon/common_system
          path: common_system
      - name: Install Doxygen and Graphviz
        run: sudo apt-get install -y doxygen graphviz
      - name: Generate documentation
        run: doxygen Doxyfile
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v4
        ...

Target (shared workflow, 8 lines)

name: Generate-Documentation

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

jobs:
  docs:
    uses: kcenon/common_system/.github/workflows/doxygen.yml@main
    with:
      checkout-common-system: true
    secrets: inherit

Acceptance Criteria

  • Workflow uses shared doxygen.yml from common_system
  • checkout-common-system: true is set (monitoring_system depends on common_system headers)
  • Documentation still generates and deploys correctly
  • Workflow triggers on push, PR, and manual dispatch

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority/mediumMedium priority - Important but not urgentsize/SSmall - Less than 1 day of worktype/choreMaintenance and cleanup tasks

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions