CLI Bulk Submit Command
The vdc ingredient-release bulk-submit
command enables efficient submission of multiple ingredient releases in a single operation. This command is essential for complex release scenarios, batch processing, and automated workflows that need to publish multiple related components simultaneously.
Command Syntax
vdc ingredient-release bulk-submit [options]
Required Parameters
--path <path>
: Path to the YAML definition file (REQUIRED)
Optional Parameters
--verbose
: Enable detailed logging for debugging
--token <token>
: Authentication token
Options Reference
Option |
Description |
Required |
Example |
--path <path> |
Path to YAML definition file |
Yes |
--path releases.yaml |
--verbose |
Enable detailed logging |
No |
--verbose |
--token <token> |
Authentication token |
Yes |
--token $VDC_TOKEN |
The bulk submit command uses a YAML configuration file to define multiple releases. Here's the complete specification:
Complete YAML Example
# bulk-releases.yaml
project: "Michal-project"
feed: "Default"
releases:
- name: "MT-Test_Ingredient"
version: "2.0.1"
metadata:
description: "Initial release with basic functionality"
releaseDate: 2025-07-23T15:30:00Z
dependencies:
- name: "MT-Test_Ingredient"
version: "2.0.2"
projectName: "Michal-project"
feedName: "Default"
straps:
- name: "CsePlugin:EseUepNvar:BtGuardBspInitEnable"
value: "Enabled"
fITToolId:
name: "mFIT_NVL"
version: "NVL-S_2025.26.5.01"
projectName: "VDC-Tools"
feedName: "Default"
packages:
- "./packages/mt-test-2.0.1.zip"
- "./packages/mt-test-3.0.1.zip"
- name: "MT-Test_Ingredient"
version: "2.0.2"
metadata:
description: "Updated release with security patches"
releaseDate: 2025-07-23T15:30:00Z
baseline:
name: "MT-Test_Ingredient"
version: "2.0.3"
projectName: "Michal-project"
feedName: "Default"
straps:
- name: "CsePlugin:EseUepNvar:BtGuardBspInitEnable"
value: "Enabled"
fITToolId:
name: "mFIT_NVL"
version: "NVL-S_2025.26.5.01"
projectName: "VDC-Tools"
feedName: "Default"
packages:
- "./packages/mt-test-2.0.2.zip"
- name: "MT-Test_Ingredient"
version: "2.0.3"
metadata:
description: "Foundation release"
releaseDate: 2025-07-23T15:30:00Z
straps:
- name: "CsePlugin:EseUepNvar:BtGuardBspInitEnable"
value: "Enabled"
fITToolId:
name: "mFIT_NVL"
version: "NVL-S_2025.26.5.01"
projectName: "VDC-Tools"
feedName: "Default"
packages:
- "./packages/mt-test-2.0.3.zip"
Minimal YAML Example
# simple-bulk-releases.yaml
project: "validation-team"
feed: "main"
releases:
- name: "SIMPLE_COMPONENT"
version: "1.0.0"
metadata:
description: "First release"
releaseDate: 2025-07-23T15:30:00Z
packages:
- "./build/simple-1.0.0.zip"
- name: "SIMPLE_COMPONENT"
version: "1.1.0"
metadata:
description: "Updated release"
releaseDate: 2025-07-23T16:00:00Z
baseline:
name: "SIMPLE_COMPONENT"
version: "1.0.0"
projectName: "validation-team"
feedName: "main"
packages:
- "./build/simple-1.1.0.zip"
YAML Fields Reference
Top-Level Fields
Field |
Type |
Required |
Description |
project |
string |
Yes |
Target project name |
feed |
string |
Yes |
Target feed name |
releases |
array |
Yes |
List of releases to submit |
Release Fields
Field |
Type |
Required |
Description |
name |
string |
Yes |
Ingredient name |
version |
string |
Yes |
Release version |
metadata |
object |
No |
Release metadata |
packages |
array |
No |
List of package file paths |
Field |
Type |
Required |
Description |
description |
string |
No |
Release description |
releaseDate |
string |
No |
Release timestamp (ISO 8601) |
baseline |
object |
No |
Baseline release reference |
dependencies |
array |
No |
List of dependent releases |
straps |
array |
No |
IFWI-specific strap configurations |
fITToolId |
object |
No |
FIT tool reference |
Baseline Object
Field |
Type |
Required |
Description |
name |
string |
Yes |
Baseline ingredient name |
version |
string |
Yes |
Baseline version |
projectName |
string |
Yes |
Baseline project |
feedName |
string |
Yes |
Baseline feed |
Dependencies Array Elements
Field |
Type |
Required |
Description |
name |
string |
Yes |
Dependency ingredient name |
version |
string |
Yes |
Dependency version |
projectName |
string |
Yes |
Dependency project |
feedName |
string |
Yes |
Dependency feed |
Usage Examples
Basic Bulk Submission
# Submit multiple releases from YAML
vdc ingredient-release bulk-submit --path ./bulk-releases.yaml --token $VDC_TOKEN
# With verbose logging for debugging
vdc ingredient-release bulk-submit --path ./bulk-releases.yaml --verbose --token $VDC_TOKEN
Complex Scenarios
Multi-Component Release
# multi-component-release.yaml
project: "platform-team"
feed: "integration"
releases:
# Foundation release (no dependencies)
- name: "BIOS_CORE"
version: "1.0.0"
metadata:
description: "Base BIOS release"
releaseDate: 2025-07-23T10:00:00Z
packages:
- "./builds/bios-core-1.0.0.bin"
# UCODE release (independent)
- name: "UCODE_SECURITY"
version: "0x20250723"
metadata:
description: "Security microcode update"
releaseDate: 2025-07-23T11:00:00Z
packages:
- "./builds/ucode-security-20250723.bin"
# IFWI release (depends on BIOS and UCODE)
- name: "PLATFORM_IFWI"
version: "2025WW30.1"
metadata:
description: "Complete platform IFWI"
releaseDate: 2025-07-23T15:00:00Z
dependencies:
- name: "BIOS_CORE"
version: "1.0.0"
projectName: "platform-team"
feedName: "integration"
- name: "UCODE_SECURITY"
version: "0x20250723"
projectName: "platform-team"
feedName: "integration"
straps:
- name: "SecurityFeature:TxtEnable"
value: "Enabled"
- name: "DebugFeature:SerialOutput"
value: "Disabled"
packages:
- "./builds/platform-ifwi-2025ww30.1.zip"
Incremental Release Chain
# incremental-releases.yaml
project: "validation-team"
feed: "main"
releases:
# Base release
- name: "FIRMWARE_BASE"
version: "1.0.0"
metadata:
description: "Initial firmware release"
releaseDate: 2025-07-20T10:00:00Z
packages:
- "./builds/firmware-1.0.0.bin"
# Patch release 1
- name: "FIRMWARE_BASE"
version: "1.0.1"
metadata:
description: "Bug fix release"
releaseDate: 2025-07-21T10:00:00Z
baseline:
name: "FIRMWARE_BASE"
version: "1.0.0"
projectName: "validation-team"
feedName: "main"
packages:
- "./builds/firmware-1.0.1.bin"
# Patch release 2
- name: "FIRMWARE_BASE"
version: "1.0.2"
metadata:
description: "Security update"
releaseDate: 2025-07-22T10:00:00Z
baseline:
name: "FIRMWARE_BASE"
version: "1.0.1"
projectName: "validation-team"
feedName: "main"
packages:
- "./builds/firmware-1.0.2.bin"
Key Features
Smart Dependency Ordering
The bulk submit command automatically handles dependencies:
- Dependency Analysis: Analyzes all releases in the YAML file
- Topological Sorting: Orders submissions based on dependencies
- Foundation First: Submits releases without dependencies first
- Sequential Processing: Submits dependent releases after their dependencies
Duplicate Detection
- Automatic Skipping: Checks if releases already exist in VDC
- User Notification: Reports which releases were skipped
- Continuous Processing: Continues with remaining releases if some already exist
Error Resilience
- Failure Isolation: If one release fails, continues with others
- Detailed Reporting: Reports success/failure for each release
- Retry Logic: Can be run multiple times safely
Best Practices
YAML Organization
- Logical Ordering: Place foundation releases before dependent ones
- Clear Descriptions: Use descriptive release descriptions
- Consistent Naming: Follow systematic version naming conventions
- Path Management: Use relative paths for package files
Dependency Management
- Minimize Dependencies: Keep dependency chains as simple as possible
- Clear Baselines: Always specify baselines for incremental releases
- Version Consistency: Ensure dependency versions exist before submission
File Management
- Version Control: Store YAML files in version control
- Backup Strategy: Keep backups of package files
- Directory Structure: Organize files logically
- Cleanup: Remove temporary files after successful submission
Testing Strategy
- Dry Run: Test YAML syntax before submission
- Staging Environment: Test in non-production environment first
- Incremental Testing: Test with small batches before large submissions
- Rollback Plan: Have a plan for handling failed submissions
Next Steps
After Submission
Integration and Automation