releases/openstack_releases/schema.yaml
Thierry Carrez 8a9f755cb9 Trailing is a deliverable type, not a release model
Cycle-trailing deliverables are regular cycle-following deliverables,
using RCs or not not using RCs -- they just have a different deadline.

Rather than using a release model, those deadline variants are better
described using deliverable types, in much the same way 'library'
deliverables have a specific deadline too.

This simplifies the list of models significantly, and allows to have
proposer validation of trailing deliverables that use RCs or not use
RCs.

For compatibility in old branches, setting 'cycle-trailing' is still
supported, it will just overload the type to 'trailing' if specified.

Change-Id: Ifce88ef3e5dd406f45f25214699f16e736ad5377
2020-06-16 16:18:30 +02:00

120 lines
3.1 KiB
YAML

---
$schema: "http://json-schema.org/schema#"
$id: "https://opendev.org/openstack/releases/src/branch/master/README.rst"
# Do not allow any properties not defined here. This lets us catch
# typos.
additionalProperties: false
required:
- team
- type
properties:
team:
type: "string"
launchpad:
type: "string"
storyboard:
# TODO(fungi): Previously this was an integer but now we
# want to support strings. This can be changed to "string"
# later if all the data gets updated from numbers to names.
type: ["integer", "string"]
release-notes:
oneOf:
- type: "string"
# We don't include any details about the object form of the
# release notes because the keys are the repository names.
- type: "object"
include-pypi-link:
type: "boolean"
release-model:
type: "string"
enum: ["cycle-with-intermediary", "cycle-with-milestones", "cycle-trailing", "untagged", "cycle-with-rc", "cycle-automatic", "abandoned"]
type:
type: "string"
enum: ["horizon-plugin", "library", "client-library", "service", "tempest-plugin", "other", "trailing"]
artifact-link-mode:
type: "string"
enum: ["tarball", "none"]
repository-settings:
type: "object"
properties:
additionalProperties: False
pypi-name:
type: "string"
flags:
type: "array"
items:
type: "string"
enum: [ "no-artifact-build-job", "retired" ]
tarball-base:
type: "string"
release-type:
type: "string"
enum: [ "python-service", "python-pypi", "xstatic", "fuel",
"nodejs", "puppet", "neutron", "horizon", "openstack-manuals",
"manila-image-elements", "generic" ]
stable-branch-type:
type: "string"
enum: [ "std", "tagless", "upstream", "none", "std-with-versions" ]
cycle-highlights:
type: "array"
items:
type: "string"
releases:
type: "array"
items:
type: "object"
properties:
version:
type: "string"
projects:
type: "array"
items:
type: "object"
required:
- repo
- hash
properties:
repo:
type: "string"
hash:
type: "string"
comment:
type: "string"
tarball-base:
type: "string"
additionalProperties: False
diff-start:
type: "string"
flags:
type: "array"
items:
type: "string"
enum: [ "forced", "skipped-sig" ]
required: ["version", "projects"]
additionalProperties: False
branches:
type: "array"
items:
type: "object"
properties:
name:
type: "string"
location:
oneOf:
- type: "string"
- type: "object"
required: ["name", "location"]
additionalProperties: False
stable-status:
type: "string"
enum:
- future
- development
- maintained
- extended maintenance
- unmaintained
- end of life