ce7cb702218693d08ea6d83464d2457c9250027c

This commit is contained in:
ms2k 2026-11-12 20:46:28 +09:00
commit 34c5f8963c

View file

@ -0,0 +1,159 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: projectdeliveries.delivery.quorate.dev
spec:
group: delivery.quorate.dev
names:
kind: ProjectDelivery
listKind: ProjectDeliveryList
plural: projectdeliveries
singular: projectdelivery
scope: Namespaced
versions:
- name: v1alpha1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
required: [spec]
properties:
apiVersion:
type: string
kind:
type: string
metadata:
type: object
spec:
type: object
required: [source, targets, workflowTemplateRef]
properties:
source:
type: object
required: [repository]
properties:
repository:
type: string
pattern: '^https://[^/?#@[:space:]]+/[^/?#[:space:]]+/[^/?#[:space:]]+/?$'
continuous:
type: object
required: [ref]
properties:
ref:
type: string
pattern: '^refs/[^\x00-\x20\x7f~^:?*\[\\]+$'
debounce:
type: string
paths:
type: array
minItems: 1
x-kubernetes-list-type: set
items:
type: string
minLength: 1
pattern: '^[^/]+(/[^/]+)*$'
x-kubernetes-validations:
- rule: "!has(self.debounce) || duration(self.debounce) > duration('0s')"
message: debounce must be a positive duration
- rule: "!self.ref.contains('..') && !self.ref.contains('//') && !self.ref.contains('@{') && !self.ref.endsWith('/') && !self.ref.endsWith('.') && !self.ref.matches('(^|/)[.]') && !self.ref.matches('(^|/)[^/]*[.]lock(/|$)')"
message: ref must satisfy git-check-ref-format
point:
type: object
required: [revisions]
properties:
revisions:
type: array
minItems: 1
x-kubernetes-list-type: set
items:
type: string
pattern: ^([0-9a-f]{40}|[0-9a-f]{64})$
x-kubernetes-validations:
- rule: has(self.continuous) != has(self.point)
message: source must contain exactly one delivery mode
targets:
type: array
minItems: 1
x-kubernetes-list-type: atomic
items:
type: object
x-kubernetes-map-type: atomic
x-kubernetes-preserve-unknown-fields: true
workflowTemplateRef:
type: object
required: [name]
properties:
name:
type: string
maxLength: 253
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'
qualification:
type: object
required: [workflowTemplateRef]
properties:
workflowTemplateRef:
type: object
required: [name]
properties:
name:
type: string
maxLength: 253
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$'
mode:
type: string
enum: [OnBuild, ManualOnly]
default: ManualOnly
interval:
type: string
default: 0s
x-kubernetes-validations:
- rule: "duration(self.interval) >= duration('0s')"
message: interval must be a non-negative duration
status:
type: object
properties:
observedGeneration:
type: integer
format: int64
message:
type: string
lastHandledRetry:
type: string
maxLength: 253
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
continuous:
type: object
properties:
candidateRevision:
type: string
candidateIdentity:
type: string
candidateBuckets:
type: array
maxItems: 3
items:
type: string
candidateSince:
type: string
format: date-time
attempt:
x-kubernetes-preserve-unknown-fields: true
delivered:
type: object
required: [revision, identity]
properties:
revision:
type: string
identity:
type: string
qualification:
type: object
x-kubernetes-preserve-unknown-fields: true
points:
type: array
items:
type: object
x-kubernetes-preserve-unknown-fields: true