Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion hack/build-static-site.sh
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ go run main.go
cd jekyll/
rm -f Gemfile.lock
bundle config set --local path 'vendor/bundle'
bundle install --path 'vendor/bundle'
bundle install --path 'vendor/bundle' || bundle install
bundle exec jekyll build
cp favicon.ico _site/
echo '/** Disable unnecessary site navbar/menu */' >> _site/assets/main.css
Expand Down
113 changes: 50 additions & 63 deletions instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,63 +2,56 @@

## Running the tests

Each spec will provide its own testing instructions, and each will produce
the following files that contain the test results and output:
Each spec will provide its own testing instructions, and each will produce the following files that contain the test results and output:

- `results.yaml`
- `report.html`
- `junit.xml`

### OCI Distribution Specification

Please see instructions [here](https://github.com/opencontainers/distribution-spec/blob/main/conformance/README.md).
Please see the [distribution-spec instructions](https://github.com/opencontainers/distribution-spec/blob/main/conformance/README.md).

## Uploading

Prepare a PR to
[https://github.com/opencontainers/oci-conformance](https://github.com/opencontainers/oci-conformance).
Here are [directions](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork) to
prepare a pull request from a fork.
In the descriptions below, `$spec.X.Y` refers to the spec and its major and minor
version, and `$dir` is a short subdirectory name to hold the results for your
product. Examples would be `gcr` or `dockerhub`.
Prepare a PR to [https://github.com/opencontainers/oci-conformance](https://github.com/opencontainers/oci-conformance).
Here are [directions](https://help.github.com/en/articles/creating-a-pull-request-from-a-fork) to prepare a pull request from a fork.
In the descriptions below, `$spec.X.Y` refers to the spec and its major and minor version, and `$dir` is a short subdirectory name to hold the results for your product.
Examples would be `gcr` or `dockerhub`.

Description: `Conformance results for $spec/vX.Y/$dir`

### Contents of the PR

For simplicity you can submit the tarball or extract the relevant information from the tarball to compose your submission.
For simplicity you can submit the tarball or extract the relevant information from the tarball to compose your submission.

```
$spec/vX.Y/$dir/README.md: Description of how to reproduce your results.
$spec/vX.Y/$dir/report.html: Human-readable HTML test report.
$spec/vX.Y/$dir/junit.xml: Machine-readable JUnit test report.
$spec/vX.Y/$dir/PRODUCT.yaml: See below.
```
- `$spec/vX.Y/$dir/README.md`: Description of how to reproduce your results.
- `$spec/vX.Y/$dir/results.yaml`: Machine-readable test results in yaml.
- `$spec/vX.Y/$dir/report.html`: Human-readable HTML test report.
- `$spec/vX.Y/$dir/junit.xml`: Machine-readable JUnit test report.
- `$spec/vX.Y/$dir/PRODUCT.yaml`: See below.

Entirely optional, but encouraged, you can also include the following files
(if you have not already submitted them previously):
Entirely optional, but encouraged, you can also include the following files (if you have not already submitted them previously):

```
$spec/live/$dir/badges.md: See below.
```
- `$spec/live/$dir/badges.md`: See below.

#### PRODUCT.yaml

This file describes your product. It is YAML formatted with the following root-level fields. Please fill in as appropriate.

| Field | Description |
| ------------------- | ----------- |
| `vendor` | Name of the legal entity that is certifying. This entity must have a signed participation form on file with the OCI |
| `name` | Name of the product being certified. |
| `version` | The version of the product being certified (not the version of OCI spec). |
| `website_url` | URL to the product information website |
| `repo_url` | If your product is open source, this field is necessary to point to the primary GitHub repo containing the source. It's OK if this is a mirror. OPTIONAL |
| `documentation_url` | URL to the product documentation |
| `product_logo_url` | URL to the product's logo, (must be in SVG, AI or EPS format -- not a PNG -- and include the product name). OPTIONAL. If not supplied, we'll use your company logo. Please see logo guidelines (TODO: link) |
| Field | Description |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `vendor` | Name of the legal entity that is certifying. This entity must have a signed participation form on file with the OCI |
| `name` | Name of the product being certified. |
| `version` | The version of the product being certified (not the version of OCI spec). |
| `website_url` | URL to the product information website |
| `repo_url` | If your product is open source, this field is necessary to point to the primary GitHub repo containing the source. It's OK if this is a mirror. OPTIONAL |
| `documentation_url` | URL to the product documentation |
| `product_logo_url` | URL to the product's logo, (must be in SVG, AI or EPS format -- not a PNG -- and include the product name). OPTIONAL. If not supplied, we'll use your company logo. |
| `type` | Is your product a distribution, hosted platform, or installer (see [definitions](https://github.com/opencontainers/oci-conformance/blob/main/faq.md#what-is-a-distribution-and-what-is-a-platform)) |
| `description` | One sentence description of your offering |
| `description` | One sentence description of your offering |

Examples below are for a fictional OCI implementation called _Turbo
Encabulator_ produced by a company named _Yoyodyne_.
Examples below are for a fictional OCI implementation called _Turbo Encabulator_ produced by a company named _Yoyodyne_.

```yaml
vendor: Yoyodyne
Expand All @@ -74,23 +67,18 @@ description: 'The Yoyodyne Turbo Encabulator is a superb OCI distribution for al

#### badges.md (Optional)

If you are running live tests (for example, in GitHub Actions), you are
encouraged to include a `badges.md` files which contains Markdown badges pointing to your test results.
If you are running live tests (for example, in GitHub Actions), you are encouraged to include a `badges.md` files which contains Markdown badges pointing to your test results.

These badges will be displayed on a web-based dashboard showing live
conformance results for various products.
These badges will be displayed on a web-based dashboard showing live conformance results for various products.

Since you are likely testing conformance on the latest
changeset to your product, this file should be submitted to the directory
`$spec/live/$dir` (vs. `$spec/vX.Y/$dir`). *If you have previously submitted
this file, you do not need to do so again to submit conformance for a new
spec version.*
Since you are likely testing conformance on the latest changeset to your product, this file should be submitted to the directory `$spec/live/$dir` (vs. `$spec/vX.Y/$dir`).
_If you have previously submitted this file, you do not need to do so again to submit conformance for a new spec version._

This file should simply contain Markdown badges, each on a new line.

Here is an example `badges.md` file showing 4 badges:

```
```markdown
[![](https://github.com/myorg/myproduct/workflows/oci-pull/badge.svg)](https://github.com/myorg/myproduct/actions?query=workflow%3Aoci-pull)
[![](https://github.com/myorg/myproduct/workflows/oci-push/badge.svg)](https://github.com/myorg/myproduct/actions?query=workflow%3Aoci-push)
[![](https://github.com/myorg/myproduct/workflows/oci-content-discovery/badge.svg)](https://github.com/myorg/myproduct/actions?query=workflow%3Aoci-content-discovery)
Expand All @@ -99,42 +87,43 @@ Here is an example `badges.md` file showing 4 badges:

## Amendment for Private Review

If you need a private review for an unreleased product, please email a zip file containing what you would otherwise submit
as a pull request to certification@opencontainers.org. We'll review and confirm that you are ready to be OCI Certified
as soon as you open the pull request. We can then often arrange to accept your pull request soon after you make it, at which point you become OCI Certified.
If you need a private review for an unreleased product, please email a zip file containing what you would otherwise submit as a pull request to <certification@opencontainers.org>.
We'll review and confirm that you are ready to be OCI Certified as soon as you open the pull request.
We can then often arrange to accept your pull request soon after you make it, at which point you become OCI Certified.

## Review

A reviewer will shortly comment on and/or accept your pull request, following this [process](reviewing.md).
If you don't see a response within 3 business days, please contact certification@opencontainers.org.
A reviewer will shortly comment on and/or accept your pull request, following the [reviewer process](reviewing.md).
If you don't see a response within 3 business days, please contact <certification@opencontainers.org>.

## Example Script

Combining the steps provided here, the process looks like this (Example: `distribution-spec/v1.0`):
Combining the steps provided here, the process looks like this (Example: `distribution-spec/v1.1`):

```
```shell
spec_name=distribution-spec
spec_version=v1.0
spec_version=1.1
prod_name=example

rm -rf tmp && git clone https://github.com/opencontainers/${spec_name}.git tmp
(cd tmp && docker build -t conformance:latest -f Dockerfile.conformance .)
rm -rf tmp results
docker run --rm \
docker run -it --rm --net=host \
-u "$(id -u):$(id -g)" \
-v $(pwd)/results:/results \
-w /results \
-e OCI_ROOT_URL="https://r.myreg.io" \
-e OCI_NAMESPACE="myorg/myrepo" \
-e OCI_VERSION="$spec_version$" \
-e OCI_REGISTRY="r.myreg.io" \
-e OCI_REPO1="myorg/myrepo" \
-e OCI_REPO2="myorg/myrepo2" \
-e OCI_USERNAME="myuser" \
-e OCI_PASSWORD="mypass" \
-e OCI_DEBUG="true" \
conformance:latest

mkdir -p ./${spec_name}/${spec_version}/${prod_name}
cp ./results/* ./${spec_name}/${spec_version}/${prod_name}/
mkdir -p ./${spec_name}/v${spec_version}/${prod_name}
cp ./results/* ./${spec_name}/v${spec_version}/${prod_name}/
rm -rf results

cat << EOF > ./${spec_name}/${spec_version}/${prod_name}/PRODUCT.yaml
cat << EOF > ./${spec_name}/v${spec_version}/${prod_name}/PRODUCT.yaml
vendor: Yoyodyne
name: Turbo Encabulator
version: v1.7.4
Expand All @@ -149,6 +138,4 @@ EOF

## Issues

If you have problems certifying that you feel are an issue with the conformance
program itself (and not just your own implementation), you can file an issue in
the [repository](https://github.com/opencontainers/oci-conformance).
If you have problems certifying that you feel are an issue with the conformance program itself (and not just your own implementation), you can [file an issue](https://github.com/opencontainers/oci-conformance/issues).
4 changes: 3 additions & 1 deletion netlify.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
[build]
command = "./hack/build-static-site.sh"
publish = "_site/"
environment = { GO_VERSION = "1.22.x" }
[build.environment]
GO_VERSION = "1.26.x"
RUBY_VERSION = "3.3"
4 changes: 2 additions & 2 deletions products-page-generator/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ used to display conformance across all specs and products.

To run:

```
```shell
go run main.go
```

Expand All @@ -14,7 +14,7 @@ This will produce a new `output/` directory.
You can then use [Jekyll](https://jekyllrb.com/)
(or something similar) to produce a static HTML website:

```
```shell
cd jekyll/
bundle config set --local path 'vendor/bundle'
bundle install
Expand Down
2 changes: 1 addition & 1 deletion products-page-generator/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ replace github.com/imdario/mergo => github.com/imdario/mergo v0.3.16
require (
github.com/Masterminds/semver v1.5.0
github.com/Masterminds/sprig v2.22.0+incompatible
github.com/goccy/go-yaml v1.19.2
github.com/joshdk/go-junit v1.0.0
gopkg.in/yaml.v3 v3.0.1
)

require (
Expand Down
3 changes: 2 additions & 1 deletion products-page-generator/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZC
github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/goccy/go-yaml v1.19.2 h1:PmFC1S6h8ljIz6gMRBopkjP1TVT7xuwrButHID66PoM=
github.com/goccy/go-yaml v1.19.2/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
Expand All @@ -25,7 +27,6 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
Expand Down
Loading