From 05eb5148421bb060f9f1df1349ee3819759bd2e6 Mon Sep 17 00:00:00 2001 From: Tayler Geiger Date: Tue, 23 Apr 2024 14:56:18 -0500 Subject: [PATCH] Add NOTES.txt check (#430) * Add NOTES.txt check * Make NOTES.txt check optional * Update docs to include has-notes check Signed-off-by: Tayler Geiger --- docs/helm-chart-checks.md | 43 +++++++++++------- docs/helm-chart-troubleshooting.md | 4 ++ .../checks/chart-0.1.0-v3.without-notes.tgz | Bin 0 -> 3671 bytes internal/chartverifier/checks/checks.go | 20 ++++++++ internal/chartverifier/checks/checks_test.go | 37 +++++++++++++++ internal/chartverifier/profiles/default.go | 3 +- .../chartverifier/profiles/profile_test.go | 19 ++++---- internal/chartverifier/verifierbuilder.go | 1 + .../profiles/profile-community-1.3.yaml | 38 ++++++++++++++++ .../profiles/profile-partner-1.3.yaml | 39 ++++++++++++++++ .../profiles/profile-redhat-1.3.yaml | 38 ++++++++++++++++ pkg/chartverifier/checks/checks.go | 2 + .../0.1.11/community-report-info.json | 2 +- .../0.1.11/partner-report-info.json | 2 +- .../0.1.11/redhat-report-info.json | 2 +- .../0.1.8/community-report-info.json | 2 +- .../0.1.8/partner-report-info.json | 2 +- .../0.1.8/redhat-report-info.json | 2 +- .../0.1.9/community-report-info.json | 2 +- .../0.1.9/partner-report-info.json | 2 +- .../0.1.9/redhat-report-info.json | 2 +- 21 files changed, 226 insertions(+), 36 deletions(-) create mode 100644 internal/chartverifier/checks/chart-0.1.0-v3.without-notes.tgz create mode 100644 internal/profileconfig/profiles/profile-community-1.3.yaml create mode 100644 internal/profileconfig/profiles/profile-partner-1.3.yaml create mode 100644 internal/profileconfig/profiles/profile-redhat-1.3.yaml diff --git a/docs/helm-chart-checks.md b/docs/helm-chart-checks.md index 98a2f66d..caff548a 100644 --- a/docs/helm-chart-checks.md +++ b/docs/helm-chart-checks.md @@ -52,21 +52,22 @@ The following table lists the set of checks for each profile version with detail #### Table 2: Helm chart default checks -| Profile v1.2 | Profile v1.1 | Profile v1.0 | Description | -|:-------------------------------:|:-------------------------------:|:-------------------------------:|--------------- -| [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | Checks that the given `uri` points to a Helm v3 chart. -| [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | Checks that the Helm chart contains the `README.md` file. -| [contains-test V1.0](helm-chart-troubleshooting.md#contains-test-v10) | [contains-test V1.0](helm-chart-troubleshooting.md#contains-test-v10) | [contains-test v1.0](helm-chart-troubleshooting.md#contains-test-v10) | Checks that the Helm chart contains at least one test file. -| [has-kubeversion v1.1](helm-chart-troubleshooting.md#has-kubeversion-v11) | [has-kubeversion v1.1](helm-chart-troubleshooting.md#has-kubeversion-v11) | [has-kubeversion v1.0](helm-chart-troubleshooting.md#has-kubeversion-v10) | Checks that the `Chart.yaml` file of the Helm chart includes the `kubeVersion` field (v1.0) and is a valid semantic version (v1.1). -| [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | Checks that the Helm chart contains a JSON schema file (`values.schema.json`) to validate the `values.yaml` file in the chart. -| [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | Checks that the Helm chart does not include custom resource definitions (CRDs). -| [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | Checks that the Helm chart does not include Container Storage Interface (CSI) objects. -| [images-are-certified v1.1](helm-chart-troubleshooting.md#images-are-certified-v10) | [images-are-certified v1.0](helm-chart-troubleshooting.md#images-are-certified-v10) | [images-are-certified v1.0](helm-chart-troubleshooting.md#images-are-certified-v10) | Checks that the images referenced by the Helm chart are Red Hat-certified. -| [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | Checks that the chart is well formed by running the `helm lint` command. -| [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | Installs the chart and verifies it on a Red Hat OpenShift Container Platform cluster. -| [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | Checks that the Helm chart contains the `values`[¹](https://github.com/redhat-certification/chart-verifier/blob/main/docs/helm-chart-checks.md#-for-more-information-on-the-values-file-see-values-and-best-practices-for-using-values) file. -| [required-annotations-present v1.0](helm-chart-troubleshooting.md#required-annotations-present-v10) | [required-annotations-present v1.0](helm-chart-troubleshooting.md#required-annotations-present-v10) | - | Checks that the Helm chart contains the annotation: ```charts.openshift.io/name```. -| [signature-is-valid v1.0](helm-chart-troubleshooting.md#signature-is-valid-v10) | - | - | Verifies a signed chart based on a provided public key | +| Profile v1.3 | Profile v1.2 | Profile v1.1 | Profile v1.0 | Description | +|---|---|---|---|---| +| [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | [is-helm-v3 v1.0](helm-chart-troubleshooting.md#is-helm-v3-v10) | Checks that the given `uri` points to a Helm v3 chart. | +| [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | [has-readme v1.0](helm-chart-troubleshooting.md#has-readme-v10) | Checks that the Helm chart contains the `README.md` file. | +| [contains-test V1.0](helm-chart-troubleshooting.md#contains-test-v10) | [contains-test V1.0](helm-chart-troubleshooting.md#contains-test-v10) | [contains-test V1.0](helm-chart-troubleshooting.md#contains-test-v10) | [contains-test v1.0](helm-chart-troubleshooting.md#contains-test-v10) | Checks that the Helm chart contains at least one test file. | +| [has-kubeversion v1.1](helm-chart-troubleshooting.md#has-kubeversion-v11) | [has-kubeversion v1.1](helm-chart-troubleshooting.md#has-kubeversion-v11) | [has-kubeversion v1.1](helm-chart-troubleshooting.md#has-kubeversion-v11) | [has-kubeversion v1.0](helm-chart-troubleshooting.md#has-kubeversion-v10) | Checks that the `Chart.yaml` file of the Helm chart includes the `kubeVersion` field (v1.0) and is a valid semantic version (v1.1). | +| [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | [contains-values-schema v1.0](helm-chart-troubleshooting.md#contains-values-schema-v10) | Checks that the Helm chart contains a JSON schema file (`values.schema.json`) to validate the `values.yaml` file in the chart. | +| [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | [not-contains-crds v1.0](helm-chart-troubleshooting.md#not-contains-crds-v10) | Checks that the Helm chart does not include custom resource definitions (CRDs). | +| [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | [not-contain-csi-objects v1.0](helm-chart-troubleshooting.md#not-contain-csi-objects-v10) | Checks that the Helm chart does not include Container Storage Interface (CSI) objects. | +| [images-are-certified v1.1](helm-chart-troubleshooting.md#images-are-certified-v10) | [images-are-certified v1.1](helm-chart-troubleshooting.md#images-are-certified-v10) | [images-are-certified v1.0](helm-chart-troubleshooting.md#images-are-certified-v10) | [images-are-certified v1.0](helm-chart-troubleshooting.md#images-are-certified-v10) | Checks that the images referenced by the Helm chart are Red Hat-certified. | +| [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | [helm-lint v1.0](helm-chart-troubleshooting.md#helm-lint-v10) | Checks that the chart is well formed by running the `helm lint` command. | +| [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | [chart-testing v1.0](helm-chart-troubleshooting.md#chart-testing-v10) | Installs the chart and verifies it on a Red Hat OpenShift Container Platform cluster. | +| [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | [contains-values v1.0](helm-chart-troubleshooting.md#contains-values-v10) | Checks that the Helm chart contains the `values`[¹](https://github.com/redhat-certification/chart-verifier/blob/main/docs/helm-chart-checks.md#-for-more-information-on-the-values-file-see-values-and-best-practices-for-using-values) file. | +| [required-annotations-present v1.0](helm-chart-troubleshooting.md#required-annotations-present-v10) | [required-annotations-present v1.0](helm-chart-troubleshooting.md#required-annotations-present-v10) | [required-annotations-present v1.0](helm-chart-troubleshooting.md#required-annotations-present-v10) | - | Checks that the Helm chart contains the annotation: ```charts.openshift.io/name```. | +| [signature-is-valid v1.0](helm-chart-troubleshooting.md#signature-is-valid-v10) | [signature-is-valid v1.0](helm-chart-troubleshooting.md#signature-is-valid-v10) | - | - | Verifies a signed chart based on a provided public key. | +| [has-notes v1.0](helm-chart-troubleshooting.md#has-notes-v10) | - | - | - | Checks that the Helm chart contains the `NOTES.txt` file in the templates directory. | # ###### ¹ For more information on the `values` file, see [`values`](https://helm.sh/docs/chart_template_guide/values_files/) and [Best Practices for using values](https://helm.sh/docs/chart_best_practices/values/). @@ -300,7 +301,15 @@ A profile defines a set of checks to run and an indication of whether each check - The default is the same as the partner profile and is used if a specific one is not specified. - All checks are mandatory. -Each profile also has a version and currently there are three profile versions: v1.0, v1.1 and v1.2. The `developer-console` just has one profile version v1.0. +Each profile also has a version and currently there are four profile versions: v1.0, v1.1, v1.2, and v1.3. The `developer-console` just has one profile version v1.0. + +### Profile v1.3 + +Compared to profile v1.2, adds a new check: + +| check | partner | RedHat | community | default | +|-------|---------|--------|-----------|--------- +| [has-notes v1.0](helm-chart-troubleshooting.md#has-notes-v10) | optional | optional | optional | optional ### Profile v1.2 @@ -327,7 +336,7 @@ Annotations added to a v1.1 profile report are common to all profile types: part #### Checks -This table shows which checks are preformed and whether or not they ar mnandatory or optional for each profile type. +This table shows which checks are preformed and whether or not they are mandatory or optional for each profile type. | check | partner | RedHat | community | default | |-------|---------|--------|-----------|--------- diff --git a/docs/helm-chart-troubleshooting.md b/docs/helm-chart-troubleshooting.md index 3ca64f5c..9fddb435 100644 --- a/docs/helm-chart-troubleshooting.md +++ b/docs/helm-chart-troubleshooting.md @@ -175,6 +175,10 @@ This check requires that the public key provided to the chart verifier is from a - pgp public key file does not have access to the signed chart. - ensure the public key matches the secret key used to sign the chart. +### `has-notes` v1.0 + +Requires a "NOTES.txt" file to exist in the templates directory of the chart. Any other spelling or +capitialisation of letters will result in the check failing. ## Report related submission failures diff --git a/internal/chartverifier/checks/chart-0.1.0-v3.without-notes.tgz b/internal/chartverifier/checks/chart-0.1.0-v3.without-notes.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a9867dbd5483a48f6d5727eb300e5ad3c8d0bf1e GIT binary patch literal 3671 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