List of all checksΒΆ
Colin checks several labels and the best practises (e.g. helpfile check).
Since there can be many platforms/setups with different requirements, we can define so-called rulesets, that defines:
- subset of checks to be used,
- metadata changes/extensions.
Ruleset is only a json/yaml file with following structure:
{
"version": "1",
"name": "Ruleset for Fedora containers/images/dockerfiles.",
"description": "This set of checks is defined by the Fedora Container Guidelines.",
"contact_email": "user-cont-team@redhat.com",
"checks": [
{
"name": "architecture_label"
},
{
"name": "build-date_label"
},
:
:
]
}
Rulesets in the standard location can be shown with colin list-rulesets
and we can use them by name in other commands. (e.g. colin check -r fedora
).
$ colin list-rulesets
default (./rulesets/default.json)
fedora (./rulesets/fedora.json)
fedora (/home/flachman/.local/share/colin/rulesets/fedora.json)
default (/home/flachman/.local/share/colin/rulesets/default.json)
fedora (/usr/local/share/colin/rulesets/fedora.json)
default (/usr/local/share/colin/rulesets/default.json)
Colin can use ruleset-files in the following directories:
./rulesets/
(subdirectory of the current working directory)~/.local/share/colin/rulesets/
(user installation)/usr/local/share/colin/rulesets/
(system-wide installation if sys.prefix is not /usr/local)- sys.prefix
/share/colin/rulesets/
(system-wide installation)
We can easily list the checks with the following command:
$ colin list-checks -f rulesets/fedora.json
architecture_label
-> Label 'architecture' has to be specified.
-> Architecture the software in the image should target. (Optional: if omitted, it will be built for all supported Fedora Architectures)
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, architecture
build-date_label
-> Label 'build-date' has to be specified.
-> Date/Time image was built as RFC 3339 date-time.
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, build-date
description_label
-> Label 'description' has to be specified.
-> Detailed description of the image.
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, description
distribution-scope_label
-> Label 'distribution-scope' has to be specified.
-> Scope of intended distribution of the image. (private/authoritative-source-only/restricted/public)
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, distribution-scope
help_label
-> Label 'help' has to be specified.
-> A runnable command which results in display of Help information.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, help
io.k8s.description_label
-> Label 'io.k8s.description' has to be specified.
-> Description of the container displayed in Kubernetes
-> ['https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md', 'https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md#other-labels']
-> label, io.k8s.description, description
url_label
-> Label 'url' has to be specified.
-> A URL where the user can find more information about the image.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, url
vcs-ref_label
-> Label 'vcs-ref' has to be specified.
-> A 'reference' within the version control repository; e.g. a git commit, or a subversion branch.
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, vcs-ref, vcs
vcs-type_label
-> Label 'vcs-type' has to be specified.
-> The type of version control used by the container source. Generally one of git, hg, svn, bzr, cvs
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, vcs-type, vcs
vcs-url_label
-> Label 'vcs-url' has to be specified.
-> URL of the version control repository.
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, vcs-url, vcs
com.redhat.component_label
-> Label 'com.redhat.component' has to be specified.
-> The Bugzilla component name where bugs against this container should be reported by users.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, com.redhat.component, required
maintainer_label
-> Label 'maintainer' has to be specified.
-> The name and email of the maintainer (usually the submitter).
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, maintainer, required
name_label
-> Label 'name' has to be specified.
-> Name of the Image or Container.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, name, required
release_label
-> Label 'release' has to be specified.
-> Release Number for this version.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, release, required
summary_label
-> Label 'summary' has to be specified.
-> A short description of the image.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, summary, required
version_label
-> Label 'version' has to be specified.
-> Version of the image.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, version, required
from_tag_not_latest
-> In FROM, tag has to be specified and not 'latest'.
-> Using the 'latest' tag may cause unpredictable builds.It is recommended that a specific tag is used in the FROM.
-> https://fedoraproject.org/wiki/Container:Guidelines#FROM
-> dockerfile, from, baseimage, latest, required
maintainer_deprecated
-> Dockerfile instruction `MAINTAINER` is deprecated.
-> Replace with label 'maintainer'.
-> https://docs.docker.com/engine/reference/builder/#maintainer-deprecated
-> dockerfile, maintainer, deprecated, required
description_or_io.k8s.description_label
-> Label 'description' or 'io.k8s.description' has to be specified.
-> Detailed description of the image.
-> https://github.com/projectatomic/ContainerApplicationGenericLabels/blob/master/vendor/redhat/labels.md
-> label, description, required
help_file_or_readme
-> The 'helpfile' has to be provided.
-> Just like traditional packages, containers need some 'man page' information about how they are to be used, configured, and integrated into a larger stack.
-> https://fedoraproject.org/wiki/Container:Guidelines#Help_File
-> filesystem, helpfile, man, required
run_or_usage_label
-> Label 'usage' has to be specified.
-> A human readable example of container execution.
-> https://fedoraproject.org/wiki/Container:Guidelines#LABELS
-> label, usage, required