Skip to content

OCI Compatible Archives Support #35

@Virviil

Description

@Virviil

Description

Add support for non-image OCI artifacts like Helm charts and ArgoCD applications packed as OCI artifacts, requiring a different processing workflow.

Complexity

High - This is a complex task requiring a fundamentally different approach since these artifacts lack standard Docker image structure.

Challenge

Unlike Docker images, OCI artifacts (Helm charts, ArgoCD apps, etc.) have:

  • No standard image config structure
  • No layer history like Docker images
  • Different metadata and annotation handling
  • Various artifact types with different internal structures

Tasks

  • Research OCI artifact specifications and common types
  • Implement artifact type detection from OCI manifest
  • Design alternative Git commit structure for non-layered artifacts
  • Create custom processors for different artifact types:
    • Helm charts
    • ArgoCD applications
    • Generic OCI artifacts
  • Implement metadata extraction specific to each artifact type
  • Add comprehensive tests for different artifact scenarios
  • Update CLI to handle artifact-specific options

Skills Required

  • Rust programming (advanced)
  • Deep OCI specification knowledge
  • Helm chart understanding
  • ArgoCD application structure knowledge
  • Complex workflow and architecture design
  • Metadata parsing and Git repository design

Technical Challenges

Artifact Detection

// Detect artifact type from manifest annotations
match manifest.annotations.get("org.opencontainers.artifact.type") {
    Some("application/vnd.cncf.helm.chart.content.v1.tar+gzip") => process_helm_chart(),
    Some("application/vnd.argoproj.application+yaml") => process_argo_app(),
    _ => process_generic_artifact(),
}

Different Git Structure

Instead of layer-based commits, create artifact-based structure:

  • Initial commit: Artifact metadata
  • Content commits: Logical groupings of files
  • Preserve artifact-specific annotations and labels

Helm Chart Processing

  • Extract Chart.yaml metadata
  • Process templates, values, and dependencies
  • Maintain Helm-specific directory structure

ArgoCD Application Processing

  • Parse application manifests
  • Handle Kustomize/Helm source references
  • Preserve ArgoCD-specific configurations

Implementation Approach

  1. Detection Phase: Identify artifact type from manifest
  2. Processing Phase: Use artifact-specific processor
  3. Git Generation Phase: Create appropriate repository structure
  4. Metadata Phase: Extract and store artifact-specific metadata

Files to Create

  • src/artifact_processors/ - New module for artifact handling
  • src/artifact_processors/helm.rs - Helm chart processor
  • src/artifact_processors/argo.rs - ArgoCD app processor
  • src/artifact_processors/generic.rs - Generic artifact processor

Files to Modify

  • Main processing pipeline - Add artifact detection
  • Git repository generation - Support different structures
  • CLI options - Add artifact-specific flags

Expected Impact

Expand oci2git beyond Docker images to support the growing ecosystem of OCI artifacts, making it a comprehensive OCI analysis tool.

This is an advanced task perfect for experienced Hacktoberfest contributors! 🎃

Hacktoberfest 2025 🍂

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthacktoberfestIssues perfect for Hacktoberfest contributions

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions