Created
September 15, 2025 21:12
-
-
Save lbussell/796c85fd03e1b53b8cdbc4f64130f0e3 to your computer and use it in GitHub Desktop.
manifest schema
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "description": "The manifest file is the primary source of metadata that drives the production of all .NET Docker images. It describes various attributes of the Docker images that are to be produced by a given GitHub repo. .NET Docker's engineering system consumes this file in various ways as part of the automated build pipelines and other tools. It's intended to be product-agnostic meaning that it could be used to describe metadata for Docker image production of any product, not just .NET.", | |
| "definitions": { | |
| "CustomBuildLegGroup": { | |
| "description": "This object describes the tag dependencies of the image for a specific named scenario. This is for advanced cases only. It allows tooling to modify the build matrix that would normally be generated for the image by including the customizations described in this metadata. An example usage of this is in PR builds where it is necessary to build and test in the same job. In such a scenario, some images are part of a test matrix that require images to be available on the build machine that aren't part of that images dependency graph in normal scenarios. By specifying a customBuildLegGroup for this scenario, those additional image dependencies can be specified and the build pipeline can make use of them when constructing its build graph when specified to do so.", | |
| "type": "object", | |
| "properties": { | |
| "Name": { | |
| "description": "Name of the group describing the scenario in which it's relevant. This is just a custom label that can then be used by tooling to lookup the group when necessary.", | |
| "type": "string" | |
| }, | |
| "Type": { | |
| "description": "The type of the dependency which impacts how it's used during the build.", | |
| "type": "string", | |
| "enum": [ | |
| "Integral", | |
| "Supplemental" | |
| ] | |
| }, | |
| "Dependencies": { | |
| "description": "The set of dependencies the image has for this scenario.", | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "required": [ | |
| "Name", | |
| "Type", | |
| "Dependencies" | |
| ] | |
| }, | |
| "Image": { | |
| "description": "An image object contains metadata about a specific Docker image.", | |
| "type": "object", | |
| "properties": { | |
| "Platforms": { | |
| "description": "The set of platforms that describe the platform-specific variations of the Docker image.", | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/Platform" | |
| } | |
| }, | |
| "SharedTags": { | |
| "description": "The set of tags that are shared amongst all platform-specific versions of the image. An example of a shared tag, including its repo name, is dotnet/core/runtime:2.2; running `docker pull mcr.microsoft.com/dotnet/core/runtime:2.2` on Windows will get the default Windows-based tag whereas running it on Linux will get the default Linux-based tag.", | |
| "type": "object", | |
| "additionalProperties": { | |
| "$ref": "#/definitions/Tag" | |
| } | |
| }, | |
| "ProductVersion": { | |
| "description": "The full version of the product that the Docker image contains.", | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "Platforms" | |
| ] | |
| }, | |
| "Platform": { | |
| "description": "A platform object contains metadata about a platform-specific version of an image and refers to the actual Dockerfile used to build the image.", | |
| "type": "object", | |
| "properties": { | |
| "Architecture": { | |
| "description": "The processor architecture associated with the image.", | |
| "type": "string", | |
| "default": "AMD64", | |
| "enum": [ | |
| "ARM", | |
| "ARM64", | |
| "AMD64" | |
| ] | |
| }, | |
| "BuildArgs": { | |
| "description": "A set of values that will passed to the `docker build` command to override variables defined in the Dockerfile.", | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| }, | |
| "Dockerfile": { | |
| "description": "Relative path to the associated Dockerfile. This can be a file or a directory. If it is a directory, the file name defaults to Dockerfile.", | |
| "type": "string" | |
| }, | |
| "DockerfileTemplate": { | |
| "description": "Relative path to the template the Dockerfile is generated from.", | |
| "type": "string" | |
| }, | |
| "OS": { | |
| "description": "The generic name of the operating system associated with the image.", | |
| "type": "string", | |
| "enum": [ | |
| "Linux", | |
| "Windows" | |
| ] | |
| }, | |
| "OsVersion": { | |
| "description": "The specific version of the operating system associated with the image. Examples: alpine3.9, bionic, nanoserver-1903.", | |
| "type": "string" | |
| }, | |
| "Tags": { | |
| "description": "The set of platform-specific tags associated with the image.", | |
| "type": "object", | |
| "additionalProperties": { | |
| "$ref": "#/definitions/Tag" | |
| } | |
| }, | |
| "CustomBuildLegGroups": { | |
| "description": "The custom build leg groups associated with the platform.", | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/CustomBuildLegGroup" | |
| } | |
| }, | |
| "Variant": { | |
| "description": "A label which further distinguishes the architecture when it contains variants. For example, the ARM architecture has variants named v6, v7, etc.", | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "Dockerfile", | |
| "OS", | |
| "OsVersion", | |
| "Tags" | |
| ] | |
| }, | |
| "Readme": { | |
| "description": "Info about the readme that documents the product family.", | |
| "type": "object", | |
| "properties": { | |
| "Path": { | |
| "description": "Relative path to the GitHub readme Markdown file associated with the repository. This readme file documents the set of Docker images for this repository.", | |
| "type": "string" | |
| }, | |
| "TemplatePath": { | |
| "description": "Relative path to the template the readme is generated from.", | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "Path" | |
| ] | |
| }, | |
| "Readme-1": { | |
| "type": "object", | |
| "properties": { | |
| "Path": { | |
| "description": "Relative path to the GitHub readme Markdown file associated with the repository. This readme file documents the set of Docker images for this repository.", | |
| "type": "string" | |
| }, | |
| "TemplatePath": { | |
| "description": "Relative path to the template the readme is generated from.", | |
| "type": "string" | |
| } | |
| }, | |
| "required": [ | |
| "Path" | |
| ] | |
| }, | |
| "Repo": { | |
| "description": "A repository object contains metadata about a target Docker repository and the images to be contained in it.", | |
| "type": "object", | |
| "properties": { | |
| "Id": { | |
| "description": "A unique identifier of the repo. This is purely within the context of the manifest and not exposed to Docker in any way.", | |
| "type": "string" | |
| }, | |
| "Images": { | |
| "description": "The set of images contained in this repository.", | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/Image" | |
| } | |
| }, | |
| "McrTagsMetadataTemplate": { | |
| "description": "Relative path to the MCR tags template YAML file that is used by tooling to generate the tags section of the readme file.", | |
| "type": "string" | |
| }, | |
| "Name": { | |
| "description": "The name of the Docker repository where the described images are to be published (example: dotnet/core/runtime).", | |
| "type": "string" | |
| }, | |
| "Readmes": { | |
| "description": "Info about the readme that documents the repo.", | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/Readme-1" | |
| } | |
| } | |
| }, | |
| "required": [ | |
| "Images", | |
| "Name" | |
| ] | |
| }, | |
| "Tag": { | |
| "description": "A tag object contains metadata about a Docker tag. It is a JSON object with its tag name used as the attribute name.", | |
| "type": "object", | |
| "properties": { | |
| "DocumentationGroup": { | |
| "description": "An identifier used to conceptually group related tags in the readme documentation.", | |
| "type": "string" | |
| }, | |
| "DocType": { | |
| "description": "Indicates how this tag should not be documented in the readme file. Regardless of the setting, the image will still be tagged with this tag and will still be published. This is useful when deprecating a tag that still needs to be kept up-to-date but not wanting it documented.", | |
| "type": "string", | |
| "default": "Documented", | |
| "enum": [ | |
| "Documented", | |
| "Undocumented", | |
| "PlatformDocumented" | |
| ] | |
| }, | |
| "Syndication": { | |
| "$ref": "#/definitions/TagSyndication" | |
| } | |
| } | |
| }, | |
| "TagSyndication": { | |
| "description": "Description of where the tag should be syndicated to.", | |
| "type": "object", | |
| "properties": { | |
| "Repo": { | |
| "description": "Name of the repo to syndicate the tag to.", | |
| "type": "string" | |
| }, | |
| "DestinationTags": { | |
| "description": "List of destination tag names to syndicate the tag to.", | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "type": "object", | |
| "properties": { | |
| "Includes": { | |
| "description": "Additional json files to be loaded with this manifest. This is a convienentway to split the manifest apart into logical parts.", | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "Readme": { | |
| "$ref": "#/definitions/Readme" | |
| }, | |
| "Registry": { | |
| "description": "The location of the Docker registry where the images are to be published.", | |
| "type": "string" | |
| }, | |
| "Repos": { | |
| "description": "The set of Docker repositories described by this manifest.", | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/Repo" | |
| } | |
| }, | |
| "Variables": { | |
| "description": "A set of custom variables that can be referenced in various parts of the manifest. This provides a few benefits: 1) allows a commmonly used value to be defined only once and referenced by its variable name many times2) allows tools that consume the manifest file to provide a mechanism to dynamically override the value of these variables. Variables may be referenced in other parts of the manifest by using the following syntax: $(_VariableName_).", | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment