Ga naar inhoud

VSA-tooling gebruiken vanuit andere repositories

Deze pagina is de integratiehandleiding: hoe je vsa-tool in een andere repo installeert en in CI gebruikt. Volledig werkend voorbeeld: VSA-demo.

Ownership: tooling vs consumer

Vuistregel: als twee verschillende sites dezelfde conversie of validatie nodig hebben → VSA-tooling. Als alleen déze site beslist “dit telt als product” of “zo zetten we de Hugo-CI in” → consumer-repo (bibliotheek, VSA-demo, …).

VSA-tooling Consumer (bibliotheek, demo, …)
Geldigheid van .vsa / .mvsa / .mxl / .mscz Welke bestanden horen bij welke representatie / publicatiespoor
Omzetten naar een canonieke of gekozen exportvorm / layoutprofiel Batch: wat wel/niet regenereren, sibling-namen, freshness-gates
Algemene CLI + optionele herbruikbare workflow_call-helpers Eigen site-CI (Hugo-build, Pages, productchecks)

Bibliotheek-id. Welke id bij een zangstuk hoort, bepaalt de bibliotheek (of een andere consumer). Product-scripts daar geven die id door met --bibliotheek-id / API-parameter. VSA-tooling zet de id in het colofon (layoutprofiel partituur). Pad-afleiding is alleen een fallback.

Layout / conventies. MSCZ-export kent benoemde profielen (partituur, plain); zie .mscz — layoutprofielen. De consumer kiest; VSA-tooling definieert en handhaaft.

Niet in VSA-tooling: productpipelines (sync_* / check_* met sitebeleid), “artefacten handmatig”, Hugo-site-CI voorbij generieke validate/render-helpers.

Zie ook Consumer-site — waar hoort wat.

Direct met pip

python -m pip install "vsa-tool[rendering] @ git+https://github.com/orthodox-ronl/VSA-tooling.git@main"

Voor productie bij voorkeur een tag i.p.v. @main, bijvoorbeeld @0.2.0 (zodra die tag bestaat). Werkinstructies (taggen in VSA-tooling én pinnen in bibliotheek / andere consumers): Releases: taggen en pinnen.

Daarna:

vsa --version
vsa validate content
vsa svg input.vsa output.svg

Markdown + SVG:

vsa build-markdown content generated\content generated\static\vsa --assets-url-prefix /vsa

Extra [rendering] is nodig voor SVG (Pillow + fonts in het package/repo).

Minimale consumer-layout

mijn-repo/
  content/                 # of content-source/
    voorbeeld.md           # Markdown met ::: vsa-notatie
  generated/               # build-output (niet committen)
  .github/workflows/
    render.yml             # zie hieronder

Geen Hugo verplicht: alleen validate / svg / musicxml volstaat voor batchconversie. Hugo (of MkDocs) komt pas bij een publicatiesite — zie Consumer-site.

In GitHub Actions (render)

name: Render VSA

on:
  push:
  workflow_dispatch:

jobs:
  vsa:
    uses: orthodox-ronl/VSA-tooling/.github/workflows/vsa-render-reusable.yml@main
    with:
      input_dir: content
      output_dir: generated/vsa/content
      assets_dir: generated/vsa/static/vsa
      assets_url_prefix: /vsa
      output_mode: img

De workflow valideert en uploadt gegenereerde Markdown/SVG als artifact.

GitHub Pages deploy

Na een site-build upload je het artifact en roep je de herbruikbare deploy-workflow aan. Die draait check-publication-output.py (tenzij overgeslagen) en pusht via peaceiris/actions-gh-pages@v4 naar gh-pages.

Repo-instelling: Settings → Pages → Deploy from a branch → gh-pages → / (niet “GitHub Actions”).

name: Deploy site

on:
  push:

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      # … bouw naar public/ …
      - uses: actions/upload-artifact@v7
        with:
          name: pages-site
          path: public
          if-no-files-found: error

  deploy:
    needs: build
    uses: orthodox-ronl/VSA-tooling/.github/workflows/pages-deploy-reusable.yml@main
    with:
      artifact_name: pages-site
      publish_dir: site
      destination_dir: preview
      url_prefix: /mijn-repo/preview/
      pages_url: https://orthodox-ronl.github.io/mijn-repo/preview/
    permissions:
      contents: write
Input Verplicht Toelichting
artifact_name ja Naam van upload-artifact in de build-job
publish_dir nee (default site) Downloadpad; moet index.html bevatten
destination_dir nee subdirectory op gh-pages (bijv. preview of branch-slug); leeg = root
url_prefix ja Publiek pad voor linkcheck, bv. /koor/preview/
keep_files nee (default true) true als subdirectory-deploys en productie gh-pages delen
skip_publication_check nee Alleen als de caller zelf al heeft gecontroleerd
pages_url nee URL in log na deploy
vsa_tooling_ref nee (default main) Ref voor check-script

Productie-deploy (root van gh-pages; sibling-mappen zoals preview/ en branch-previews die niet in de nieuwe site-build zitten blijven behouden):

  deploy:
    needs: build
    uses: orthodox-ronl/VSA-tooling/.github/workflows/pages-deploy-reusable.yml@main
    with:
      artifact_name: pages-site
      publish_dir: site
      url_prefix: /mijn-repo/
      pages_url: https://orthodox-ronl.github.io/mijn-repo/
    permissions:
      contents: write

Referentie-implementaties

Repo Wat je ziet
VSA-demo Volledige Hugo-consumer + Pages
Deze repo docs-pages.yml MkDocs tool-docs op Pages
bron docs-pages MkDocs + dezelfde deploy-reusable

Org-grenzen (D1)

Installeer de tool hier; dupliceer geen org-specs. Terminologie en zangstuk-formaat: bron — specs.

Tooling vs productbeleid / site-CI: zie Ownership: tooling vs consumer.

Taggen van VSA-tooling en pinnen in consumers: Releases: taggen en pinnen.