Start
Set up a repository
- Install
- dotnet tool install --global left-code.AlWasp
- Discover projects
- alwasp init
- Validate config
- alwasp config validate
- Build default target
- alwasp build
The commands, config decisions, release clock, and CI signals worth keeping within arm’s reach.
01 / Commands
Start
Build
Maintain
Verify
02 / Config anatomy
{
"$schema": "https://alwasp.dev/schema/alwasp.schema.json",
"version": 1,
"defaultTarget": "ci",
"apps": [{ "id": "Core", "path": "./Core" }],
"tests": [{ "id": "CoreTest", "path": "./CoreTest", "app": "Core" }],
"profiles": {
"appsource": { "include": "apps", "appSourceCop": true },
"test": { "include": "tests", "needsProfile": "appsource" }
},
"targets": { "ci": ["appsource", "test"] }
}Merge order
Lists merge. Most strings and booleans use the most specific value.
Temporary transforms
Build restores the original app.json. version apply writes version changes permanently.
03 / Git changes
latestNewest local taglatest:v*Newest local tag matching a globlatest-merge:<text>Nearest matching first-parent merge<git-ref>Explicit tag, branch, or commitincludeDependents: true to expand downstream. The older changeDetection.includeDependencies name is deprecated.04 / Release clock
The switch is inclusive. Repeated calculations in the same target month increment the build number.
Hotfix was removed; repeated Release calculations cover that workflow.
05 / Compatibility
alwasp compare old.app new.app \
--json output/compare.jsonInformational public-symbol change log between two compiled apps — always exits 0.
alwasp validate compatibility \
--project-root ./src \
--baseline-directory ./latestRecompiles current source against historical packages and validates in dependency order.
Authentication
URL=ENV_VAR mappingAuto, Interactive, or NonInteractiveOutputs
Exit signals