feat: opt in bulk publish in deploy command #260
Open
ayeshurun wants to merge 20 commits into
Open
Conversation
This script benchmarks the startup performance of the CLI by measuring module import times, CLI invocation times, and heavy dependency loading. It allows comparisons against a baseline branch or tag.
Bumps the fabric-cicd dependency to >=1.2.0.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an opt-in configuration switch to enable experimental “bulk publish” behavior for fab deploy by turning on the required fabric-cicd feature flags, along with dependency/docs/tests updates to support and document the new capability.
Changes:
- Introduces
deploy_bulk_publish_enabledconfig key (defaultfalse) and wires it intodeploy_with_config_fileto appendenable_experimental_features+enable_bulk_publish. - Updates documentation and changelog entry describing how to enable/disable the experimental behavior.
- Bumps
fabric-cicddependency floor to>=1.2.0and adds/updates tests + VCR recordings for the new setting.
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
src/fabric_cli/core/fab_constant.py |
Registers the new deploy_bulk_publish_enabled config key, valid values, and default. |
src/fabric_cli/commands/fs/deploy/fab_fs_deploy_config_file.py |
Applies bulk publish feature flags (and warns) when the config setting is enabled. |
requirements-dev.txt |
Raises dev dependency minimum for fabric-cicd to support bulk import API. |
pyproject.toml |
Raises runtime dependency minimum for fabric-cicd to support bulk import API. |
docs/essentials/settings.md |
Documents the new config setting in the settings table. |
docs/commands/fs/deploy.md |
Adds “Bulk Publish (Experimental)” section with usage and notes. |
.changes/unreleased/added-20260701-121400.yaml |
Adds changelog entry for the new opt-in deploy setting. |
tests/test_utils/test_fab_deploy_bulk_publish.py |
Adds unit-style tests asserting the feature flags are appended (without VCR). |
tests/test_commands/test_deploy.py |
Adds an E2E test case verifying the flags are appended when config is enabled. |
tests/test_commands/recordings/test_commands/test_deploy/test_deploy_multiple_items_bulk_publish_enabled_success.yaml |
New VCR cassette for the new E2E scenario. |
tests/test_commands/recordings/test_commands/test_deploy/class_setup.yaml |
Updates recorded headers/values (User-Agent, timestamps, etc.) for the test class setup cassette. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
By default,
fab deploypublishes items one at a time. This PR introduces an opt-in--bulk_publishcommand flag, when provided, the deploy command uses a single bulk import API call via the underlyingfabric-cicdlibrary.The feature is disabled by default, so existing deployments keep the standard per-item publish behavior. When enabled, the CLI automatically turns on the required
enable_experimental_featuresandenable_bulk_publishfabric-cicd feature flags and prints a warning that the feature is experimental.Changes
--bulk_publish(if not provided, default isfalse).deploy_with_config_filenow calls_apply_bulk_publish_feature_flags(args), which appends theenable_experimental_featuresandenable_bulk_publishfeature flags and warns the user when the flag was provided.fabric-cicdrequirement from>=0.3.1to>=1.2.0inpyproject.tomlandrequirements-dev.txt(required for the bulk import API).