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
| Solution | Purpose | When Used |
|---|---|---|
static | Local development | oidis rebuild --solution=static |
shared | Docker/CI deployment | CI pipeline (build.sh --solution=shared) |
app | Desktop application | Electron/JxBrowser packaging |
arm | ARM architecture | IoT/embedded deployment |
How DevOps Selects Solutions
The DevOps pipeline selects the appropriate solution based on the deployment target:
-
CI pipeline (
build.sh) uses--solution=sharedfor all build steps:oidis install --solution=shared
oidis test coverage --solution=shared
oidis rebuild-eap --solution=shared -
Local development typically uses
static(the default) -
Desktop builds use
appfor 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