Driver build and release architecture

flowchart LR
  Matrix[customers.json] --> Fanout[release-all-customers]
  Manual[Manual dispatch] --> Release[release-driver]
  Fanout --> Release
  Release --> Resolve[Resolve niseCore / WBF / include SHAs]
  Resolve --> Change{Relevant SHA changed?}
  Change -->|yes| Build[build-driver reusable workflow]
  Build --> Action[Build action at pinned automation ref]
  Action --> Source[Checkout selected source refs]
  Source --> Compile[EWDK compile + package]
  Compile --> Validate[Tests / package validation]
  Validate --> Sign[Signing service]
  Sign --> Artifact[Build artifact]
  Artifact --> GHRelease[GitHub release]
  GHRelease --> History[Release-history record]
  Fanout --> Reconcile[Reconcile missing history rows]
  Reconcile --> History

Boundaries

ComponentSourceArchitectural responsibility
Customer matrix.github/customers.jsonSelects customer project, niseCore/WBF/include refs, EWDK, method and target.
Build workflow.github/workflows/build-driver.ymlDispatches the reusable build action with explicit inputs and protected secrets.
Release workflow.github/workflows/release-driver.ymlResolves exact SHAs, detects changes, builds, caches, packages, releases and records evidence.
All-customer orchestrator.github/workflows/release-all-customers.ymlFans out one release per matrix row and reconciles missing release-history updates.
Signing/publishingSign/, Pipeline_SynaSign*.bat, SynaSignService/Supports package signing and publication paths; secret material must remain external.
ValidationAccuracySuiteValidation/, AutoHLK/, BlackDuck/Provides accuracy, HLK and security/compliance pipeline assets.
Legacy/Jenkins pipelinesPipeline_.bat, niseBuild.cmdRetains legacy build/deploy flows alongside GitHub Actions.
Tuning/toolsAutoFRRTuning/, IPLTuning/, QMAutoTrain/, FPCollection/Provides tuning, scoring, collection and analysis tooling outside the core driver build.

Change-safety rules

  • Follow calls and data across component boundaries; a changed header or customer property can affect multiple binaries.
  • Keep source revision and branch explicit because configured branches differ substantially.
  • Validate both the component and its direct consumers.
  • Treat optional/customer-selected components as conditional, not universally deployed.