Skip to content

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

YAML Definition Format

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

Metadata Fields

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:

  1. Dependency Analysis: Analyzes all releases in the YAML file
  2. Topological Sorting: Orders submissions based on dependencies
  3. Foundation First: Submits releases without dependencies first
  4. 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

  1. Logical Ordering: Place foundation releases before dependent ones
  2. Clear Descriptions: Use descriptive release descriptions
  3. Consistent Naming: Follow systematic version naming conventions
  4. Path Management: Use relative paths for package files

Dependency Management

  1. Minimize Dependencies: Keep dependency chains as simple as possible
  2. Clear Baselines: Always specify baselines for incremental releases
  3. Version Consistency: Ensure dependency versions exist before submission

File Management

  1. Version Control: Store YAML files in version control
  2. Backup Strategy: Keep backups of package files
  3. Directory Structure: Organize files logically
  4. Cleanup: Remove temporary files after successful submission

Testing Strategy

  1. Dry Run: Test YAML syntax before submission
  2. Staging Environment: Test in non-production environment first
  3. Incremental Testing: Test with small batches before large submissions
  4. Rollback Plan: Have a plan for handling failed submissions


Next Steps

After Submission

Integration and Automation