Skip to content
dbpm

dbpm bootstrap-core

Install or initialize Core, the dbpm in-database deployment substrate, into an empty or prepared schema. This command is required before any ordinary package deployments can run.

dbpm bootstrap-core source [--approve] [--package NAME]
[--policy locked|unlocked]
[--deploy-environment NAME]
[--registry-url URL] [--dry-run]
[--connect STRING | --connect-name NAME] [--runner EXEC]
flowchart LR
command["command"] --> dbpm["dbpm"]
dbpm --> bootstrap["bootstrap-core"]
bootstrap --> source["source"]
source --> options["{ option }"]
options --> end_node(("end"))
options -. expands to .-> option["option"]
option --> approve["--approve"]
option --> policy["--policy locked|unlocked"]
option --> deploy_environment["--deploy-environment NAME"]
option --> package["--package NAME"]
option --> registry_url["--registry-url URL"]
option --> dry_run["--dry-run"]
option --> connect["--connect STRING or --connect-name NAME"]
option --> runner["--runner EXEC"]
package -. only when source is a workspace root .-> package_note["selects workspace package"]
registry_url -. only for registry sources .-> registry_note["sets registry base URL"]
dry_run -. changes execution .-> dry_run_note["prints plan without executing"]
policy -. bootstrap only .-> policy_note["sets DEPLOY_LOCKED before Core exists"]
deploy_environment -. bootstrap only .-> env_note["sets DEPLOY_ENVIRONMENT before Core exists"]
ArgumentDefaultDescription
sourcerequiredPackage source for the Core artifact. See source types.
--approvefalseApprove policy-gated actions that would otherwise be blocked.
--policyunlockedCore bootstrap deployment-lock policy. locked writes DEPLOY_LOCKED=Y; unlocked writes DEPLOY_LOCKED=N.
--deploy-environmentnoneCore DEPLOY_ENVIRONMENT label to write during bootstrap, such as DEV, QLAB01, PLAB, or PROD.
--packagenonePackage name or application name to select when source is a workspace root.
--registry-urlDBPM_REGISTRY_URL or https://registry.dbpm.ioRegistry base URL for registry: sources.
--dry-runfalsePrint the deployment plan as JSON without executing.
--connectDBPM_CONNECTRaw SQL*Plus/SQLcl connect string. Mutually exclusive with --connect-name.
--connect-nameDBPM_CONNECT_NAMESQLcl saved connection name. Requires SQLcl via --runner or DBPM_SQL_RUNNER.
--runnerDBPM_SQL_RUNNER or sqlplusSQL runner executable.

Bootstrap Core from GitHub Packages:

Terminal window
dbpm bootstrap-core \
gh-maven:512itconsulting/core:com.512itconsulting.database:core:3.5.0 \
--connect user/pass@db

Bootstrap Core for a locked production-like schema:

Terminal window
dbpm bootstrap-core \
gh-maven:512itconsulting/core:com.512itconsulting.database:core:3.5.0 \
--policy locked \
--deploy-environment PROD \
--connect user/pass@db

Preview the plan without executing:

Terminal window
dbpm bootstrap-core \
gh-maven:512itconsulting/core:com.512itconsulting.database:core:3.5.0 \
--dry-run
  • Core uses its own bootstrap manifest because pkg_application does not exist until Core’s own objects are created. The bootstrap path is distinct from the ordinary install path.
  • Core 3.5.0 and newer require DEPLOY_LOCKED and DEPLOY_ENVIRONMENT during bootstrap. dbpm does not read Core deployment-lock policy before Core exists, so use --policy and --deploy-environment for bootstrap-time values.
  • Run dbpm check-core after bootstrap to verify the installation.
  • Core upgrades after initial bootstrap use dbpm upgrade, not dbpm bootstrap-core.

Source: docs/commands/bootstrap-core.md