codevsfp CLIsfp serverlibraries

Release Candidate

Create and promote release candidates

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.yml

See 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-core

See 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/myrepo

See 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 10

See 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 testing

See 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/repo

See 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

On this page