oci-zero 0.3.0

A no-std, allocation-free streaming core for OCI registries
Documentation
name: E2E overhead

on:
  workflow_dispatch:
    inputs:
      fixture:
        description: Digest-pinned workload
        required: true
        default: ghcr-64m-w64k
        type: choice
        options:
          - datadog-10m-w32m
          - ghcr-64m-w64k
          - ghcr-256m-w256k

permissions:
  contents: read

jobs:
  measure:
    name: Linux overhead measurement
    runs-on: ubuntu-24.04
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: dtolnay/rust-toolchain@d1031067263f94b142dd6c0ce24c5eb9d02d52a0 # v1
        with:
          toolchain: stable
      - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
        with:
          prefix-key: oci-zero-v2
          shared-key: e2e-overhead
          cache-bin: false
      - name: Install profilers
        run: sudo apt-get update && sudo apt-get install --yes time valgrind
      - name: Run end-to-end harness
        run: bench/e2e-overhead.sh --fixture '${{ inputs.fixture }}'
      - name: Upload measurements
        if: always()
        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
        with:
          name: e2e-overhead-${{ inputs.fixture }}-${{ runner.arch }}-callgrind
          path: target/e2e-overhead/
          if-no-files-found: error