Declare source metadata

Summary

The following are conventions for declaring different type of source inputs. This information is provided to the lifecycle using project-metadata.toml.

Sources

Types

The following types are concrete source types and can use any keys as long as they don’t overlap with additive sources.

Git

  • type (string, required)

    Must be git

  • source (required)

    • version (required)

      • commit (string, required)
        Full commit hash

      • describe (string, optional)
        Description of commit (see git describe)

    • metadata (optional)

      • repository (string, optional)
        Repository URL

      • refs (list of strings, optional)
        Additional relevant Git references

Example
[source] type = "git"   [source.version]  commit = "63a73f1b0f2a4f6978c19184b0ea33ad3f092913"  describe = "v0.18.1-2-g3f092913"   [source.metadata]  repository = "https://github.com/myorg/myrepo.git"  refs = ["master", "v3.0"] 

Image

  • type (string, required)

    Must be image

  • source (required)

    • version (required)

      • digest (string, required)
        Image digest
    • metadata (optional)

      • path (string, optional)
        Absolute path to source in image

      • repository (string, optional)
        Fully-qualified image name

      • refs (list of strings, optional)
        Additional relevant image names/tags

Example
[source] type = "image"   [source.version]  digest = "146c4bce42545e6a4575283b32a7f01924ef86ce848273079693a42b52b27321"   [source.metadata]  path = "/source"  repository = "index.docker.io/example/image:latest"  refs = ["index.docker.io/example/image:mytag", "index.docker.io/example/image@sha256:146c4bce42545e6a4575283b32a7f01924ef86ce848273079693a42b52b27321"] 

Additive

The following source information is considered additive and should not overlap with source types.

project.toml

  • type (string, required)

    Must be project (only if no other type is present)

  • source (required)

    • version (required)

      • version (string, optional)
        Version as declared in _.version
    • metadata (optional)

      • url (string, optional)
        URL as declared in _.source-url
Example (standalone)
[source] type = "project"   [source.version]  version = "1.2.3"   [source.metadata]  url = "https://github.com/example/repo" 
Example (w/ Image)
[source] type = "image"   [source.version]  digest = "146c4bce42545e6a4575283b32a7f01924ef86ce848273079693a42b52b27321"  version = "1.2.3"   [source.metadata]  path = "/source"  repository = "index.docker.io/example/image:latest"  refs = ["index.docker.io/example/image:mytag", "index.docker.io/example/image@sha256:146c4bce42545e6a4575283b32a7f01924ef86ce848273079693a42b52b27321"]  url = "https://github.com/example/repo"