From b6c0ea15d063918afbf3a1c860708ce59cad6dba Mon Sep 17 00:00:00 2001 From: Adam Kaplan Date: Thu, 18 Jul 2024 23:04:17 -0400 Subject: [PATCH] Re-generate bundle Re-generate bundle --- bundle.Dockerfile | 21 + ...erator.shipwright.io_shipwrightbuilds.yaml | 134 ++++ ...er-manager-metrics-service_v1_service.yaml | 23 + ...c.authorization.k8s.io_v1_clusterrole.yaml | 17 + ...wright-operator.clusterserviceversion.yaml | 606 ++++++++++++++++++ bundle/metadata/annotations.yaml | 15 + bundle/tests/scorecard/config.yaml | 70 ++ config/manager/kustomization.yaml | 6 + ...wright-operator.clusterserviceversion.yaml | 87 +++ 9 files changed, 979 insertions(+) create mode 100644 bundle.Dockerfile create mode 100644 bundle/manifests/operator.shipwright.io_shipwrightbuilds.yaml create mode 100644 bundle/manifests/shipwright-operator-controller-manager-metrics-service_v1_service.yaml create mode 100644 bundle/manifests/shipwright-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 bundle/manifests/shipwright-operator.clusterserviceversion.yaml create mode 100644 bundle/metadata/annotations.yaml create mode 100644 bundle/tests/scorecard/config.yaml create mode 100644 config/manifests/bases/shipwright-operator.clusterserviceversion.yaml diff --git a/bundle.Dockerfile b/bundle.Dockerfile new file mode 100644 index 00000000..d1fb1ec4 --- /dev/null +++ b/bundle.Dockerfile @@ -0,0 +1,21 @@ +FROM scratch + +# Core bundle labels. +LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 +LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ +LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ +LABEL operators.operatorframework.io.bundle.package.v1=shipwright-operator +LABEL operators.operatorframework.io.bundle.channels.v1=alpha,candidate,stable +LABEL operators.operatorframework.io.bundle.channel.default.v1=stable +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.35.0 +LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v4 + +# Labels for testing. +LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 +LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/ + +# Copy files to locations specified by labels. +COPY bundle/manifests /manifests/ +COPY bundle/metadata /metadata/ +COPY bundle/tests/scorecard /tests/scorecard/ diff --git a/bundle/manifests/operator.shipwright.io_shipwrightbuilds.yaml b/bundle/manifests/operator.shipwright.io_shipwrightbuilds.yaml new file mode 100644 index 00000000..4e74d608 --- /dev/null +++ b/bundle/manifests/operator.shipwright.io_shipwrightbuilds.yaml @@ -0,0 +1,134 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.15.0 + creationTimestamp: null + name: shipwrightbuilds.operator.shipwright.io +spec: + group: operator.shipwright.io + names: + kind: ShipwrightBuild + listKind: ShipwrightBuildList + plural: shipwrightbuilds + singular: shipwrightbuild + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ShipwrightBuild represents the deployment of Shipwright's build + controller on a Kubernetes cluster. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: ShipwrightBuildSpec defines the configuration of a Shipwright + Build deployment. + properties: + targetNamespace: + description: TargetNamespace is the target namespace where Shipwright's + build controller will be deployed. + type: string + type: object + status: + description: ShipwrightBuildStatus defines the observed state of ShipwrightBuild + properties: + conditions: + description: Conditions holds the latest available observations of + a resource's current state. + items: + description: "Condition contains details for one aspect of the current + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" + properties: + lastTransitionTime: + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. + format: date-time + type: string + message: + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. + maxLength: 32768 + type: string + observedGeneration: + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. + format: int64 + minimum: 0 + type: integer + reason: + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. + maxLength: 1024 + minLength: 1 + pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ + type: string + status: + description: status of the condition, one of True, False, Unknown. + enum: + - "True" + - "False" + - Unknown + type: string + type: + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + maxLength: 316 + pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ + type: string + required: + - lastTransitionTime + - message + - reason + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundle/manifests/shipwright-operator-controller-manager-metrics-service_v1_service.yaml b/bundle/manifests/shipwright-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000..22322146 --- /dev/null +++ b/bundle/manifests/shipwright-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: shipwright-operator + app.kubernetes.io/instance: controller-manager-metrics-service + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: service + app.kubernetes.io/part-of: shipwright-operator + control-plane: controller-manager + name: shipwright-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/bundle/manifests/shipwright-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/bundle/manifests/shipwright-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000..e493ee23 --- /dev/null +++ b/bundle/manifests/shipwright-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,17 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: shipwright-operator + app.kubernetes.io/instance: metrics-reader + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: clusterrole + app.kubernetes.io/part-of: shipwright-operator + name: shipwright-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/bundle/manifests/shipwright-operator.clusterserviceversion.yaml b/bundle/manifests/shipwright-operator.clusterserviceversion.yaml new file mode 100644 index 00000000..73ac347d --- /dev/null +++ b/bundle/manifests/shipwright-operator.clusterserviceversion.yaml @@ -0,0 +1,606 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "operator.shipwright.io/v1alpha1", + "kind": "ShipwrightBuild", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "shipwright-operator", + "app.kubernetes.io/instance": "shipwrightbuild-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "shipwrightbuild", + "app.kubernetes.io/part-of": "shipwright-operator" + }, + "name": "shipwrightbuild-sample" + }, + "spec": null + } + ] + capabilities: Basic Install + createdAt: "2024-07-19T03:02:50Z" + operators.operatorframework.io/builder: operator-sdk-v1.35.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + name: shipwright-operator.v0.14.0-rc0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ShipwrightBuild represents the deployment of Shipwright's build + controller on a Kubernetes cluster. + displayName: Shipwright Build + kind: ShipwrightBuild + name: shipwrightbuilds.operator.shipwright.io + version: v1alpha1 + required: + - kind: TektonConfig + name: tektonconfigs.operator.tekton.dev + version: v1alpha1 + - kind: Certificate + name: certificates.cert-manager.io + version: v1 + description: | + Shipwright is a framework for building container images on Kubernetes. + + Read more: [https://shipwright.io](https://shipwright.io) + + ## Usage + + To deploy and manage [Shipwright Builds](https://github.com/shipwright-io/build) in your cluster, + first make sure this operator is installed and running on your cluster. + + Next, create the following: + + ```yaml + --- + apiVersion: operator.shipwright.io/v1alpha1 + kind: ShipwrightBuild + metadata: + name: shipwright-operator + spec: + targetNamespace: shipwright-build + ``` + + The operator will deploy Shipwright Builds in the provided `targetNamespace`. + When `.spec.targetNamespace` is not set, the namespace will default to `shipwright-build`. + Refer to the [ShipwrightBuild documentation](https://github.com/shipwright-io/operator/blob/main/docs/shipwrightbuild.md) for more information about this custom resource. + displayName: Shipwright Operator + icon: + - base64data: | + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjE0MCIKICAgaGVpZ2h0PSIxNDAiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDM3LjA0MTY2OCAzNy4wNDE2NjYiCiAgIGlkPSJzdmcyNTMyIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMyNTM2IiAvPgogIDxnCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY4LjY3MDgxLDg1LjgwMDIyMikiCiAgICAgaWQ9ImcyNTMwIj4KICAgIDxnCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NC44MDksLTE1OC43KSIKICAgICAgIGlkPSJnMjUyOCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gLTE0LjMxOSw3NC4zNCBjIC0wLjIzMTUsMC4wMTkgLTAuNDI4MzIsMC4wMzk3IC0wLjU5NTYyLDAuMDY0OCAtMC4xNjcyOSwwLjAyNSAtMC4yNzIsMC4wMjQ5IC0wLjQ4OTUsMC4xMjk2IC0wLjIxNzQ4LDAuMTA0NzMgLTAuMjgyNzgsMC4xODY4NCAtMC40MDY2NiwwLjMwMjA0IC0wLjEyMzg4LDAuMTE1MTkgLTAuMjYyMTcsMC4yNTYxNSAtMC40MjE0LDAuNDI1MjggLTAuMzE4NDYsMC4zMzgyNyAtMC43MTU2NCwwLjc4NzU3IC0xLjE2ODcsMS4zMTYzIC0wLjkwNjE4LDEuMDU3NSAtMi4wMzM0LDIuNDMxMiAtMy4xNDE3LDMuODIxIC0xLjEwODMsMS4zODk4IC0yLjE5NjksMi43OTQ1IC0zLjAyNjEsMy45MTMzIC0wLjQxNDY0LDAuNTU5NDMgLTAuNzYzNzEsMS4wNDY1IC0xLjAyMjYsMS40MzIzIC0wLjEyOTQ2LDAuMTkyODkgLTAuMjM2MDQsMC4zNTk2NiAtMC4zMjA3OCwwLjUwNjA5IC0wLjA4NDc1LDAuMTQ2NDIgLTAuMTUwOTUsMC4yMjgyIC0wLjIwNDY5LDAuNDYzNiAtMC4wNTM3NCwwLjIzNTQgLTAuMDI5MzQsMC4zMzc0OCAtMC4wMTY1NSwwLjUwNjIgMC4wMTI2MiwwLjE2ODczIDAuMDM2MjQsMC4zNjU1IDAuMDY5MTYsMC41OTU1IDAuMDY1ODQsMC40NiAwLjE2OTE0LDEuMDUwNSAwLjI5OTg5LDEuNzM0NiAwLjI2MTUxLDEuMzY4MiAwLjYzMjcsMy4xMDYzIDEuMDI3OSw0LjgzOTggMC4zOTUyNiwxLjczMzUgMC44MTM5MiwzLjQ2MDIgMS4xNzE0LDQuODA2NCAwLjE3ODcxLDAuNjczMTUgMC4zNDE4NSwxLjI1MDIgMC40ODE5NCwxLjY5MzIgMC4wNzAwNSwwLjIyMTUzIDAuMTMzNDgsMC40MDg3NyAwLjE5NTA4LDAuNTY2MzUgMC4wNjE2MSwwLjE1NzU4IDAuMDg0OTYsMC4yNjA1OCAwLjIzNTQ1LDAuNDQ5MzkgMC4xNTA0NywwLjE4ODggMC4yNDUyNywwLjIzMzc1IDAuMzg1MTEsMC4zMjg5MyAwLjEzOTg0LDAuMDk1MiAwLjMwODMyLDAuMTk5MzQgMC41MDg2LDAuMzE3IDAuNDAwNTUsMC4yMzUzIDAuOTI2NTEsMC41MjI2IDEuNTQyNywwLjg0NjgzIDEuMjMyMywwLjY0ODQ0IDIuODIxNiwxLjQ0MSA0LjQyMjgsMi4yMTI2IDEuNjAxMiwwLjc3MTU3IDMuMjEyMywxLjUyMDcgNC40ODczLDIuMDgwNSAwLjYzNzUsMC4yNzk4OSAxLjE5MDIsMC41MTI4NiAxLjYyMzgsMC42Nzk1MiAwLjIxNjgsMC4wODMzIDAuNDAyOTIsMC4xNDk1NyAwLjU2NDQ4LDAuMTk5NjQgMC4xNjE1NiwwLjA1MDEgMC4yNTU2NiwwLjA5NjQgMC40OTcwMywwLjA5NjQgMC4yNDEzOSwzZS01IDAuMzM2MjcsLTAuMDQ2MSAwLjQ5Nzg1LC0wLjA5NjIgMC4xNjE1OCwtMC4wNSAwLjM0NzQ5LC0wLjExNjkyIDAuNTY0MzIsLTAuMjAwMiAwLjQzMzY2LC0wLjE2NjU2IDAuOTg2MDQsLTAuMzk4NzQgMS42MjM2LC0wLjY3ODUgMS4yNzUyLC0wLjU1OTUgMi44ODY2LC0xLjMwODMgNC40ODgsLTIuMDc5NSAxLjYwMTQsLTAuNzcxMjMgMy4xOTExLC0xLjU2MzYgNC40MjM2LC0yLjIxMTggMC42MTYyNiwtMC4zMjQwOSAxLjE0MjcsLTAuNjExNDYgMS41NDMzLC0wLjg0NjY4IDAuMjAwMzEsLTAuMTE3NjEgMC4zNjg2MSwtMC4yMjE2OSAwLjUwODQ3LC0wLjMxNjg0IDAuMTM5ODcsLTAuMDk1MSAwLjIzNDksLTAuMTQwNjEgMC4zODU0MywtMC4zMjkzNyAwLjE1MDUyLC0wLjE4ODc2IDAuMTcyOTksLTAuMjkxMTggMC4yMzQ2NCwtMC40NDg3NCAwLjA2MTY1LC0wLjE1NzU2IDAuMTI1NjgsLTAuMzQ0MzggMC4xOTU3OSwtMC41NjU4OCAwLjE0MDIxLC0wLjQ0MzAxIDAuMzAzNjgsLTEuMDE5OSAwLjQ4MjU4LC0xLjY5MyAwLjM1NzgsLTEuMzQ2MiAwLjc3NjQ1LC0zLjA3MzEgMS4xNzIyLC00LjgwNjQgMC4zOTU3NSwtMS43MzMzIDAuNzY4MDMsLTMuNDcxIDEuMDI5OSwtNC44MzkgMC4xMzA5NSwtMC42ODQwMyAwLjIzNDQzLC0xLjI3NTMgMC4zMDAzOCwtMS43MzUzIDAuMDMyOTgsLTAuMjI5OTkgMC4wNTY0NSwtMC40MjY0OCAwLjA2OTMsLTAuNTk1MiAwLjAxMjg0LC0wLjE2ODcxIDAuMDM2OTMsLTAuMjcwNTggLTAuMDE2NzUsLTAuNTA2IEMgOS44MjgyNyw4Ni40ODMxMyA5Ljc2MjAyLDg2LjQwMTUzIDkuNjc3MzEsODYuMjU1MDggOS41OTI2LDg2LjEwODYzIDkuNDg2NDcsODUuOTQxODQgOS4zNTcwNiw4NS43NDg5MSA5LjA5ODIzLDg1LjM2MzA2IDguNzQ4OTEsODQuODc1MTcgOC4zMzQzNiw4NC4zMTU2MSBjIC0wLjgyOTA1LC0xLjExOTEgLTEuOTE3OSwtMi41MjMzIC0zLjAyNTksLTMuOTEzNSAtMS4xMDgsLTEuMzkwMiAtMi4yMzQsLTIuNzY0NSAtMy4xMzk5LC0zLjgyMjIgLTAuNDUyOTksLTAuNTI4ODggLTAuODUwNDgsLTAuOTc3NyAtMS4xNjg5LC0xLjMxNiBDIDAuODQwNDYsNzUuMDk0NzQgMC43MDE3OCw3NC45NTM2NSAwLjU3NzkzLDc0LjgzODQyIDAuNDU0MDgsNzQuNzIzMTkgMC4zODkyMSw3NC42NDAyNSAwLjE3MTc2LDc0LjUzNTQ2IGMgLTAuMzI2MTksLTAuMTU3MTkgLTAuNDY2LC0wLjEzMTY4IC0wLjc2MzIxLC0wLjE2MzczIC0wLjI5NzIxLC0wLjAzMjEgLTAuNjcxNTUsLTAuMDU4NyAtMS4xMTMzLC0wLjA4MiAtMC44ODM1NSwtMC4wNDY2IC0yLjAzMzMsLTAuMDc4NCAtMy4yOTM2LC0wLjA5NjkgLTIuNTIwNiwtMC4wMzcgLTUuNDc1MiwtMC4wMTk1IC03LjU2MjYsMC4wNTQxIC0wLjY5NTgxLDAuMDI0NSAtMS4yOTQ5LDAuMDU0OCAtMS43NTc5LDAuMDkyOSB6IgogICAgICAgICBmaWxsPSIjN2M4ZmE0IgogICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICBzdHlsZT0icGFpbnQtb3JkZXI6bWFya2VycyBmaWxsIHN0cm9rZSIKICAgICAgICAgaWQ9InBhdGgyNTA4IiAvPgogICAgICA8ZwogICAgICAgICBmaWxsPSIjMGUyMzJlIgogICAgICAgICBpZD0iZzI1MTgiPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgZD0ibSAtMTMuNzU2LDgwLjE2OCBhIDAuODUwMDksMC44NTAwOSAwIDAgMCAtMC44NDk2MSwwLjg4MDg2IGwgMC4yNDYwOSw2LjQxMjEgYSAwLjg1MDA5LDAuODUwMDkgMCAwIDAgMC44NDk2MSwwLjgxNjQxIGggMTEuODI2IGEgMC44NTAwOSwwLjg1MDA5IDAgMCAwIDAuODQ3NjYsLTAuODE2NDEgbCAwLjI0NjA5LC02LjQxMjEgQSAwLjg1MDA5LDAuODUwMDkgMCAwIDAgLTEuNDM5NzcsODAuMTY4IFogbSAwLjg4MjgxLDEuNjk5MiBoIDEwLjU1MyBsIC0wLjE4MTY0LDQuNzEwOSBoIC0xMC4xODkgeiIKICAgICAgICAgICBjb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBjb2xvci1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNoYXBlLXJlbmRlcmluZz0iYXV0byIKICAgICAgICAgICBzb2xpZC1jb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWluZGVudDowO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtdHJhbnNmb3JtOm5vbmU7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt3aGl0ZS1zcGFjZTpub3JtYWw7c2hhcGUtcGFkZGluZzowO3NoYXBlLW1hcmdpbjowO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsIgogICAgICAgICAgIGlkPSJwYXRoMjUxMCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gLTcuNjMwNSw3Ny4wNTcgdiAwLjAwMTkgYyAtMS4yNzE1LC0wLjAwMTEgLTIuMTQ4LDAuNDQ2MjIgLTIuMzAwMSwwLjYwNTk5IC0wLjA5NDA4MSwwLjI1NTYxIC0wLjE0NDI2LDIuNzc5OSAtMC4xNDQyNiwyLjc3OTkgbCAyLjQ0NzYsMC4xNTc5NiB2IDAuMDAzOCBsIDAuMDMwMjY1LC0wLjAwMjEgMC4wMzAyNjUsMC4wMDIxIHYgLTAuMDAzOCBsIDIuNDQ3MiwtMC4xNTc5NiBjIDAsMCAtMC4wNDk3NzUsLTIuNTI0MyAtMC4xNDM4NiwtMi43Nzk5IC0wLjE1MjA2LC0wLjE1OTc2IC0xLjAyODYsLTAuNjA3MDIgLTIuMzAwMSwtMC42MDU5OCB2IC0wLjAwMTkgYyAtMC4wMTE2MjksLTEuNTllLTQgLTAuMDIxOTM4LDEwZS00IC0wLjAzMzQ5Nyw5LjM3ZS00IC0wLjAxMTU3NSw4LjRlLTUgLTAuMDIxODYsLTAuMDAxMSAtMC4wMzM0OTcsLTkuMzdlLTQgeiIKICAgICAgICAgICBpZD0icGF0aDI1MTIiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC03Ljc2OTYsODQuMzY4IHYgMC4wMTU1MSBjIC0yLjgwOTYsMC4yMjQyIC05LjIyOTksMy4wNzUzIC05LjIyOTksMy4wNzUzIDAuMzg3OSwxLjQ0NzcgMS4wMDc4LDMuMTYxMiAxLjQzNzEsNC4zMDA1IDAuMjgwOTQsLTAuMDk1MTYgMC41MjU0NywtMC4xOTQ1MSAwLjczNDMyLC0wLjI5MjQ5IDAuODUyOTEsLTAuNDAwMTIgMS4wNjA0LC0wLjY3OCAxLjA2MDQsLTAuNjc4IGwgMC42NjE5OCwtMC43Njk0NiAwLjc2MDE2LDAuNjczODYgYyAwLDAgMS43OTMyLDEuNjA3MSA0LjgxOTksMS42MDcxIDMuMDI2NywwIDUuMDI3NiwtMS42MzI1IDUuMDI3NiwtMS42MzI1IGwgMC41NzA1MSwtMC40NjcxNSAwLjYxNDk1LDAuNDA2NjkgYyAwLDAgMC43MTExOCwwLjQ1NTQ0IDEuODA2NiwwLjg5NCAwLjQxMTA2LC0xLjEzOTEgMC45NTI4MSwtMi43MDU3IDEuMzExLC00LjA0MjYgMCwwIC02LjQyMDEsLTIuODUxMyAtOS4yMjk5LC0zLjA3NTMgdiAtMC4wMTU1IGMgLTAuMDU3NTU4LDAgLTAuMTE0NjIsMC4wMDM0IC0wLjE3MjA4LDAuMDA1NyAtMC4wNTc1MTYsLTAuMDAyNCAtMC4xMTQ5OSwtMC4wMDU3IC0wLjE3MjYsLTAuMDA1NyB6IgogICAgICAgICAgIGlkPSJwYXRoMjUxNCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gLTcuNzY5Niw4NC4zNjggdiAwLjAxNTUxIGMgLTIuODA5NiwwLjIyNDIgLTkuMjI5OSwzLjA3NTMgLTkuMjI5OSwzLjA3NTMgMC4zODc5LDEuNDQ3NyAyLjI1MzYsNy4wNDAzIDIuNjgzLDguMTc5NiA0LjcyMjUsLTEuNTMyIDkuMDU0MSwtMi4yMTQ0IDEzLjc4OSwtMC4yOTIyNCAwLjQxMTA2LC0xLjEzOTEgMS45NzQ3LC02LjU1MDUgMi4zMzI5LC03Ljg4NzQgMCwwIC02LjQyMDEsLTIuODUxMyAtOS4yMjk5LC0zLjA3NTMgdiAtMC4wMTU1IGMgLTAuMDU3NTU4LDAgLTAuMTE0NjIsMC4wMDM0IC0wLjE3MjA4LDAuMDA1NyAtMC4wNTc1MTYsLTAuMDAyNCAtMC4xMTQ5OSwtMC4wMDU3IC0wLjE3MjYsLTAuMDA1NyB6IgogICAgICAgICAgIGlkPSJwYXRoMjUxNiIgLz4KICAgICAgPC9nPgogICAgICA8ZwogICAgICAgICBzaGFwZS1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgIGlkPSJnMjUyNiI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC0yLjgyODQsOTEuODE2IGMgLTIuODA2NCwyLjUxMjcgLTcuMTA1MywyLjEyMDUgLTkuNzEyOSwwLjAxOTUzIGwgLTAuNzUzOTEsMC40OTYwOSBjIDAsMCAtMi40OTQ3LDEuNSAtNC4zMjYyLDEuNSB2IDEwLjMzOCBjIDIuMzc3LDAgNC4xODk0LC0xLjAzNzEgNC45NjQ4LC0xLjUxOTUgMC43Nzk3NCwwLjUyOTA1IDIuMzEzNiwxLjQzMDggNC45NjI5LDEuNTE3NiAyLjcwNjUsMC4wODg2IDQuMjc0LC0wLjkwNzM5IDUuMDc0MiwtMS41MDU5IDAuNzkxOTEsMC40ODA3OCAyLjYyNTYsMS41MDc4IDQuOTMzNiwxLjUwNzggdiAtMTAuMzM4IGMgLTEuNjk1NywwIC00LjM0NTcsLTEuNTEzNyAtNC4zNDU3LC0xLjUxMzcgeiIKICAgICAgICAgICBjb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBjb2xvci1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iCiAgICAgICAgICAgZmlsbD0iIzdjOGZhNCIKICAgICAgICAgICBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgc29saWQtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3RvcC1jb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7dGV4dC1pbmRlbnQ6MDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LXRyYW5zZm9ybTpub25lO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7d2hpdGUtc3BhY2U6bm9ybWFsO3NoYXBlLXBhZGRpbmc6MDtzaGFwZS1tYXJnaW46MDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbCIKICAgICAgICAgICBpZD0icGF0aDI1MjAiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC0yLjkxMDIsOTMuNTc2IC0wLjU2NDQ1LDAuNTQ2ODggYyAwLDAgLTEuNTI3MywxLjUwNTQgLTQuMjU1OSwxLjQxNiAtMi43OTgxLC0wLjA5MTY0IC00LjM2NTIsLTEuNDU3IC00LjM2NTIsLTEuNDU3IGwgLTAuNTcwMzEsLTAuNDkwMjMgLTAuNjI4OTEsMC40MTQwNiBjIDAsMCAtMi41MDk3LDEuNTMzMiAtNC40MzU1LDEuNTMzMiB2IDIgYyAyLjM4ODMsMCA0LjI4MDksLTEuMTE2NCA0Ljk2NjgsLTEuNTQ4OCAwLjY4NDQ4LDAuNDgyNDggMi4yNDI4LDEuNDU3NiA0Ljk2ODgsMS41NDY5IDIuNzczNCwwLjA5MDgzIDQuMzU2MywtMC45OTE1NCA1LjA1ODYsLTEuNTM5MSAwLjcwMDkyLDAuNDMwNDMgMi42MjU2LDEuNTQxIDQuOTQxNCwxLjU0MSB2IC0yIGMgLTEuNzk0NiwwIC00LjQ1MTIsLTEuNTQzIC00LjQ1MTIsLTEuNTQzIHoiCiAgICAgICAgICAgY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgY29sb3ItcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIgogICAgICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNvbGlkLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0b3AtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3doaXRlLXNwYWNlOm5vcm1hbDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiCiAgICAgICAgICAgaWQ9InBhdGgyNTIyIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgZD0ibSAtMi45MTAyLDk4LjA3NCBjIC0xLjMyMjUsMS4yNzg3IC0zLjcwOTQsMS42MTc5IC00LjgyMDMsMS41OTkxIC0xLjc3MjMsLTAuMDY4NjEgLTMuNTc1MiwtMC40MTQxNCAtNC45MzU1LC0xLjU4MzUgLTEuNTM5LDAuODg0ODYgLTMuNTI2MSwxLjM4OTggLTUuMDY0NSwxLjQxODEgdiAyIGMgMi4zODgzLDAgNC4yODA5LC0wLjU4NzE3IDQuOTY2OCwtMS4wMTk2IDAuNjg0NDgsMC40ODI0NyAyLjI0MjgsMS4wOTM4IDQuOTY4OCwxLjE4MyAyLjc3MzQsMC4wOTA4IDQuMzU2MywtMC42Mjc3MyA1LjA1ODYsLTEuMTc1MiAwLjcwMDkyLDAuNDMwNDIgMi42MjU2LDEuMDExOCA0Ljk0MTQsMS4wMTE4IHYgLTIgQyAwLjQ0MjgsOTkuMzczNiAtMS4zOTk0LDk5LjAyOTI4IC0yLjkxMDEsOTguMDc0IFoiCiAgICAgICAgICAgY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgY29sb3ItcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIgogICAgICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNvbGlkLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0b3AtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3doaXRlLXNwYWNlOm5vcm1hbDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiCiAgICAgICAgICAgaWQ9InBhdGgyNTI0IiAvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - admissionregistration.k8s.io + resources: + - validatingwebhookconfigurations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - admissionregistration.k8s.io/v1beta1 + resources: + - validatingwebhookconfigurations + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - apiextensions.k8s.io + resources: + - customresourcedefinitions + verbs: + - create + - get + - list + - watch + - apiGroups: + - apiextensions.k8s.io + resourceNames: + - buildruns.shipwright.io + - builds.shipwright.io + - buildstrategies.shipwright.io + - clusterbuildstrategies.shipwright.io + resources: + - customresourcedefinitions + verbs: + - delete + - patch + - update + - apiGroups: + - apps + resources: + - deployments + verbs: + - create + - get + - list + - watch + - apiGroups: + - apps + resourceNames: + - shipwright-build-controller + resources: + - deployments + verbs: + - delete + - patch + - update + - apiGroups: + - apps + resourceNames: + - shipwright-build-webhook + resources: + - deployments + verbs: + - delete + - patch + - update + - apiGroups: + - apps + resourceNames: + - shipwright-build-controller + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - apps + resourceNames: + - shipwright-build-webhook + resources: + - deployments/finalizers + verbs: + - update + - apiGroups: + - cert-manager.io + resources: + - certificates + verbs: + - create + - get + - list + - watch + - apiGroups: + - cert-manager.io + resourceNames: + - shipwright-build-webhook-cert + resources: + - certificates + verbs: + - delete + - patch + - update + - apiGroups: + - cert-manager.io + resources: + - issuers + verbs: + - create + - get + - list + - watch + - apiGroups: + - cert-manager.io + resourceNames: + - selfsigned-issuer + resources: + - issuers + verbs: + - delete + - patch + - update + - apiGroups: + - "" + resources: + - configmaps + - events + - limitranges + - namespaces + - pods + - secrets + - services + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - namespaces + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - create + - get + - list + - watch + - apiGroups: + - "" + resourceNames: + - shipwright-build-controller + resources: + - serviceaccounts + verbs: + - delete + - patch + - update + - apiGroups: + - "" + resourceNames: + - shipwright-build-webhook + resources: + - serviceaccounts + verbs: + - delete + - patch + - update + - apiGroups: + - operator.shipwright.io + resources: + - shipwrightbuilds + verbs: + - get + - list + - patch + - update + - watch + - apiGroups: + - operator.shipwright.io + resources: + - shipwrightbuilds/finalizers + verbs: + - update + - apiGroups: + - operator.shipwright.io + resources: + - shipwrightbuilds/status + verbs: + - get + - patch + - update + - apiGroups: + - operator.tekton.dev + resources: + - tektonconfigs + verbs: + - create + - get + - list + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterrolebindings + verbs: + - create + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-controller + resources: + - clusterrolebindings + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-webhook + resources: + - clusterrolebindings + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resources: + - clusterroles + verbs: + - create + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-aggregate-edit + resources: + - clusterroles + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-aggregate-view + resources: + - clusterroles + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-controller + resources: + - clusterroles + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-webhook + resources: + - clusterroles + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resources: + - rolebindings + verbs: + - create + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-controller + resources: + - rolebindings + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-webhook + resources: + - rolebindings + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resources: + - roles + verbs: + - create + - get + - list + - watch + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-controller + resources: + - roles + verbs: + - delete + - patch + - update + - apiGroups: + - rbac.authorization.k8s.io + resourceNames: + - shipwright-build-webhook + resources: + - roles + verbs: + - delete + - patch + - update + - apiGroups: + - shipwright.io + resources: + - clusterbuildstrategies + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: shipwright-operator-controller-manager + deployments: + - label: + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: shipwright-operator + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: deployment + app.kubernetes.io/part-of: shipwright-operator + control-plane: controller-manager + name: shipwright-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + - args: + - --health-probe-bind-address=:8081 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + command: + - /manager + image: ghcr.io/shipwright-io/operator/operator:v0.14.0-rc0 + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + securityContext: + runAsNonRoot: true + serviceAccountName: shipwright-operator-controller-manager + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: shipwright-operator-controller-manager + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - build + - cicd + - shipwright + - tekton + links: + - name: Documentation + url: https://shipwright.io + - name: Shipwright Builds + url: https://github.com/shipwright-io/build + maintainers: + - email: shipwright-dev@lists.shipwright.io + name: The Shipwright Contributors + maturity: alpha + minKubeVersion: 1.24.0 + provider: + name: The Shipwright Contributors + url: https://shipwright.io + version: 0.14.0-rc0 diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml new file mode 100644 index 00000000..bc646af5 --- /dev/null +++ b/bundle/metadata/annotations.yaml @@ -0,0 +1,15 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: shipwright-operator + operators.operatorframework.io.bundle.channels.v1: alpha,candidate,stable + operators.operatorframework.io.bundle.channel.default.v1: stable + operators.operatorframework.io.metrics.builder: operator-sdk-v1.35.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v4 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/bundle/tests/scorecard/config.yaml b/bundle/tests/scorecard/config.yaml new file mode 100644 index 00000000..4e32de13 --- /dev/null +++ b/bundle/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.35.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {} diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 5c5f0b84..ddb34826 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -1,2 +1,8 @@ resources: - manager.yaml +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +images: +- name: controller + newName: ghcr.io/shipwright-io/operator/operator + newTag: v0.14.0-rc0 diff --git a/config/manifests/bases/shipwright-operator.clusterserviceversion.yaml b/config/manifests/bases/shipwright-operator.clusterserviceversion.yaml new file mode 100644 index 00000000..e5a5873e --- /dev/null +++ b/config/manifests/bases/shipwright-operator.clusterserviceversion.yaml @@ -0,0 +1,87 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: '[]' + capabilities: Basic Install + name: shipwright-operator.v0.0.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: ShipwrightBuild represents the deployment of Shipwright's build + controller on a Kubernetes cluster. + displayName: Shipwright Build + kind: ShipwrightBuild + name: shipwrightbuilds.operator.shipwright.io + version: v1alpha1 + required: + - kind: TektonConfig + name: tektonconfigs.operator.tekton.dev + version: v1alpha1 + - kind: Certificate + name: certificates.cert-manager.io + version: v1 + description: | + Shipwright is a framework for building container images on Kubernetes. + + Read more: [https://shipwright.io](https://shipwright.io) + + ## Usage + + To deploy and manage [Shipwright Builds](https://github.com/shipwright-io/build) in your cluster, + first make sure this operator is installed and running on your cluster. + + Next, create the following: + + ```yaml + --- + apiVersion: operator.shipwright.io/v1alpha1 + kind: ShipwrightBuild + metadata: + name: shipwright-operator + spec: + targetNamespace: shipwright-build + ``` + + The operator will deploy Shipwright Builds in the provided `targetNamespace`. + When `.spec.targetNamespace` is not set, the namespace will default to `shipwright-build`. + Refer to the [ShipwrightBuild documentation](https://github.com/shipwright-io/operator/blob/main/docs/shipwrightbuild.md) for more information about this custom resource. + displayName: Shipwright Operator + icon: + - base64data: | + PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjE0MCIKICAgaGVpZ2h0PSIxNDAiCiAgIHZlcnNpb249IjEuMSIKICAgdmlld0JveD0iMCAwIDM3LjA0MTY2OCAzNy4wNDE2NjYiCiAgIGlkPSJzdmcyNTMyIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMyNTM2IiAvPgogIDxnCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTY4LjY3MDgxLDg1LjgwMDIyMikiCiAgICAgaWQ9ImcyNTMwIj4KICAgIDxnCiAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5NC44MDksLTE1OC43KSIKICAgICAgIGlkPSJnMjUyOCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gLTE0LjMxOSw3NC4zNCBjIC0wLjIzMTUsMC4wMTkgLTAuNDI4MzIsMC4wMzk3IC0wLjU5NTYyLDAuMDY0OCAtMC4xNjcyOSwwLjAyNSAtMC4yNzIsMC4wMjQ5IC0wLjQ4OTUsMC4xMjk2IC0wLjIxNzQ4LDAuMTA0NzMgLTAuMjgyNzgsMC4xODY4NCAtMC40MDY2NiwwLjMwMjA0IC0wLjEyMzg4LDAuMTE1MTkgLTAuMjYyMTcsMC4yNTYxNSAtMC40MjE0LDAuNDI1MjggLTAuMzE4NDYsMC4zMzgyNyAtMC43MTU2NCwwLjc4NzU3IC0xLjE2ODcsMS4zMTYzIC0wLjkwNjE4LDEuMDU3NSAtMi4wMzM0LDIuNDMxMiAtMy4xNDE3LDMuODIxIC0xLjEwODMsMS4zODk4IC0yLjE5NjksMi43OTQ1IC0zLjAyNjEsMy45MTMzIC0wLjQxNDY0LDAuNTU5NDMgLTAuNzYzNzEsMS4wNDY1IC0xLjAyMjYsMS40MzIzIC0wLjEyOTQ2LDAuMTkyODkgLTAuMjM2MDQsMC4zNTk2NiAtMC4zMjA3OCwwLjUwNjA5IC0wLjA4NDc1LDAuMTQ2NDIgLTAuMTUwOTUsMC4yMjgyIC0wLjIwNDY5LDAuNDYzNiAtMC4wNTM3NCwwLjIzNTQgLTAuMDI5MzQsMC4zMzc0OCAtMC4wMTY1NSwwLjUwNjIgMC4wMTI2MiwwLjE2ODczIDAuMDM2MjQsMC4zNjU1IDAuMDY5MTYsMC41OTU1IDAuMDY1ODQsMC40NiAwLjE2OTE0LDEuMDUwNSAwLjI5OTg5LDEuNzM0NiAwLjI2MTUxLDEuMzY4MiAwLjYzMjcsMy4xMDYzIDEuMDI3OSw0LjgzOTggMC4zOTUyNiwxLjczMzUgMC44MTM5MiwzLjQ2MDIgMS4xNzE0LDQuODA2NCAwLjE3ODcxLDAuNjczMTUgMC4zNDE4NSwxLjI1MDIgMC40ODE5NCwxLjY5MzIgMC4wNzAwNSwwLjIyMTUzIDAuMTMzNDgsMC40MDg3NyAwLjE5NTA4LDAuNTY2MzUgMC4wNjE2MSwwLjE1NzU4IDAuMDg0OTYsMC4yNjA1OCAwLjIzNTQ1LDAuNDQ5MzkgMC4xNTA0NywwLjE4ODggMC4yNDUyNywwLjIzMzc1IDAuMzg1MTEsMC4zMjg5MyAwLjEzOTg0LDAuMDk1MiAwLjMwODMyLDAuMTk5MzQgMC41MDg2LDAuMzE3IDAuNDAwNTUsMC4yMzUzIDAuOTI2NTEsMC41MjI2IDEuNTQyNywwLjg0NjgzIDEuMjMyMywwLjY0ODQ0IDIuODIxNiwxLjQ0MSA0LjQyMjgsMi4yMTI2IDEuNjAxMiwwLjc3MTU3IDMuMjEyMywxLjUyMDcgNC40ODczLDIuMDgwNSAwLjYzNzUsMC4yNzk4OSAxLjE5MDIsMC41MTI4NiAxLjYyMzgsMC42Nzk1MiAwLjIxNjgsMC4wODMzIDAuNDAyOTIsMC4xNDk1NyAwLjU2NDQ4LDAuMTk5NjQgMC4xNjE1NiwwLjA1MDEgMC4yNTU2NiwwLjA5NjQgMC40OTcwMywwLjA5NjQgMC4yNDEzOSwzZS01IDAuMzM2MjcsLTAuMDQ2MSAwLjQ5Nzg1LC0wLjA5NjIgMC4xNjE1OCwtMC4wNSAwLjM0NzQ5LC0wLjExNjkyIDAuNTY0MzIsLTAuMjAwMiAwLjQzMzY2LC0wLjE2NjU2IDAuOTg2MDQsLTAuMzk4NzQgMS42MjM2LC0wLjY3ODUgMS4yNzUyLC0wLjU1OTUgMi44ODY2LC0xLjMwODMgNC40ODgsLTIuMDc5NSAxLjYwMTQsLTAuNzcxMjMgMy4xOTExLC0xLjU2MzYgNC40MjM2LC0yLjIxMTggMC42MTYyNiwtMC4zMjQwOSAxLjE0MjcsLTAuNjExNDYgMS41NDMzLC0wLjg0NjY4IDAuMjAwMzEsLTAuMTE3NjEgMC4zNjg2MSwtMC4yMjE2OSAwLjUwODQ3LC0wLjMxNjg0IDAuMTM5ODcsLTAuMDk1MSAwLjIzNDksLTAuMTQwNjEgMC4zODU0MywtMC4zMjkzNyAwLjE1MDUyLC0wLjE4ODc2IDAuMTcyOTksLTAuMjkxMTggMC4yMzQ2NCwtMC40NDg3NCAwLjA2MTY1LC0wLjE1NzU2IDAuMTI1NjgsLTAuMzQ0MzggMC4xOTU3OSwtMC41NjU4OCAwLjE0MDIxLC0wLjQ0MzAxIDAuMzAzNjgsLTEuMDE5OSAwLjQ4MjU4LC0xLjY5MyAwLjM1NzgsLTEuMzQ2MiAwLjc3NjQ1LC0zLjA3MzEgMS4xNzIyLC00LjgwNjQgMC4zOTU3NSwtMS43MzMzIDAuNzY4MDMsLTMuNDcxIDEuMDI5OSwtNC44MzkgMC4xMzA5NSwtMC42ODQwMyAwLjIzNDQzLC0xLjI3NTMgMC4zMDAzOCwtMS43MzUzIDAuMDMyOTgsLTAuMjI5OTkgMC4wNTY0NSwtMC40MjY0OCAwLjA2OTMsLTAuNTk1MiAwLjAxMjg0LC0wLjE2ODcxIDAuMDM2OTMsLTAuMjcwNTggLTAuMDE2NzUsLTAuNTA2IEMgOS44MjgyNyw4Ni40ODMxMyA5Ljc2MjAyLDg2LjQwMTUzIDkuNjc3MzEsODYuMjU1MDggOS41OTI2LDg2LjEwODYzIDkuNDg2NDcsODUuOTQxODQgOS4zNTcwNiw4NS43NDg5MSA5LjA5ODIzLDg1LjM2MzA2IDguNzQ4OTEsODQuODc1MTcgOC4zMzQzNiw4NC4zMTU2MSBjIC0wLjgyOTA1LC0xLjExOTEgLTEuOTE3OSwtMi41MjMzIC0zLjAyNTksLTMuOTEzNSAtMS4xMDgsLTEuMzkwMiAtMi4yMzQsLTIuNzY0NSAtMy4xMzk5LC0zLjgyMjIgLTAuNDUyOTksLTAuNTI4ODggLTAuODUwNDgsLTAuOTc3NyAtMS4xNjg5LC0xLjMxNiBDIDAuODQwNDYsNzUuMDk0NzQgMC43MDE3OCw3NC45NTM2NSAwLjU3NzkzLDc0LjgzODQyIDAuNDU0MDgsNzQuNzIzMTkgMC4zODkyMSw3NC42NDAyNSAwLjE3MTc2LDc0LjUzNTQ2IGMgLTAuMzI2MTksLTAuMTU3MTkgLTAuNDY2LC0wLjEzMTY4IC0wLjc2MzIxLC0wLjE2MzczIC0wLjI5NzIxLC0wLjAzMjEgLTAuNjcxNTUsLTAuMDU4NyAtMS4xMTMzLC0wLjA4MiAtMC44ODM1NSwtMC4wNDY2IC0yLjAzMzMsLTAuMDc4NCAtMy4yOTM2LC0wLjA5NjkgLTIuNTIwNiwtMC4wMzcgLTUuNDc1MiwtMC4wMTk1IC03LjU2MjYsMC4wNTQxIC0wLjY5NTgxLDAuMDI0NSAtMS4yOTQ5LDAuMDU0OCAtMS43NTc5LDAuMDkyOSB6IgogICAgICAgICBmaWxsPSIjN2M4ZmE0IgogICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICBzdHlsZT0icGFpbnQtb3JkZXI6bWFya2VycyBmaWxsIHN0cm9rZSIKICAgICAgICAgaWQ9InBhdGgyNTA4IiAvPgogICAgICA8ZwogICAgICAgICBmaWxsPSIjMGUyMzJlIgogICAgICAgICBpZD0iZzI1MTgiPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgZD0ibSAtMTMuNzU2LDgwLjE2OCBhIDAuODUwMDksMC44NTAwOSAwIDAgMCAtMC44NDk2MSwwLjg4MDg2IGwgMC4yNDYwOSw2LjQxMjEgYSAwLjg1MDA5LDAuODUwMDkgMCAwIDAgMC44NDk2MSwwLjgxNjQxIGggMTEuODI2IGEgMC44NTAwOSwwLjg1MDA5IDAgMCAwIDAuODQ3NjYsLTAuODE2NDEgbCAwLjI0NjA5LC02LjQxMjEgQSAwLjg1MDA5LDAuODUwMDkgMCAwIDAgLTEuNDM5NzcsODAuMTY4IFogbSAwLjg4MjgxLDEuNjk5MiBoIDEwLjU1MyBsIC0wLjE4MTY0LDQuNzEwOSBoIC0xMC4xODkgeiIKICAgICAgICAgICBjb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBjb2xvci1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNoYXBlLXJlbmRlcmluZz0iYXV0byIKICAgICAgICAgICBzb2xpZC1jb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0eWxlPSJmb250LXZhcmlhbnQtbGlnYXR1cmVzOm5vcm1hbDtmb250LXZhcmlhbnQtcG9zaXRpb246bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LWFsdGVybmF0ZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1lYXN0LWFzaWFuOm5vcm1hbDtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDt0ZXh0LWluZGVudDowO3RleHQtZGVjb3JhdGlvbi1saW5lOm5vbmU7dGV4dC1kZWNvcmF0aW9uLXN0eWxlOnNvbGlkO3RleHQtZGVjb3JhdGlvbi1jb2xvcjojMDAwMDAwO3RleHQtdHJhbnNmb3JtOm5vbmU7dGV4dC1vcmllbnRhdGlvbjptaXhlZDt3aGl0ZS1zcGFjZTpub3JtYWw7c2hhcGUtcGFkZGluZzowO3NoYXBlLW1hcmdpbjowO2lubGluZS1zaXplOjA7aXNvbGF0aW9uOmF1dG87bWl4LWJsZW5kLW1vZGU6bm9ybWFsIgogICAgICAgICAgIGlkPSJwYXRoMjUxMCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gLTcuNjMwNSw3Ny4wNTcgdiAwLjAwMTkgYyAtMS4yNzE1LC0wLjAwMTEgLTIuMTQ4LDAuNDQ2MjIgLTIuMzAwMSwwLjYwNTk5IC0wLjA5NDA4MSwwLjI1NTYxIC0wLjE0NDI2LDIuNzc5OSAtMC4xNDQyNiwyLjc3OTkgbCAyLjQ0NzYsMC4xNTc5NiB2IDAuMDAzOCBsIDAuMDMwMjY1LC0wLjAwMjEgMC4wMzAyNjUsMC4wMDIxIHYgLTAuMDAzOCBsIDIuNDQ3MiwtMC4xNTc5NiBjIDAsMCAtMC4wNDk3NzUsLTIuNTI0MyAtMC4xNDM4NiwtMi43Nzk5IC0wLjE1MjA2LC0wLjE1OTc2IC0xLjAyODYsLTAuNjA3MDIgLTIuMzAwMSwtMC42MDU5OCB2IC0wLjAwMTkgYyAtMC4wMTE2MjksLTEuNTllLTQgLTAuMDIxOTM4LDEwZS00IC0wLjAzMzQ5Nyw5LjM3ZS00IC0wLjAxMTU3NSw4LjRlLTUgLTAuMDIxODYsLTAuMDAxMSAtMC4wMzM0OTcsLTkuMzdlLTQgeiIKICAgICAgICAgICBpZD0icGF0aDI1MTIiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC03Ljc2OTYsODQuMzY4IHYgMC4wMTU1MSBjIC0yLjgwOTYsMC4yMjQyIC05LjIyOTksMy4wNzUzIC05LjIyOTksMy4wNzUzIDAuMzg3OSwxLjQ0NzcgMS4wMDc4LDMuMTYxMiAxLjQzNzEsNC4zMDA1IDAuMjgwOTQsLTAuMDk1MTYgMC41MjU0NywtMC4xOTQ1MSAwLjczNDMyLC0wLjI5MjQ5IDAuODUyOTEsLTAuNDAwMTIgMS4wNjA0LC0wLjY3OCAxLjA2MDQsLTAuNjc4IGwgMC42NjE5OCwtMC43Njk0NiAwLjc2MDE2LDAuNjczODYgYyAwLDAgMS43OTMyLDEuNjA3MSA0LjgxOTksMS42MDcxIDMuMDI2NywwIDUuMDI3NiwtMS42MzI1IDUuMDI3NiwtMS42MzI1IGwgMC41NzA1MSwtMC40NjcxNSAwLjYxNDk1LDAuNDA2NjkgYyAwLDAgMC43MTExOCwwLjQ1NTQ0IDEuODA2NiwwLjg5NCAwLjQxMTA2LC0xLjEzOTEgMC45NTI4MSwtMi43MDU3IDEuMzExLC00LjA0MjYgMCwwIC02LjQyMDEsLTIuODUxMyAtOS4yMjk5LC0zLjA3NTMgdiAtMC4wMTU1IGMgLTAuMDU3NTU4LDAgLTAuMTE0NjIsMC4wMDM0IC0wLjE3MjA4LDAuMDA1NyAtMC4wNTc1MTYsLTAuMDAyNCAtMC4xMTQ5OSwtMC4wMDU3IC0wLjE3MjYsLTAuMDA1NyB6IgogICAgICAgICAgIGlkPSJwYXRoMjUxNCIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gLTcuNzY5Niw4NC4zNjggdiAwLjAxNTUxIGMgLTIuODA5NiwwLjIyNDIgLTkuMjI5OSwzLjA3NTMgLTkuMjI5OSwzLjA3NTMgMC4zODc5LDEuNDQ3NyAyLjI1MzYsNy4wNDAzIDIuNjgzLDguMTc5NiA0LjcyMjUsLTEuNTMyIDkuMDU0MSwtMi4yMTQ0IDEzLjc4OSwtMC4yOTIyNCAwLjQxMTA2LC0xLjEzOTEgMS45NzQ3LC02LjU1MDUgMi4zMzI5LC03Ljg4NzQgMCwwIC02LjQyMDEsLTIuODUxMyAtOS4yMjk5LC0zLjA3NTMgdiAtMC4wMTU1IGMgLTAuMDU3NTU4LDAgLTAuMTE0NjIsMC4wMDM0IC0wLjE3MjA4LDAuMDA1NyAtMC4wNTc1MTYsLTAuMDAyNCAtMC4xMTQ5OSwtMC4wMDU3IC0wLjE3MjYsLTAuMDA1NyB6IgogICAgICAgICAgIGlkPSJwYXRoMjUxNiIgLz4KICAgICAgPC9nPgogICAgICA8ZwogICAgICAgICBzaGFwZS1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgIGlkPSJnMjUyNiI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC0yLjgyODQsOTEuODE2IGMgLTIuODA2NCwyLjUxMjcgLTcuMTA1MywyLjEyMDUgLTkuNzEyOSwwLjAxOTUzIGwgLTAuNzUzOTEsMC40OTYwOSBjIDAsMCAtMi40OTQ3LDEuNSAtNC4zMjYyLDEuNSB2IDEwLjMzOCBjIDIuMzc3LDAgNC4xODk0LC0xLjAzNzEgNC45NjQ4LC0xLjUxOTUgMC43Nzk3NCwwLjUyOTA1IDIuMzEzNiwxLjQzMDggNC45NjI5LDEuNTE3NiAyLjcwNjUsMC4wODg2IDQuMjc0LC0wLjkwNzM5IDUuMDc0MiwtMS41MDU5IDAuNzkxOTEsMC40ODA3OCAyLjYyNTYsMS41MDc4IDQuOTMzNiwxLjUwNzggdiAtMTAuMzM4IGMgLTEuNjk1NywwIC00LjM0NTcsLTEuNTEzNyAtNC4zNDU3LC0xLjUxMzcgeiIKICAgICAgICAgICBjb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBjb2xvci1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgZG9taW5hbnQtYmFzZWxpbmU9ImF1dG8iCiAgICAgICAgICAgZmlsbD0iIzdjOGZhNCIKICAgICAgICAgICBpbWFnZS1yZW5kZXJpbmc9ImF1dG8iCiAgICAgICAgICAgc29saWQtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3RvcC1jb2xvcj0iIzAwMDAwMCIKICAgICAgICAgICBzdHlsZT0iZm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LXBvc2l0aW9uOm5vcm1hbDtmb250LXZhcmlhbnQtY2Fwczpub3JtYWw7Zm9udC12YXJpYW50LW51bWVyaWM6bm9ybWFsO2ZvbnQtdmFyaWFudC1hbHRlcm5hdGVzOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7Zm9udC1mZWF0dXJlLXNldHRpbmdzOm5vcm1hbDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczpub3JtYWw7dGV4dC1pbmRlbnQ6MDt0ZXh0LWRlY29yYXRpb24tbGluZTpub25lO3RleHQtZGVjb3JhdGlvbi1zdHlsZTpzb2xpZDt0ZXh0LWRlY29yYXRpb24tY29sb3I6IzAwMDAwMDt0ZXh0LXRyYW5zZm9ybTpub25lO3RleHQtb3JpZW50YXRpb246bWl4ZWQ7d2hpdGUtc3BhY2U6bm9ybWFsO3NoYXBlLXBhZGRpbmc6MDtzaGFwZS1tYXJnaW46MDtpbmxpbmUtc2l6ZTowO2lzb2xhdGlvbjphdXRvO21peC1ibGVuZC1tb2RlOm5vcm1hbCIKICAgICAgICAgICBpZD0icGF0aDI1MjAiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIC0yLjkxMDIsOTMuNTc2IC0wLjU2NDQ1LDAuNTQ2ODggYyAwLDAgLTEuNTI3MywxLjUwNTQgLTQuMjU1OSwxLjQxNiAtMi43OTgxLC0wLjA5MTY0IC00LjM2NTIsLTEuNDU3IC00LjM2NTIsLTEuNDU3IGwgLTAuNTcwMzEsLTAuNDkwMjMgLTAuNjI4OTEsMC40MTQwNiBjIDAsMCAtMi41MDk3LDEuNTMzMiAtNC40MzU1LDEuNTMzMiB2IDIgYyAyLjM4ODMsMCA0LjI4MDksLTEuMTE2NCA0Ljk2NjgsLTEuNTQ4OCAwLjY4NDQ4LDAuNDgyNDggMi4yNDI4LDEuNDU3NiA0Ljk2ODgsMS41NDY5IDIuNzczNCwwLjA5MDgzIDQuMzU2MywtMC45OTE1NCA1LjA1ODYsLTEuNTM5MSAwLjcwMDkyLDAuNDMwNDMgMi42MjU2LDEuNTQxIDQuOTQxNCwxLjU0MSB2IC0yIGMgLTEuNzk0NiwwIC00LjQ1MTIsLTEuNTQzIC00LjQ1MTIsLTEuNTQzIHoiCiAgICAgICAgICAgY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgY29sb3ItcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIgogICAgICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNvbGlkLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0b3AtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3doaXRlLXNwYWNlOm5vcm1hbDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiCiAgICAgICAgICAgaWQ9InBhdGgyNTIyIiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICAgZD0ibSAtMi45MTAyLDk4LjA3NCBjIC0xLjMyMjUsMS4yNzg3IC0zLjcwOTQsMS42MTc5IC00LjgyMDMsMS41OTkxIC0xLjc3MjMsLTAuMDY4NjEgLTMuNTc1MiwtMC40MTQxNCAtNC45MzU1LC0xLjU4MzUgLTEuNTM5LDAuODg0ODYgLTMuNTI2MSwxLjM4OTggLTUuMDY0NSwxLjQxODEgdiAyIGMgMi4zODgzLDAgNC4yODA5LC0wLjU4NzE3IDQuOTY2OCwtMS4wMTk2IDAuNjg0NDgsMC40ODI0NyAyLjI0MjgsMS4wOTM4IDQuOTY4OCwxLjE4MyAyLjc3MzQsMC4wOTA4IDQuMzU2MywtMC42Mjc3MyA1LjA1ODYsLTEuMTc1MiAwLjcwMDkyLDAuNDMwNDIgMi42MjU2LDEuMDExOCA0Ljk0MTQsMS4wMTE4IHYgLTIgQyAwLjQ0MjgsOTkuMzczNiAtMS4zOTk0LDk5LjAyOTI4IC0yLjkxMDEsOTguMDc0IFoiCiAgICAgICAgICAgY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgY29sb3ItcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIGRvbWluYW50LWJhc2VsaW5lPSJhdXRvIgogICAgICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgICAgaW1hZ2UtcmVuZGVyaW5nPSJhdXRvIgogICAgICAgICAgIHNvbGlkLWNvbG9yPSIjMDAwMDAwIgogICAgICAgICAgIHN0b3AtY29sb3I9IiMwMDAwMDAiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1wb3NpdGlvbjpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtYWx0ZXJuYXRlczpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO3RleHQtaW5kZW50OjA7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bm9uZTt0ZXh0LWRlY29yYXRpb24tc3R5bGU6c29saWQ7dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiMwMDAwMDA7dGV4dC10cmFuc2Zvcm06bm9uZTt0ZXh0LW9yaWVudGF0aW9uOm1peGVkO3doaXRlLXNwYWNlOm5vcm1hbDtzaGFwZS1wYWRkaW5nOjA7c2hhcGUtbWFyZ2luOjA7aW5saW5lLXNpemU6MDtpc29sYXRpb246YXV0bzttaXgtYmxlbmQtbW9kZTpub3JtYWwiCiAgICAgICAgICAgaWQ9InBhdGgyNTI0IiAvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K + mediatype: image/svg+xml + install: + spec: + deployments: null + strategy: "" + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - build + - cicd + - shipwright + - tekton + links: + - name: Documentation + url: https://shipwright.io + - name: Shipwright Builds + url: https://github.com/shipwright-io/build + maintainers: + - email: shipwright-dev@lists.shipwright.io + name: The Shipwright Contributors + maturity: alpha + minKubeVersion: 1.24.0 + provider: + name: The Shipwright Contributors + url: https://shipwright.io + version: 0.0.0