+:Required Parameters:
+
+ :distribution_type: Must be "container".
+ :container_release_tag: The string to use as a Docker tag on all
+ released containers.
+ :container_pull_registry: The Nexus registry that supplies the staged
+ image(s).
+ :container_push_registry: The Nexus registry that receives the released
+ image(s).
+ :project: The name of the project.
+ :ref: The git commit reference (SHA-1 code) to tag with the version string.
+ :containers: A list of name and version (tag) pairs that specify the
+ Docker images in the container-pull registry to promote to the
+ container-push registry.
+
+The JSON schema for a container release file appears below.
+
+.. code-block:: none
+
+ ---
+ $schema: "http://json-schema.org/schema#"
+ $id: "https://github.com/lfit/releng-global-jjb/blob/master/release-container-schema.yaml"
+
+ required:
+ - "containers"
+ - "distribution_type"
+ - "project"
+ - "container_release_tag"
+ - "ref"
+
+ properties:
+ containers:
+ type: "array"
+ properties:
+ name:
+ type: "string"
+ version:
+ type: "string"
+ additionalProperties: false
+ distribution_type:
+ type: "string"
+ project:
+ type: "string"
+ container_release_tag:
+ type: "string"
+ container_pull_registry"
+ type: "string"
+ container_push_registry"
+ type: "string"
+ ref:
+ type: "string"
+
+
+PyPI Release Files
+------------------
+
+An example of a PyPI release file appears below. Name of the release file must
+start with "pypi". eg. releases/pypi-1.0.0-mypackage.yaml
+
+.. code-block:: none
+
+ $ cat releases/pypi-1.0.0-mypackage.yaml
+ ---
+ distribution_type: pypi
+ pypi_project: mypackage
+ python_version: '3.4'
+ version: 1.0.0
+
+
+The following parameters must appear in the PyPI release yaml file.
+These are not part of the Jenkins job definition to allow independent
+self-release of a package maintained in a git repository with other
+packages.
+
+:Required Parameters:
+
+ :distribution_type: Must be "pypi".
+ :log_dir: The suffix of the logs URL reported on completion by the
+ Jenkins merge job that created and pushed the distribution files
+ to the staging repository. For example, use value
+ "example-project-pypi-merge-master/17" for the logs URL
+ https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-pypi-merge-master/17
+ :pypi_project: The PyPI project name at the staging and
+ release repositories, for example "mypackage".
+ :python_version: The Python interpreter version to use for pip
+ "Requires-Python" compatibility checks, for example '3', '3.7' or 3.7.4.
+ Put valid decimal values such as 3 or 3.7 in quotes to pass schema validation.
+ :version: The semantic version string used for the package in the
+ setup.py file.
+
+The JSON schema for a PyPI release file appears below.
+
+.. code-block:: none
+
+ ---
+ $schema: "http://json-schema.org/schema#"
+ $id: "https://github.com/lfit/releng-global-jjb/blob/master/release-pypi-schema.yaml"
+
+ required:
+ - "distribution_type"
+ - "log_dir"
+ - "pypi_project"
+ - "python_version"
+ - "version"
+
+ properties:
+ distribution_type:
+ type: "string"
+ log_dir:
+ type: "string"
+ pypi_project:
+ type: "string"
+ python_version:
+ type: "string"
+ version:
+ type: "string"
+
+
+PackageCloud Release Files
+--------------------------
+
+An example of a PackageCloud release file appears below. Name of release file
+must start with "packagecloud". eg. releases/packagecloud-1.6.0-tree.yaml
+
+.. code-block:: none
+
+ $ cat releases/packagecloud-1.6.0-tree.yaml
+ ---
+ distribution_type: packagecloud
+ package_name:
+ - name: 'tree-1.6.0-10.el7.x86_64.rpm'
+ - name: 'test.rpm'
+
+The following parameters must appear in the PackageCloud release yaml file.
+These are not part of the Jenkins job definition to allow independent
+self-release of a package maintained in a git repository with other
+packages.
+
+:Required Parameters:
+
+ :distribution_type: Must be "packagecloud".
+ :package_name: A list of names that specify the packages to promote.
+ (Found via jenkins log when using gem to initally push package up eg.
+ "Pushing /path/of/package/name-of-package.rpm... success!"
+ OR using rest api call with generated token from packagecloud.io
+ "curl https://packagecloud.io/api/v1/repos/test_user/test_repo/search?q=
+ | yq -r .[].filename"
+
+The JSON schema for a PackageCloud release file appears below.
+
+.. code-block:: none
+
+ ---
+ $schema: "http://json-schema.org/schema#"
+ $id: "https://github.com/lfit/releng-global-jjb/blob/master/packagecloud-release-schema"
+
+ required:
+ - "package_name"
+ - "distribution_type"
+
+ properties:
+ package_name:
+ type: "array"
+ properties:
+ name:
+ type: "string"
+ distribution_type:
+ type: "string"
+
+Jenkins Jobs
+------------
+
+An example of a Jenkins job configuration that uses the global-jjb
+templates for maven and container release jobs appears next.
+
+.. code-block:: none
+
+ - project:
+ name: my-project-release
+ project: my-project
+ project-name: my-project
+ build-node: centos7-docker-4c-4g
+ mvn-settings: my-project-settings
+ jobs:
+ - '{project-name}-gerrit-release-jobs'