Skip to main content

Build Solutions

Solutions are build variants that produce different outputs from the same source code. They're defined in package.conf.jsonp and selected by the build system based on the deployment target.

What Are Solutions?​

A single Oidis project can be built for multiple targets:

  • Development on localhost
  • Docker container for staging
  • ARM architecture for IoT devices
  • Standalone desktop application

Each target may need different settings, dependencies, or output formats. Solutions handle this.

Defined in package.conf.jsonp​

Io.Oidis.Builder.DAO.Resources.Data({
// ...
solutions: {
static: {
// Typical development profile
// Used for local development and debugging
},
shared: {
// DevOps profile for Docker image assembly
// Used by CI pipeline
},
app: {
// Desktop application packaging
},
arm: {
// ARM architecture build
}
}
})

Common Solution Types​

SolutionPurposeWhen Used
staticLocal developmentoidis rebuild --solution=static
sharedDocker/CI deploymentCI pipeline (build.sh --solution=shared)
appDesktop applicationElectron/JxBrowser packaging
armARM architectureIoT/embedded deployment

How DevOps Selects Solutions​

The DevOps pipeline selects the appropriate solution based on the deployment target:

  1. CI pipeline (build.sh) uses --solution=shared for all build steps:

    oidis install --solution=shared
    oidis test coverage --solution=shared
    oidis rebuild-eap --solution=shared
  2. Local development typically uses static (the default)

  3. Desktop builds use app for Electron/JxBrowser-specific packaging

The solution name is passed as a CLI flag — the same source code produces different outputs based on which solution is selected.

Solution-Specific Behavior​

Solutions can override:

  • Output paths and bundle formats
  • Included/excluded modules
  • Optimization levels
  • Target platform settings
  • Environment-specific configurations

See also: JSONP System | Runtime Configuration | Docker & CI