Files
network-diagrams-tool/.github/workflows/generate-uml.yml
T
2026-05-25 02:31:59 +03:00

71 lines
3.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Generate UML
# Trigger whenever the domain model or the generator script itself changes.
# "workflow_dispatch" lets you re-run it manually from the GitHub UI.
on:
push:
paths:
- "src/netdiag/domain/models.py"
- "scripts/generate_uml.py"
workflow_dispatch:
# The job needs write access so it can push the generated files back.
permissions:
contents: write
jobs:
generate-uml:
runs-on: ubuntu-latest
steps:
# ── 1. check out the repository ────────────────────────────────────────
- uses: actions/checkout@v4
# ── 2. set up Python (stdlib only no pip packages needed) ────────────
- uses: actions/setup-python@v5
with:
python-version: "3.11"
# ── 3. generate UML/UML.d2 from models.py ──────────────────────────────
- name: Generate D2 source
run: python scripts/generate_uml.py src/netdiag/domain/models.py UML/UML.d2
# ── 4. install the D2 CLI ───────────────────────────────────────────────
#
# The official install script detects the platform and drops the binary
# into one of several locations depending on how the shell is invoked.
# We add all common candidates to GITHUB_PATH so the next step finds it
# regardless of where the script chose to install.
#
# Pin a specific version to keep renders reproducible.
# Bump this when you want to adopt a newer D2 release.
- name: Install D2
env:
D2_VERSION: "0.7.1"
run: |
curl -fsSL \
"https://github.com/terrastruct/d2/releases/download/v${D2_VERSION}/d2-v${D2_VERSION}-linux-amd64.tar.gz" \
| tar -xz -C /tmp
sudo install -m 0755 \
"/tmp/d2-v${D2_VERSION}-linux-amd64/bin/d2" \
/usr/local/bin/d2
d2 --version
# ── 5. render SVG ───────────────────────────────────────────────────────
- name: Render UML/UML.svg
run: d2 UML/UML.d2 UML/UML.svg
# ── 6. commit generated files back to the repo ─────────────────────────
#
# stefanzweifel/git-auto-commit-action is a thin wrapper around
# "git add / git commit / git push". It silently skips the commit when
# nothing has changed, so re-running the workflow is always safe.
#
# The "[skip ci]" suffix prevents this commit from re-triggering CI
# (GitHub Actions honors this convention natively).
- name: Commit generated UML files
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: auto-generate UML diagrams [skip ci]"
file_pattern: "UML/UML.d2 UML/UML.svg"