Skip to content

Workflows

Sytse Walraven edited this page Apr 13, 2026 · 3 revisions

Trigger

Aanmaken/updaten van een pull request en bij een push naar main of develop wanneer er wijzigingen zijn in de map doc/.

Stappen

  1. Run tests

    Valideert dat doc/NLCSValidatieRegels.xml voldoet aan de eisen van doc/NLCSValidatieRegels.xsd.

  2. Install dependencies

    Installeert de benodigde Saxon-HE (en SchXslt2) afhankelijkheden.

  3. Generate and compare HTMLs

    Genereert NLCSValidatieRegels.html en controleert of deze overeenkomt met de huidige inhoud van het bestand.

  4. Generate and compare SVGs

    Genereert visualisaties van de testdata in assets/ en controleert of deze overeenkomt met de huidige inhoud van het bestand.

Trigger

Aanmaken/updaten van een pull request en bij een push naar main of develop.

Stappen

  1. Check rule coverage

    Controleert of alle regels uit doc/NLCSValidatieRegels.xml gedekt zijn in validation_schemas/base/v12.sch. Workflow faalt indien regels niet geïmplementeerd zijn en/of niet bestaande regels in het Schematron bestand aanwezig zijn.

Trigger

Aanmaken/updaten van een pull request en bij een push naar main of develop.

Stappen

  1. Install dependencies

    Installeert de benodigde Saxon-HE en SchXslt2 afhankelijkheden.

  2. Validate rule test data XSD compliance

    Controlleert of de testbestanden in test/rule_validation_data/ voldoen aan de NLCS++ XSD.

  3. Transpile phases to XSL

    Transpileert de Schematron bestanden naar een apart XSL bestand per fase (regel). Hierdoor is het mogelijk om elke regel geïsoleerd te testen.

  4. Validate rules

    Voert de validatie van de regel-specifieke testdata uit. Hierbij wordt voor elke regel zowel de slagende als falende testdata gebruikt en wordt er voor elke test een validatierapport gegenereerd.

  5. Upload validation reports

    Uploadt de validatierapporten als een artifact, wat nuttig kan zijn bij het debuggen van de tests of workflow.

  6. Validate test reports

    Controlleert of elk validatierapport van de slagende testdata geslaagd is (geen falende asserts bevat), en elk validatierapport van de falende testdata gefaald is (op zijn minst één falende assert bevat).

  7. Check rule object coverage

    Controlleert per regel of elk validatieobject dat verwacht wordt op zijn minst in één falend validatierapport voorkomt.

Trigger

Aanmaken/updaten van een pull request en bij een push naar main of develop.

Stappen

  1. Install dependencies

    Installeert de benodigde Saxon-HE en SchXslt2 afhankelijkheden.

  2. Add scope checks

    Maakt kopieën van de bestanden in validation_schemas/abstract_patterns waarbij aan elke context (bijvoorbeeld nlcs:MSkabel) een filter wordt toegevoegd dat controleert of de validatie van de regel uitgevoerd moet worden afhankelijk van de scope van de context. Deze kopieën worden in validation_schemas/abstract_patterns_scope_checks opgeslagen.

    Vervolgens wordt er een kopie gemaakt van het Schematron basisbestand validation_schemas/base/v12.sch die gebruikt maakt van de zojuist gekopieërde abstract_patterns_scope_check bestanden. Deze kopie wordt in validation_schemas/base_scope_checks/v12.sch opgeslagen.

  3. Transpile Schematron to XSL

    Transpileer de Schematron bestanden met scope checks naar XSL.

  4. Validate scopes

    Voor elke scope worden kopieën gemaakt van het test/scope_validation_data/v12/scope_template.xml met alle mogelijk combinaties van tekening type, status en bedrijfstoestand. Dit template bestand bevat elk NLCS++ objecttype dat gevalideerd wordt.

    Vervolgens wordt er met elke kopie een validatie uitgevoerd. Het validatierapport wordt uitgelezen om vast te leggen welke validatieregels uitgevoerd zijn (slagend dan wel falend). Deze worden vervolgens vastgelegd, samen met de regels die verwacht waren, de regels die missen en de regels die niet verwacht waren met wel uitgevoerd zijn. Als er missende of onbedoelde validatieregels aanwezig zijn wordt de dit gerapporteerd en zal de workflow falen.

Trigger

Pushen van een tag, startend met v (bijvoorbeeld v1.0.0).

Stappen

  1. Install dependencies

    Installeert de benodigde Saxon-HE en SchXslt2 afhankelijkheden.

  2. Add scope checks:

    Maakt kopieën van de bestanden in validation_schemas/abstract_patterns/ waarbij aan elke context (bijvoorbeeld nlcs:MSkabel) een filter wordt toegevoegd dat controleert of de validatie van de regel uitgevoerd moet worden afhankelijk van de scope van de context. Deze kopieën worden in validation_schemas/abstract_patterns_scope_checks/ opgeslagen.

    Vervolgens wordt er een kopie gemaakt van het Schematron basisbestand validation_schemas/base/v12.sch die gebruikt maakt van de zojuist gekopieërde abstract_patterns_scope_check bestanden. Deze kopie wordt in validation_schemas/base_scope_checks/v12.sch opgeslagen.

  3. Transpile Schematron to XSL

    Transpileer de Schematron bestanden met scope checks naar XSL.

  4. Bundle deliverables

    Kopieert en verpakt de benodigde bestanden voor de release in dist.zip:

    • De zojuist getranspileerde XSL-representatie van de Schematron bestanden
    • De benodigde XSL functies voor o.a. geometrie en configuratie
    • Configuratiebestanden uit doc/ en configuration/
    • Lokalisaties (Nederlands en Engels) van de berichten voor falende asserts
  5. Upload deliverables

    Upload de deliverables als een artifact, wat nuttig zijn bij het debuggen van de release of workflow.

  6. Upload release

    Upload de deliverables (naast de source code) als een release op GitHub.

Clone this wiki locally