Release Candidate
Create and promote release candidates
sfp releasecandidate abortsfp releasecandidate fetchsfp releasecandidate finalizesfp releasecandidate generatesfp releasecandidate listsfp releasecandidate statussfp releasecandidate unbundlesfp releasecandidate update
sfp releasecandidate abort
Abort a release candidate, marking it as no longer deployable. Once aborted, the status cannot be changed. Note: Finalized release candidates cannot be aborted.
USAGE
$ sfp releasecandidate abort -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
<value>] [-r <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g.,
'core:Sprint_27.01-03-08')
-r, --reason=<value> Optional reason for aborting the release candidate
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Abort a release candidate, marking it as no longer deployable. Once aborted, the status cannot be changed. Note:
Finalized release candidates cannot be aborted.
EXAMPLES
$ sfp releasecandidate abort -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core
$ sfp releasecandidate abort -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --reason "Critical bug found"See code: src/commands/releasecandidate/abort.ts
sfp releasecandidate fetch
Fetch a release candidate from the server and write the release definition to a file
USAGE
$ sfp releasecandidate fetch -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
<value>] [-o <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g., 'sales:MyRelease')
-o, --output=<value> Path to write the release definition file. If not specified, writes to a temp file
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Fetch a release candidate from the server and write the release definition to a file
EXAMPLES
$ sfp releasecandidate fetch -n sales:MyRelease --repository myorg/myrepo
$ sfp releasecandidate fetch -n sales:MyRelease --repository myorg/myrepo -o ./release.ymlSee code: src/commands/releasecandidate/fetch.ts
sfp releasecandidate finalize
Finalize a release candidate, marking it as fully deployed. Also finalizes any intermediate candidates.
USAGE
$ sfp releasecandidate finalize -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
<value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g.,
'core:Sprint_27.01-03-08')
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Finalize a release candidate, marking it as fully deployed. Also finalizes any intermediate candidates.
EXAMPLES
$ sfp releasecandidate finalize -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core
$ sfp releasecandidate finalize --releasecandidate core:Sprint_27.01-03-08 --repository flxbl-io/sf-coreSee code: src/commands/releasecandidate/finalize.ts
sfp releasecandidate generate
Generate a release candidate from the current project and publish to server
USAGE
$ sfp releasecandidate generate -c <value> -f <value> -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>]
[--sfp-server-url <value>] [-b <value>] [-m <value>] [-s pending|in_progress|finalized] [--scope <value>]
[--nopublish] [--output <value>] [--loglevel
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-b, --branch=<value> The branch name for the release candidate
-c, --gitref=<value> (required) Git reference (commit SHA, tag, or branch) to generate release candidate
from
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-f, --configfile=<value> (required) Path to the release config file which determines how the release
definition should be generated
-m, --metadata=<value> Additional metadata in json format to include in the release candidate
-n, --releasename=<value> (required) Set a release name for the release candidate
-s, --status=<option> [default: pending] Initial status for the release candidate (default: pending)
<options: pending|in_progress|finalized>
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--nopublish Generate release definition without publishing to server
--output=<value> Path to write the generated release definition YAML
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--scope=<value> NPM scope for artifacts (e.g., @myorg). Required when using --npm flag
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Generate a release candidate from the current project and publish to server
EXAMPLES
$ sfp releasecandidate generate -n MyRelease -c HEAD -f config/release.yml --repository myorg/myrepo
$ sfp releasecandidate generate -n MyRelease -c HEAD -b main -f config/release.yml --repository myorg/myrepo
$ sfp releasecandidate generate -n MyRelease -c abc123 -f config/release.yml --status pending --repository myorg/myrepoSee code: src/commands/releasecandidate/generate.ts
sfp releasecandidate list
List release candidates from the server with optional filters
USAGE
$ sfp releasecandidate list -r <value> [--json] [-e <value>] [-t <value>] [--sfp-server-url <value>] [-d <value>] [-b
<value>] [-s pending|in_progress|finalized|aborted] [--limit <value>] [--offset <value>] [--loglevel
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-b, --branch=<value> Filter by branch
-d, --domain=<value> Filter by domain (release config name)
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-r, --repository=<value> (required) Filter by repository identifier (e.g., flxbl-io/sf-core)
-s, --status=<option> Filter by status (pending, in_progress, finalized)
<options: pending|in_progress|finalized|aborted>
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--limit=<value> [default: 50] Maximum number of results to return (default: 50)
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--offset=<value> Offset for pagination
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
List release candidates from the server with optional filters
EXAMPLES
$ sfp releasecandidate list --repository flxbl-io/sf-core
$ sfp releasecandidate list --repository flxbl-io/sf-core --domain core --status pending
$ sfp releasecandidate list --repository flxbl-io/sf-core --status in_progress --limit 10See code: src/commands/releasecandidate/list.ts
sfp releasecandidate status
Get or update the status of a release candidate
USAGE
$ sfp releasecandidate status -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
<value>] [-s <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g.,
'core:Sprint_27.01-03-08')
-s, --set=<value> Set the status to a new value. Reserved statuses: pending, in_progress, finalized.
Custom statuses (e.g., testing, staging) are also allowed. Note: finalized and
aborted statuses are locked and cannot be changed. Use 'sfp releasecandidate abort'
to abort a release candidate.
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Get or update the status of a release candidate
EXAMPLES
$ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core
$ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set in_progress
$ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set finalized
$ sfp releasecandidate status -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --set testingSee code: src/commands/releasecandidate/status.ts
sfp releasecandidate unbundle
Unbundle commits from a release branch by reconstructing it from the previous release candidate's baseline. Resets the release branch to the previous finalized RC's state, then re-applies only the commits that should remain — identical to the repo:patch construction approach.
USAGE
$ sfp releasecandidate unbundle -n <value> --commits <value> [--json] [--repository <value>] [-e <value>] [-t <value>]
[--sfp-server-url <value>] [--release-branch <value>] [--baseline-release-candidate <value>] [--source-branch
<value>] [--domain <value>] [--conflict-strategy ours|theirs] [--label <value>] [--loglevel
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is
provided. Can be set via SFP_SERVER_USER env var.
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g.,
'core:Sprint_27')
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN
env var (CLI flags take precedence over env vars).
--baseline-release-candidate=<value> Previous release candidate to use as baseline (e.g., 'core:Sprint_26'). The
release branch HEAD of this RC becomes the reconstruction baseline. Requires
--sfp-server-url.
--commits=<value> (required) Comma-separated list of commit SHAs (as they appear on the
release branch) to remove
--conflict-strategy=<option> [default: ours] Conflict resolution strategy: 'ours' keeps release branch
state (default), 'theirs' keeps incoming changes
<options: ours|theirs>
--domain=<value> Domain name (e.g., 'billing'). Filters commits to only those touching
packages in this domain. Also used to auto-detect the baseline via the
previous finalized RC for the domain.
--label=<value> Optional label for the bundle being removed (e.g., 'PR #423: Revenue
Category')
--loglevel=<option> [default: info] logging level for this command invocation
<options:
trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--release-branch=<value> Name of the release branch to reconstruct. Defaults to
'release/{releaseName}'
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or
`org/project/repo` for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
--source-branch=<value> [default: main] The source branch the RC was built from (default: main)
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Unbundle commits from a release branch by reconstructing it from the previous release candidate's baseline. Resets the
release branch to the previous finalized RC's state, then re-applies only the commits that should remain — identical
to the repo:patch construction approach.
EXAMPLES
$ sfp releasecandidate unbundle -n core:Sprint_27 --commits abc123 --sfp-server-url http://sfp --repository owner/repo
$ sfp releasecandidate unbundle -n core:Sprint_27 --commits abc123 --baseline-release-candidate core:Sprint_26 --sfp-server-url http://sfp --repository owner/repo
$ sfp releasecandidate unbundle -n billing:Sprint_27 --commits abc123 --domain billing --sfp-server-url http://sfp --repository owner/repoSee code: src/commands/releasecandidate/unbundle.ts
sfp releasecandidate update
Update packages in a release candidate by excluding packages or overriding their versions. Note: Cannot update release candidates with locked statuses (finalized, aborted).
USAGE
$ sfp releasecandidate update -n <value> [--json] [--repository <value>] [-e <value>] [-t <value>] [--sfp-server-url
<value>] [-e <value>] [-o <value>] [--loglevel trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
FLAGS
-e, --email=<value> Email address for authenticated user. Ignored if --application-token is provided. Can
be set via SFP_SERVER_USER env var.
-e, --exclude=<value> Comma-separated list of package names to exclude from the release candidate (e.g.,
'pkg-a,pkg-b')
-n, --releasecandidate=<value> (required) Release candidate in format 'domain:releaseName' (e.g.,
'core:Sprint_27.01-03-08')
-o, --override=<value> Comma-separated list of package version overrides in format 'package=version' (e.g.,
'pkg-a=1.2.3,pkg-b=2.0.0')
-t, --application-token=<value> Application token for CI/CD authentication. Can be set via SFP_SERVER_TOKEN env var
(CLI flags take precedence over env vars).
--loglevel=<option> [default: info] logging level for this command invocation
<options: trace|debug|info|warn|error|fatal|TRACE|DEBUG|INFO|WARN|ERROR|FATAL>
--repository=<value> The repository identifier. E.g `owner/repo` for GitHub/GitLab or `org/project/repo`
for Azure DevOps
--sfp-server-url=<value> URL of the SFP server. Can be set via SFP_SERVER_URL env var or config: sfp
config:set server-url
GLOBAL FLAGS
--json Format output as json.
DESCRIPTION
Update packages in a release candidate by excluding packages or overriding their versions. Note: Cannot update release
candidates with locked statuses (finalized, aborted).
EXAMPLES
$ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --exclude pkg-a,pkg-b
$ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --override "pkg-a=1.2.3,pkg-b=2.0.0"
$ sfp releasecandidate update -n core:Sprint_27.01-03-08 --repository flxbl-io/sf-core --exclude pkg-a --override "pkg-b=2.0.0"See code: src/commands/releasecandidate/update.ts