Open Container Initiative

How Package Origin conforms with the Open Container Initiative's Distribution Specification.

The Open Container Initiative (OCI), an open source community for creating open standards around containers. As part of their work, the OCI publish a Distribution Specification.

Package Origin aims to support the OCI’s Distribution Specification as a pull-only container registry.

Package Origin Conforms

Package Origin v1.1.0+ conforms to the OCI Distribution Specification v1.0.1, with two test fixes1.

Conformance Results

View the latest conformance results.

Reproduce the Results

Follow these steps to reproduce the conformance results.

Set up Package Origin

The test can be run against the public https://pkg.miln.eu repository, or to set up a local instance of Package Origin:

  1. Download Package Origin

  2. Download the sample container: oci-distribution-conformance.tar

  3. Launch Package Origin, passing in the location of the sample container:

    ./packageorigin -packages directory/path/containing/sample
    

Package Origin is now running and ready for the conformance test.

Run the Test

  1. Download the OCI Distribution Specification v1.0.1 source:

    git clone https://github.com/opencontainers/distribution-spec -b v1.0.1
    
  2. Build the conformance test binary (requires Go):

    cd distribution-spec/
    make conformance-binary
    
  3. Fix the conformance test for pull-only registries:

    1. In conformance/01_pull_test.go on line 154 change GET to HEAD (See #331);

    2. In conformance/01_pull_test.go on line 196 change PUT to GET (#332).

  4. Set various environment variables:

    # Registry details
    export OCI_ROOT_URL="https://pkg.miln.eu"
    ##export OCI_ROOT_URL="http://localhost:8080"
    
    export OCI_NAMESPACE="packageorigin/oci-distribution-conformance"
    
    # Which workflows to run
    export OCI_TEST_PULL=1
    export OCI_TEST_PUSH=0
    export OCI_TEST_CONTENT_DISCOVERY=1
    export OCI_TEST_CONTENT_MANAGEMENT=0
    
    # Set to prevent automatic setup
    export OCI_MANIFEST_DIGEST="sha256:13a046c9fb6d8b15442098af72348d7913c06c2e06e642982ddaef7f11b20b50" # application/vnd.oci.image.manifest.v1+json
    export OCI_TAG_NAME="1.0.0"
    export OCI_BLOB_DIGEST="sha256:2f887fc5db6631205e245fa37db5df9ba66b1ef8caa19d8be7ee79ca3a972959"
    export OCI_TAG_LIST="1.0.0,1.0.1,1.1.0+oci,2.0.0-preview.1,latest"
    
    # Extra settings
    export OCI_HIDE_SKIPPED_WORKFLOWS=1
    export OCI_DEBUG=0
    export OCI_DELETE_MANIFEST_BEFORE_BLOBS=0
    
    # Silence tooling
    export ACK_GINKGO_DEPRECATIONS=1.16.4
    
  5. Run the conformance tests:

    output/conformance.test
    

Detailed test results can be found in the report.html file.


  1. The two fixes are #331 and #332. These need to be applied to the conformance test. We found these bugs and submitted the fixes. ↩︎