diff --git a/.vale/styles/config/vocabularies/konflux/accept.txt b/.vale/styles/config/vocabularies/konflux/accept.txt index 1b1a3906..acfc2991 100644 --- a/.vale/styles/config/vocabularies/konflux/accept.txt +++ b/.vale/styles/config/vocabularies/konflux/accept.txt @@ -5,3 +5,4 @@ Snyk Konflux kubectl ITSs +Node.JS diff --git a/modules/ROOT/pages/getting-started.adoc b/modules/ROOT/pages/getting-started.adoc index 461e33bd..c7f5b8c7 100644 --- a/modules/ROOT/pages/getting-started.adoc +++ b/modules/ROOT/pages/getting-started.adoc @@ -40,31 +40,6 @@ This initiative contains an link:https://github.com/opencontainers/image-spec[im Konflux pushes artifacts that you build in your tenant namespace to an OCI registry along with their supporting metadata (including xref:metadata:index.adoc[SLSA provenance attestations and SBOMs]). -=== Custom Resources -In Kubernetes, a link:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/[Custom Resource (CR)] is an extension of the Kubernetes API. - -All Konflux APIs are Kubernetes CRs. -If you're familiar with common Kubernetes resources such as Pods and Deployments, you'll find that Konflux resources appear on the cluster in the same way: - -- Applications -- Components -- Snapshots -- PipelineRuns - -This setup enables commonplace Kubernetes client tools, such as link:https://kubernetes.io/docs/reference/kubectl/[kubectl], to understand and interact with {ProductName} APIs. - -=== Component -A *Component CR* describes the properties of an OCI artifact. -These properties include the following: - -- The Git repository from which the artifact originates. -- The latest built commit. -- Initial build configuration parameters. -- Relationships to other components. - -The CR also contains a reference to the single application that owns it. -Component names are unique in a namespace, even when you use the components in different applications. - === Build Pipeline When you create a component in {ProductName}, the system pushes a build pipeline to the Git repository in the `.tekton` directory and installs a webhook. @@ -88,49 +63,66 @@ The test process includes Tekton Tasks such as: {ProductName} inherits the pattern of defining Tekton build pipelines in Git from its use of https://pipelinesascode.com/[Pipelines as Code (PaC)]. PaC enables you to use a Tekton PipelineDefinition within your Git repository, and for the system to trigger that pipeline whenever a team member submits a new commit or pull request to the repository. -=== Application -An *Application CR* owns multiple components. -It helps to logically group components in the UI. +=== Custom Resources +In Kubernetes, a link:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/[Custom Resource (CR)] is an extension of the Kubernetes API. + +All Konflux APIs are Kubernetes CRs. This setup enables commonplace Kubernetes client tools, such as link:https://kubernetes.io/docs/reference/kubectl/[kubectl], to understand and interact with {ProductName} APIs. If you're familiar with common Kubernetes resources such as Pods and Deployments, you'll find that Konflux resources appear on the cluster in the same way: + +==== Component +A xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-component[Component CR] describes the properties of an OCI artifact. +These properties include the following: + +- The Git repository from which the artifact originates. +- The latest built commit. +- Initial build configuration parameters. +- Relationships to other components. + +The CR also contains a reference to the single application that owns it. +Component names are unique in a namespace, even when you use the components in different applications. + +==== Application +An xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-application[Application CR] owns multiple components. It helps to logically group components in the UI. When a new component's build pipeline is complete, the Integration Service, which contains the latest Git and OCI references, creates a new snapshot from each of the Component CRs, as well as the just-produced component artifact. The IntegrationTestScenarios use this output to run. -=== Snapshot -A *Snapshot CR* is an immutable set of component references. +==== Snapshot +A xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-snapshot[Snapshot CR] is an immutable set of component references. It can be created from push or pull request events. A snapshot defines a set of components, which are either tested or released together. Over time, as you produce more builds, your tenant namespace will contain many snapshots. Understand that at any point in time, a given snapshot _might not necessarily_ represent the latest built artifacts for all components in your tenant namespace. -=== IntegrationTestScenario -An *IntegrationTestScenario (ITS) CR* is a Tekton Pipeline that defines a test to run against an entire snapshot. +==== IntegrationTestScenario +An xref:reference:kube-apis/integration-service.adoc#k8s-api-github-com-konflux-ci-integration-service-api-v1alpha1-integrationtestscenario[IntegrationTestScenario (ITS) CR] is a Tekton Pipeline that defines a test to run against an entire snapshot. The Integration Service runs all configured ITSs for the snapshot's application. The system also creates a default ITS for every new application to enable EnterpriseContractPolicy checks on all components. You can configure each ITS as optional for release. All non-optional tests must pass before the new component build is "promoted" to update the references on the component CR. -=== EnterpriseContractPolicy +==== EnterpriseContractPolicy Building in {ProductName} follows a "build once, release multiple times" mentality, where each release can have separate requirements on the builds before allowing the action. -You codify these build requirements in an EnterpriseContractPolicy (ECP). +You codify these build requirements in an xref:reference:kube-apis/enterprise-contract.adoc#k8s-api-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[EnterpriseContractPolicy CR]. When {ProductName} evaluates an ECP against a snapshot, it returns a single result based on the highest violation. For example, if all components pass the policy requirements, the policy evaluation is true. If a single component in a snapshot fails the policy, however, the overall result is a failure even if all of the rest have clean passes. -=== ReleasePlan -A *ReleasePlan (RP) CR* maps an Application you want to release with a release action. +==== ReleasePlan +A xref:reference:kube-apis/release-service.adoc#k8s-api-github-com-konflux-ci-release-service-api-v1alpha1-releaseplan[ReleasePlan (RP) CR] maps an Application you want to release to a release action. It defines the process to release future Snapshots of your Application in the managed namespace. It also determines whether automatic releases are enabled and whether you want to provide additional data to each future release pipeline. -=== ReleasePlanAdmission -You also need to create a *ReleasePlanAdmission (RPA) CR* in the managed namespace. +==== ReleasePlanAdmission +You also need to create a xref:reference:kube-apis/release-service.adoc#k8s-api-github-com-konflux-ci-release-service-api-v1alpha1-releaseplanadmission[ReleasePlanAdmission (RPA) CR] in the managed namespace. It defines the specific pipeline to run and a given ECP, which must pass for each snapshot before that pipeline can proceed. It also establishes essential details about the delivery of your content that we want to exercise some control over. + For example, if your release pipeline uses an link:https://Github.com/konflux-ci/release-service-catalog/blob/production/tasks/managed/apply-mapping/apply-mapping.yaml[apply-mapping] task, the `.spec.data.mapping.components` section of this resource will define which destination repositories to push your content to. -=== Release -Every time you want to release newly built artifacts, you will create a Release CR in *your* tenant namespace. +==== Release +Every time you want to release newly built artifacts, you will create a xref:reference:kube-apis/release-service.adoc#k8s-api-github-com-konflux-ci-release-service-api-v1alpha1-release[Release CR] in *your* tenant namespace. The Release CR represents your intent to release some content to customers. It is an active resource that, when present, will initiate the push of content. diff --git a/modules/building/pages/configuration-as-code.adoc b/modules/building/pages/configuration-as-code.adoc index 9618f234..7e2a4471 100644 --- a/modules/building/pages/configuration-as-code.adoc +++ b/modules/building/pages/configuration-as-code.adoc @@ -103,7 +103,7 @@ And its Kustomization file at `overlay/application-a/application-a-base/kustomiz ---- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization - + resources: - application.yaml ---- @@ -140,7 +140,7 @@ Define these components as folders in `overlay/application-a/base`. Each folder ---- apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization - + resources: - ../../../../base # Path to base component diff --git a/modules/building/pages/creating.adoc b/modules/building/pages/creating.adoc index 46569bba..50b097d7 100644 --- a/modules/building/pages/creating.adoc +++ b/modules/building/pages/creating.adoc @@ -95,9 +95,9 @@ $ kubectl apply -f Application.yaml -f Component.yaml -f ImageRepository.yaml ---- + -NOTE: You can create additional components and applications with the same file locally by adding additional custom resource configurations. +NOTE: You can create additional components and applications with the same file locally by adding additional custom resource configurations. -. Now, you can trigger your application’s first build pipeline. In the git repository for your application, using your preferred text editor, open a pull request against the `/.tekton/pull-request.yaml` file. +. Now, you can trigger your application’s first build pipeline. In the git repository for your application, using your preferred text editor, open a pull request against the `/.tekton/pull-request.yaml` file. .. Specifically, replace any existing value for the `git-url` field with the git URL for your application’s repository. (This is the URL you would use to clone the repository locally; it ends with `.git`.) + diff --git a/modules/reference/nav.adoc b/modules/reference/nav.adoc index d1aee011..6c4aa2e1 100644 --- a/modules/reference/nav.adoc +++ b/modules/reference/nav.adoc @@ -4,7 +4,7 @@ *** xref:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-application[Application] *** xref:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-component[Component] *** xref:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-snapshot[Snapshot] -*** xref:kube-apis/conforma.adoc#k8s-api-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[EnterpriseContractPolicy] +*** xref:kube-apis/enterprise-contract.adoc#k8s-api-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[EnterpriseContractPolicy] *** xref:kube-apis/image-controller.adoc#k8s-api-github-com-konflux-ci-image-controller-api-v1alpha1-imagerepository[ImageRepository] *** xref:kube-apis/integration-service.adoc#k8s-api-github-com-konflux-ci-integration-service-api-v1alpha1-integrationtestscenario[IntegrationTestScenario] *** xref:kube-apis/release-service.adoc#k8s-api-github-com-konflux-ci-release-service-api-v1alpha1-release[Release] diff --git a/modules/reference/pages/kube-apis/application-api.adoc b/modules/reference/pages/kube-apis/application-api.adoc index b531a1de..6ba4d664 100644 --- a/modules/reference/pages/kube-apis/application-api.adoc +++ b/modules/reference/pages/kube-apis/application-api.adoc @@ -30,7 +30,7 @@ Package v1alpha1 contains API Schema definitions for the appstudio v1alpha1 API -Application is the Schema for the applications API. For description, refer to xref:kube-apis/application-api.adoc[Application API Reference] Hybrid Application Service Kube API +Application is the Schema for the applications API. For description, refer to Hybrid Application Service Kube API @@ -45,9 +45,9 @@ Application is the Schema for the applications API. For description, refer to xr | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `Application` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationspec[$$ApplicationSpec$$]__ | | | -| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationstatus[$$ApplicationStatus$$]__ | | | + | | +| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationspec[$$ApplicationSpec$$]__ | | | +| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationstatus[$$ApplicationStatus$$]__ | | | |=== @@ -71,13 +71,13 @@ ApplicationGitRepository defines a git repository for a given Application resour | *`url`* __string__ | URL refers to the repository URL that should be used. If not specified, a GitOps repository under the + $GITHUB_ORG (defaults to redhat-appstudio-appdata) organization on GitHub will be generated by HAS. + Example: https://github.com/devfile-test/myrepo. + -Required. + | | +Required. + | | | *`branch`* __string__ | Branch corresponds to the branch in the repository that should be used + Example: devel. + -Optional. + | | +Optional. + | | | *`context`* __string__ | Context corresponds to the context within the repository that should be used + Example: folderA/folderB/gitops. + -Optional. + | | +Optional. + | | |=== @@ -98,8 +98,8 @@ ApplicationList contains a list of Application | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `ApplicationList` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta[$$ListMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-application[$$Application$$] array__ | | | + | | +| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-application[$$Application$$] array__ | | | |=== @@ -121,17 +121,17 @@ ApplicationSpec defines the desired state of Application |=== | Field | Description | Default | Validation | *`displayName`* __string__ | DisplayName refers to the name that an application will be deployed with in App Studio. + -Required. + | | +Required. + | | | *`appModelRepository`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationgitrepository[$$ApplicationGitRepository$$]__ | AppModelRepository refers to the git repository that will store the application model (a devfile) + Can be the same as GitOps repository. + A repository will be generated if this field is left blank. + -Optional. + | | +Optional. + | | | *`gitOpsRepository`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-applicationgitrepository[$$ApplicationGitRepository$$]__ | GitOpsRepository refers to the git repository that will store the gitops resources. + Can be the same as App Model Repository. + A repository will be generated if this field is left blank. + -Optional. + | | +Optional. + | | | *`description`* __string__ | Description refers to a brief description of the application. + -Optional. + | | +Optional. + | | |=== @@ -152,8 +152,8 @@ ApplicationStatus defines the observed state of Application [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the Application's status conditions + | | -| *`devfile`* __string__ | Devfile corresponds to the devfile representation of the Application resource + | | +| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the Application's status conditions + | | +| *`devfile`* __string__ | Devfile corresponds to the devfile representation of the Application resource + | | |=== @@ -162,7 +162,7 @@ ApplicationStatus defines the observed state of Application -Component is the Schema for the components API. For description, refer to xref:kube-apis/application-api.adoc[Application API Reference] Hybrid Application Service Kube API +Component is the Schema for the components API. For description, refer to Hybrid Application Service Kube API @@ -177,9 +177,98 @@ Component is the Schema for the components API. For description, refer to xref:k | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `Component` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$]__ | | | -| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentstatus[$$ComponentStatus$$]__ | | | + | | +| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$]__ | | | +| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentstatus[$$ComponentStatus$$]__ | | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentactions"] +==== ComponentActions + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`create-pipeline-configuration-pr`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentcreatepipelineconfiguration[$$ComponentCreatePipelineConfiguration$$]__ | Send a PR with build pipeline configuration proposal for Component version(s). + +If not set, version onboarding will be done without pipeline configuration PR. + +Could be used after onboarding to create / renew build pipeline definition. + +Optional. + | | +| *`trigger-push-build`* __string__ | Specify name of component version to restart the push build for. + +Can be specified together with 'trigger-push-builds' and any duplicates will be removed. + +Optional. + | | +| *`trigger-push-builds`* __string array__ | Specify names of component versions to restart the push build for. + +Can be specified together with 'trigger-push-build' and any duplicates will be removed. + +Optional. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentbuildpipeline"] +==== ComponentBuildPipeline + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$] +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversion[$$ComponentVersion$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`pull-and-push`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition[$$PipelineDefinition$$]__ | Pipeline used for pull and push pipeline runs. + +Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. + +Optional. + | | +| *`pull`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition[$$PipelineDefinition$$]__ | Pipeline used for pull pipeline run. + +Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. + +Optional. + | | +| *`push`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition[$$PipelineDefinition$$]__ | Pipeline used for push pipeline run. + +Can specify just one of: pipelinespec-from-bundle, pipelineref-by-name, pipelineref-by-git-resolver. + +Optional. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentcreatepipelineconfiguration"] +==== ComponentCreatePipelineConfiguration + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentactions[$$ComponentActions$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`all-versions`* __boolean__ | When specified it will send a PR with build pipeline configuration proposal for all Component versions. + +Has precedence over 'version' and 'versions'. + +Optional. + | | +| *`version`* __string__ | When specified it will send a PR with build pipeline configuration proposal for the Component version. + +Can be specified together with 'versions' and any duplicates will be removed. + +Optional. + | | +| *`versions`* __string array__ | When specified it will send a PR with build pipeline configuration proposal for Component versions. + +Can be specified together with 'version' and any duplicates will be removed. + +Optional. + | | |=== @@ -200,12 +289,12 @@ ComponentDetectionDescription holds all the information about the component bein [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`devfileFound`* __boolean__ | DevfileFound tells if a devfile is found in the component + | | +| *`devfileFound`* __boolean__ | DevfileFound tells if a devfile is found in the component + | | | *`language`* __string__ | Language specifies the language of the component detected + -Example: JavaScript + | | +Example: JavaScript + | | | *`projectType`* __string__ | ProjectType specifies the type of project for the component detected + -Example Node.JS + | | -| *`componentStub`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$]__ | ComponentStub is a stub of the component detected with all the info gathered from the devfile or service detection + | | +Example Node.JS + | | +| *`componentStub`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$]__ | ComponentStub is a stub of the component detected with all the info gathered from the devfile or service detection + | | |=== @@ -230,7 +319,7 @@ ComponentDetectionMap is a map containing all the components and their detected -ComponentDetectionQuery is the Schema for the componentdetectionqueries API. For description, refer to xref:kube-apis/application-api.adoc[Application API Reference] Hybrid Application Service Kube API +ComponentDetectionQuery is the Schema for the componentdetectionqueries API. For description, refer to Hybrid Application Service Kube API @@ -245,9 +334,9 @@ ComponentDetectionQuery is the Schema for the componentdetectionqueries API. For | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `ComponentDetectionQuery` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionqueryspec[$$ComponentDetectionQuerySpec$$]__ | | | -| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionquerystatus[$$ComponentDetectionQueryStatus$$]__ | | | + | | +| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionqueryspec[$$ComponentDetectionQuerySpec$$]__ | | | +| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionquerystatus[$$ComponentDetectionQueryStatus$$]__ | | | |=== @@ -268,8 +357,8 @@ ComponentDetectionQueryList contains a list of ComponentDetectionQuery | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `ComponentDetectionQueryList` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta[$$ListMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionquery[$$ComponentDetectionQuery$$] array__ | | | + | | +| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionquery[$$ComponentDetectionQuery$$] array__ | | | |=== @@ -291,13 +380,13 @@ ComponentDetectionQuerySpec defines the desired state of ComponentDetectionQuery |=== | Field | Description | Default | Validation | *`git`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-gitsource[$$GitSource$$]__ | Git Source for a Component. + -Required. + | | +Required. + | | | *`secret`* __string__ | Secret describes the name of an optional Kubernetes secret containing a Personal Access Token to access the git repostiory. + -Optional. + | | +Optional. + | | | *`generateComponentName`* __boolean__ | It defines if should generate random characters at the end of the component name instead of a predicted default value + The default value is false. + If the value is set to true, component name will always have random characters appended + -Optional. + | | +Optional. + | | |=== @@ -318,8 +407,8 @@ ComponentDetectionQueryStatus defines the observed state of ComponentDetectionQu [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the ComponentDetectionQuery's status conditions + | | -| *`componentDetected`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionmap[$$ComponentDetectionMap$$]__ | ComponentDetected gives a list of components and the info from detection + | | +| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the ComponentDetectionQuery's status conditions + | | +| *`componentDetected`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentdetectionmap[$$ComponentDetectionMap$$]__ | ComponentDetected gives a list of components and the info from detection + | | |=== @@ -340,8 +429,8 @@ ComponentList contains a list of Component | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `ComponentList` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta[$$ListMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-component[$$Component$$] array__ | | | + | | +| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-component[$$Component$$] array__ | | | |=== @@ -364,7 +453,18 @@ ComponentSource describes the Component source |=== | Field | Description | Default | Validation | *`git`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-gitsource[$$GitSource$$]__ | Git Source for a Component. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | +| *`url`* __string__ | Git repository URL for the component. + +Optional. + +!!! Will be required when we remove old model + | | +| *`dockerfileUri`* __string__ | Dockerfile path for all versions, unless explicitly specified for a version. + +Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Default: "Dockerfile" + +Optional. + | | +| *`versions`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversion[$$ComponentVersion$$] array__ | List of all versions for this component. + +Optional. + +!!! Will be required when we remove old model + | | |=== @@ -386,7 +486,18 @@ Optional. + | | |=== | Field | Description | Default | Validation | *`git`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-gitsource[$$GitSource$$]__ | Git Source for a Component. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | +| *`url`* __string__ | Git repository URL for the component. + +Optional. + +!!! Will be required when we remove old model + | | +| *`dockerfileUri`* __string__ | Dockerfile path for all versions, unless explicitly specified for a version. + +Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Default: "Dockerfile" + +Optional. + | | +| *`versions`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversion[$$ComponentVersion$$] array__ | List of all versions for this component. + +Optional. + +!!! Will be required when we remove old model + | | |=== @@ -409,40 +520,60 @@ ComponentSpec defines the desired state of Component |=== | Field | Description | Default | Validation | *`componentName`* __string__ | ComponentName is name of the component to be added to the Application. The name must adhere to DNS-1123 validation. + -Required. + | | MaxLength: 63 + +Optional. + +!!! Will be removed when we remove old model + | | MaxLength: 63 + Pattern: `^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` + | *`application`* __string__ | Application is the name of the application resource that the component belongs to. + -Required. + | | Pattern: `^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` + +Optional. + +!!! Will be removed when we remove old model + | | Pattern: `^[a-z0-9]([-a-z0-9]*[a-z0-9])?$` + | *`secret`* __string__ | Secret describes the name of a Kubernetes secret containing either: + 1. A Personal Access Token to access the Component's git repostiory (if using a Git-source component) or + 2. An Image Pull Secret to access the Component's container image (if using an Image-source component). + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | | *`source`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentsource[$$ComponentSource$$]__ | Source describes the Component source. + -Optional. + | | +Required. + | | | *`resources`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#resourcerequirements-v1-core[$$ResourceRequirements$$]__ | Compute Resources required by this component. + -Optional. + | | +Optional. + | | | *`replicas`* __integer__ | The number of replicas to deploy the component with. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | | *`targetPort`* __integer__ | The port to expose the component over. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | | *`route`* __string__ | The route to expose the component with. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | | *`env`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#envvar-v1-core[$$EnvVar$$] array__ | An array of environment variables to add to the component (ValueFrom not currently supported) + -Optional + | | -| *`containerImage`* __string__ | The container image to build or create the component from + -Example: quay.io/someorg/somerepository:latest. + -Optional. + | | +Optional + | | +| *`containerImage`* __string__ | The container image repository to use for this component (without tag). + +Either will be set by Image Repository, or explicitly specified with custom repo. + +All versions of this component will use this single image repository. + +Example: quay.io/org/tenant/component + +Optional. + | | | *`skipGitOpsResourceGeneration`* __boolean__ | Whether or not to bypass the generation of GitOps resources for the Component. Defaults to false. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | | *`build-nudges-ref`* __string array__ | The list of components to be nudged by this components build upon a successful result. + -Optional. + | | +Optional. + +!!! Will be removed when we remove old model + | | +| *`actions`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentactions[$$ComponentActions$$]__ | Specific actions that will be processed by the controller and then removed from 'spec.actions'. + +Used for triggering builds or creating pipeline configuration PRs. + +Optional. + | | +| *`skip-offboarding-pr`* __boolean__ | When 'true', during offboarding a cleaning PR won't be created. + +Default: false. + +Optional. + | | +| *`repository-settings`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-repositorysettings[$$RepositorySettings$$]__ | Used for setting additional settings for the Repository CR. + +Optional. + | | +| *`default-build-pipeline`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentbuildpipeline[$$ComponentBuildPipeline$$]__ | Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Pipeline used for all versions, unless explicitly specified for a specific version. + +When omitted it has to be specified in all versions. + +Optional. + | | |=== - - [id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentstatus"] ==== ComponentStatus @@ -460,16 +591,100 @@ ComponentStatus defines the observed state of Component [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the Component's status conditions + | | -| *`webhook`* __string__ | Webhook URL generated by Builds + | | -| *`containerImage`* __string__ | ContainerImage stores the associated built container image for the component + | | -| *`devfile`* __string__ | The devfile model for the Component CR + | | -| *`gitops`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-gitopsstatus[$$GitOpsStatus$$]__ | GitOps specific status for the Component CR + | | +| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions is an array of the Component's status conditions + | | +| *`webhook`* __string__ | Webhook URL generated by Builds + +!!! Will be removed when we remove old model + | | +| *`containerImage`* __string__ | ContainerImage stores the associated built container image for the component + | | +| *`devfile`* __string__ | The devfile model for the Component CR + +!!! Will be removed when we remove old model + | | +| *`gitops`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-gitopsstatus[$$GitOpsStatus$$]__ | GitOps specific status for the Component CR + +!!! Will be removed when we remove old model + | | | *`lastBuiltCommit`* __string__ | The last built commit id (SHA-1 checksum) from the latest component build. + -Example: 41fbdb124775323f58fd5ce93c70bb7d79c20650. + | | +Example: 41fbdb124775323f58fd5ce93c70bb7d79c20650. + +!!! Will be removed when we remove old model SHOULD this be in version specific section?? + | | | *`lastPromotedImage`* __string__ | The last digest image component promoted with. + -Example: quay.io/someorg/somerepository@sha256:5ca85b7f7b9da18a9c4101e81ee1d9bac35ac2b0b0221908ff7389204660a262. + | | -| *`build-nudged-by`* __string array__ | The list of names of Components whose builds nudge this resource (their spec.build-nudges-ref[] references this component) + | | +Example: quay.io/someorg/somerepository@sha256:5ca85b7f7b9da18a9c4101e81ee1d9bac35ac2b0b0221908ff7389204660a262. + +!!! Will be removed when we remove old model SHOULD this be in version specific section?? + | | +| *`build-nudged-by`* __string array__ | The list of names of Components whose builds nudge this resource (their spec.build-nudges-ref[] references this component) + +!!! Will be removed when we remove old model + | | +| *`repository-settings`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-repositorysettings[$$RepositorySettings$$]__ | Identifies which additional settings are used for the Repository CR. + | | +| *`message`* __string__ | General error message, not specific to any version (version-specific errors are in versions[].message). + +Example: "Spec.ContainerImage is not set" or "GitHub App is not installed". + | | +| *`pac-repository`* __string__ | Name of Repository CR for the component. + | | +| *`versions`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversionstatus[$$ComponentVersionStatus$$] array__ | All versions which were processed by onboarding. + +When version is removed from the spec, offboarding will remove it from the status. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversion"] +==== ComponentVersion + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentsource[$$ComponentSource$$] +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentsourceunion[$$ComponentSourceUnion$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`build-pipeline`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentbuildpipeline[$$ComponentBuildPipeline$$]__ | Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Pipeline used for the version; when omitted, the default pipeline will be used from 'spec.default-build-pipeline'. + +Optional. + | | +| *`context`* __string__ | Context directory for the version. + +Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Default: "" (empty string, root of repository). + +Optional. + | | +| *`dockerfileUri`* __string__ | Dockerfile path for the version. + +Used only when sending a PR with build pipeline configuration was requested via 'spec.actions.create-pipeline-configuration-pr'. + +Default: "Dockerfile". + +Optional. + | | +| *`name`* __string__ | User defined name for the version. + +After sanitization (lower case, removing spaces, etc) all version names must be unique. + +Required. + | | +| *`revision`* __string__ | Git branch to use for the version. + +Required. + | | +| *`skip-builds`* __boolean__ | When 'true' it will disable builds for a revision in the version. + +Default: false. + +Optional. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentversionstatus"] +==== ComponentVersionStatus + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentstatus[$$ComponentStatus$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`configuration-merge-url`* __string__ | Link with onboarding PR if requested by 'spec.actions.create-pipeline-configuration-pr'. + +Only present if onboarding was successful. + +Example: https://github.com/user/repo/pull/1 + | | +| *`message`* __string__ | Version specific error message. + +Example: "pipeline for this version doesn't exist" + | | +| *`name`* __string__ | Name for the version. + | | +| *`onboarding-status`* __string__ | Onboarding status will be either 'succeeded' or 'failed' ('disabled' won't be there because we will just remove specific version section). + | | +| *`onboarding-time`* __string__ | Timestamp for when onboarding happened. + +Only present if onboarding was successful. + +Example: "29 May 2024 15:11:16 UTC" + | | +| *`revision`* __string__ | Git revision (branch) for the version. + | | +| *`skip-builds`* __boolean__ | Identifies that builds for the revision in the version are disabled. + | | |=== @@ -479,6 +694,7 @@ Example: quay.io/someorg/somerepository@sha256:5ca85b7f7b9da18a9c4101e81ee1d9bac GitOpsStatus contains GitOps repository-specific status for the component +!!! Will be removed when we remove old model @@ -490,11 +706,11 @@ GitOpsStatus contains GitOps repository-specific status for the component [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`repositoryURL`* __string__ | RepositoryURL is the gitops repository URL for the component + | | -| *`branch`* __string__ | Branch is the git branch used for the gitops repository + | | -| *`context`* __string__ | Context is the path within the gitops repository used for the gitops resources + | | -| *`resourceGenerationSkipped`* __boolean__ | ResourceGenerationSkipped is whether or not GitOps resource generation was skipped for the component + | | -| *`commitID`* __string__ | CommitID is the most recent commit ID in the GitOps repository for this component + | | +| *`repositoryURL`* __string__ | RepositoryURL is the gitops repository URL for the component + | | +| *`branch`* __string__ | Branch is the git branch used for the gitops repository + | | +| *`context`* __string__ | Context is the path within the gitops repository used for the gitops resources + | | +| *`resourceGenerationSkipped`* __boolean__ | ResourceGenerationSkipped is whether or not GitOps resource generation was skipped for the component + | | +| *`commitID`* __string__ | CommitID is the most recent commit ID in the GitOps repository for this component + | | |=== @@ -503,7 +719,7 @@ GitOpsStatus contains GitOps repository-specific status for the component - +!!! Will be removed when we remove old model @@ -517,18 +733,129 @@ GitOpsStatus contains GitOps repository-specific status for the component [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`url`* __string__ | An HTTPS URL representing the git repository to create the component from. + | | +| *`url`* __string__ | An HTTPS URL representing the git repository to create the component from. + | | | *`revision`* __string__ | Specify a branch/tag/commit id. If not specified, default is `main`/`master`. + Example: devel. + -Optional. + | | +Optional. + | | | *`context`* __string__ | A relative path inside the git repo containing the component + Example: folderA/folderB/gitops. + -Optional. + | | +Optional. + | | | *`devfileUrl`* __string__ | If specified, the devfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. + Example: https://raw.githubusercontent.com/devfile-samples/devfile-sample-java-springboot-basic/main/devfile.yaml. + -Optional. + | | +Optional. + | | | *`dockerfileUrl`* __string__ | If specified, the dockerfile at the URI will be used for the component. Can be a local path inside the repository, or an external URL. + -Optional. + | | +Optional. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition"] +==== PipelineDefinition + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentbuildpipeline[$$ComponentBuildPipeline$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`pipelineref-by-git-resolver`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinerefgit[$$PipelineRefGit$$]__ | Will be used to fill out PipelineRef in pipeline runs to user specific pipeline via git resolver, + +specifying repository with a pipeline definition. + +Optional. + | | +| *`pipelineref-by-name`* __string__ | Will be used to fill out PipelineRef in pipeline runs to user specific pipeline. + +Such pipeline definition has to be in .tekton. + +Optional. + | | +| *`pipelinespec-from-bundle`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinespecfrombundle[$$PipelineSpecFromBundle$$]__ | Will be used to fetch bundle and fill out PipelineSpec in pipeline runs. + +Pipeline name is based on build-pipeline-config CM in build-service NS. + +When 'latest' bundle is specified, bundle image will be used from CM. + +When bundle is specified to specific image bundle, then that one will be used + +and pipeline name will be used to fetch pipeline from that bundle. + +Optional. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinerefgit"] +==== PipelineRefGit + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition[$$PipelineDefinition$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`pathInRepo`* __string__ | Path to the pipeline definition file within the repository. + +Example: pipeline/push.yaml + +Required. + | | +| *`revision`* __string__ | Git revision (branch, tag, or commit) to use. + +Example: main + +Required. + | | +| *`url`* __string__ | Git repository URL containing the pipeline definition. + +Example: https://github.com/custom-pipelines/pipelines.git + +Required. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinespecfrombundle"] +==== PipelineSpecFromBundle + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-pipelinedefinition[$$PipelineDefinition$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`bundle`* __string__ | Bundle image reference. Use 'latest' to get bundle from build-pipeline-config CM, + +or specify a specific bundle image. + +Required. + | | +| *`name`* __string__ | Pipeline name to fetch from the bundle, or from build-pipeline-config CM. + +Required. + | | +|=== + + +[id="{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-repositorysettings"] +==== RepositorySettings + + + + + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentspec[$$ComponentSpec$$] +- xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentstatus[$$ComponentStatus$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`comment-strategy`* __string__ | When specified, will set value of `comment_strategy` in the Repository CR + +Optional. + | | +| *`github-app-token-scope-repos`* __string array__ | When specified, will add values to `github_app_token_scope_repos` in the Repository CR + +Optional. + | | |=== @@ -552,9 +879,9 @@ Snapshot is the Schema for the snapshots API | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `Snapshot` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotspec[$$SnapshotSpec$$]__ | | | -| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotstatus[$$SnapshotStatus$$]__ | | | + | | +| *`spec`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotspec[$$SnapshotSpec$$]__ | | | +| *`status`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotstatus[$$SnapshotStatus$$]__ | | | |=== @@ -565,7 +892,6 @@ Snapshot is the Schema for the snapshots API SnapshotArtifacts is a placeholder section for 'artifact links' we want to maintain to other AppStudio resources. - For example: here I'm imagining we might want to keep track of container image <=> (source code repo, commit sha) links, Which might be useful to present to the user within the UI. @@ -581,7 +907,7 @@ Which might be useful to present to the user within the UI. | Field | Description | Default | Validation | *`unstableFields`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#json-v1-apiextensions-k8s-io[$$JSON$$]__ | NOTE: This field (and struct) are placeholders. + - Until this API is stabilized, consumers of the API may store any unstructured JSON/YAML data here, + -but no backwards compatibility will be preserved. + | | +but no backwards compatibility will be preserved. + | | |=== @@ -602,10 +928,10 @@ SnapshotComponent [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`name`* __string__ | Name is the name of the component + | | -| *`containerImage`* __string__ | ContainerImage is the container image to use when deploying the component, as part of a Snapshot + | | +| *`name`* __string__ | Name is the name of the component + | | +| *`containerImage`* __string__ | ContainerImage is the container image to use when deploying the component, as part of a Snapshot + | | | *`source`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-componentsource[$$ComponentSource$$]__ | Source describes the Component source. + -Optional. + | | +Optional. + | | |=== @@ -626,8 +952,8 @@ SnapshotList contains a list of Snapshot | *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | | *`kind`* __string__ | `SnapshotList` | | | *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta[$$ListMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. - | | -| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshot[$$Snapshot$$] array__ | | | + | | +| *`items`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshot[$$Snapshot$$] array__ | | | |=== @@ -648,12 +974,12 @@ SnapshotSpec defines the desired state of Snapshot [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`application`* __string__ | Application is a reference to the name of an Application resource within the same namespace, which defines the target application for the Snapshot (when used with a Binding). + | | -| *`displayName`* __string__ | DisplayName is a user-visible, user-definable name for the resource (and is not used for any functional behaviour) + | | -| *`displayDescription`* __string__ | DisplayDescription is a user-visible, user definable description for the resource (and is not used for any functional behaviour) + | | -| *`components`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotcomponent[$$SnapshotComponent$$] array__ | Components field contains the sets of components to deploy as part of this snapshot. + | | +| *`application`* __string__ | Application is a reference to the name of an Application resource within the same namespace, which defines the target application for the Snapshot (when used with a Binding). + | | +| *`displayName`* __string__ | DisplayName is a user-visible, user-definable name for the resource (and is not used for any functional behaviour) + | | +| *`displayDescription`* __string__ | DisplayDescription is a user-visible, user definable description for the resource (and is not used for any functional behaviour) + | | +| *`components`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotcomponent[$$SnapshotComponent$$] array__ | Components field contains the sets of components to deploy as part of this snapshot. + | | | *`artifacts`* __xref:{anchor_prefix}-github-com-konflux-ci-application-api-api-v1alpha1-snapshotartifacts[$$SnapshotArtifacts$$]__ | Artifacts is a placeholder section for 'artifact links' we want to maintain to other AppStudio resources. + -See Environment API doc for details. + | | +See Environment API doc for details. + | | |=== @@ -674,7 +1000,5 @@ SnapshotStatus defines the observed state of Snapshot [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions represent the latest available observations for the Snapshot + | | +| *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Conditions represent the latest available observations for the Snapshot + | | |=== - - diff --git a/modules/reference/pages/kube-apis/conforma.adoc b/modules/reference/pages/kube-apis/conforma.adoc index 4c7433e8..cc893651 100644 --- a/modules/reference/pages/kube-apis/conforma.adoc +++ b/modules/reference/pages/kube-apis/conforma.adoc @@ -19,6 +19,23 @@ Package v1alpha1 contains API Schema definitions for the appstudio.redhat.com v1 +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-componentname"] +==== ComponentName + +_Underlying type:_ _string_ + + + +.Validation: +- MinLength: 1 + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilecriteria[$$VolatileCriteria$$] +**** + + + [id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy"] ==== EnterpriseContractPolicy @@ -67,7 +84,7 @@ DEPRECATED: Use the config for a policy source instead. the success of the outcome. + | | | *`include`* __string array__ | Include set of policy inclusions that are added to the policy evaluation. + These override excluded rules. + | | -| *`collections`* __string array__ | Collections set of predefined rules. DEPRECATED: Collections can be listed in include + +| *`collections`* __string array__ | Collections set of predefined rules. DEPRECATED: Collections can be listed in include + with the "@" prefix. + | | |=== @@ -243,11 +260,15 @@ VolatileCriteria includes or excludes a policy rule with effective dates as an o | *`effectiveUntil`* __string__ | | | Format: date-time + | *`imageRef`* __string__ | DEPRECATED: Use ImageDigest instead + -ImageRef is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]64$` + +ImageRef is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]\{64}$` + + +| *`imageDigest`* __string__ | ImageDigest is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]\{64}$` + -| *`imageDigest`* __string__ | ImageDigest is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]64$` + +| *`imageUrl`* __string__ | ImageUrl is used to specify an image by its URL without a tag. + | | Pattern: `^[a-z0-9][a-z0-9.-]\*[a-z0-9](?:\/[a-z0-9][a-z0-9-]*[a-z0-9])\{2,}$` + -| *`imageUrl`* __string__ | ImageUrl is used to specify an image by its URL without a tag. + | | Pattern: `^[a-z0-9][a-z0-9.-]\*[a-z0-9](?:\/[a-z0-9][a-z0-9-]*[a-z0-9]){2,}$` + +| *`componentNames`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-componentname[$$ComponentName$$] array__ | ComponentNames is used to specify component names from + +ApplicationSnapshot. This allows filtering in scenarios where + +multiple components share the same image repository. + | | MinLength: 1 + | *`reference`* __string__ | Reference is used to include a link to related information such as a Jira issue URL. + | | |=== diff --git a/modules/reference/pages/kube-apis/enterprise-contract.adoc b/modules/reference/pages/kube-apis/enterprise-contract.adoc new file mode 100644 index 00000000..ba6b12a2 --- /dev/null +++ b/modules/reference/pages/kube-apis/enterprise-contract.adoc @@ -0,0 +1,277 @@ +// Generated documentation. Please do not edit. +:anchor_prefix: k8s-api + +[id="reference"] +== Enterprise Contract API Reference + +.Packages +- xref:{anchor_prefix}-appstudio-redhat-com-v1alpha1[$$appstudio.redhat.com/v1alpha1$$] + + +[id="{anchor_prefix}-appstudio-redhat-com-v1alpha1"] +=== appstudio.redhat.com/v1alpha1 + +Package v1alpha1 contains API Schema definitions for the appstudio.redhat.com v1alpha1 API group + +.Resource Types +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[$$EnterpriseContractPolicy$$] +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicylist[$$EnterpriseContractPolicyList$$] + + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy"] +==== EnterpriseContractPolicy + + + +EnterpriseContractPolicy is the Schema for the enterprisecontractpolicies API + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicylist[$$EnterpriseContractPolicyList$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | +| *`kind`* __string__ | `EnterpriseContractPolicy` | | +| *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. + | | +| *`spec`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyspec[$$EnterpriseContractPolicySpec$$]__ | | | +| *`status`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicystatus[$$EnterpriseContractPolicyStatus$$]__ | | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyconfiguration"] +==== EnterpriseContractPolicyConfiguration + + + +EnterpriseContractPolicyConfiguration configuration of modifications to policy evaluation. +DEPRECATED: Use the config for a policy source instead. + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyspec[$$EnterpriseContractPolicySpec$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`exclude`* __string array__ | Exclude set of policy exclusions that, in case of failure, do not block + +the success of the outcome. + | | +| *`include`* __string array__ | Include set of policy inclusions that are added to the policy evaluation. + +These override excluded rules. + | | +| *`collections`* __string array__ | Collections set of predefined rules. DEPRECATED: Collections can be listed in include + +with the "@" prefix. + | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicylist"] +==== EnterpriseContractPolicyList + + + +EnterpriseContractPolicyList contains a list of EnterpriseContractPolicy + + + + + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`apiVersion`* __string__ | `appstudio.redhat.com/v1alpha1` | | +| *`kind`* __string__ | `EnterpriseContractPolicyList` | | +| *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#listmeta-v1-meta[$$ListMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. + | | +| *`items`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[$$EnterpriseContractPolicy$$] array__ | | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyspec"] +==== EnterpriseContractPolicySpec + + + +EnterpriseContractPolicySpec is used to configure the Enterprise Contract Policy + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[$$EnterpriseContractPolicy$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`name`* __string__ | Optional name of the policy + | | +| *`description`* __string__ | Description of the policy or its intended use + | | +| *`sources`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-source[$$Source$$] array__ | One or more groups of policy rules + | | MinItems: 1 + + +| *`configuration`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyconfiguration[$$EnterpriseContractPolicyConfiguration$$]__ | Configuration handles policy modification configuration (exclusions and inclusions) + | | +| *`rekorUrl`* __string__ | URL of the Rekor instance. Empty string disables Rekor integration + | | +| *`publicKey`* __string__ | Public key used to validate the signature of images and attestations + | | +| *`identity`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-identity[$$Identity$$]__ | Identity to be used for keyless verification. This is an experimental feature. + | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicystatus"] +==== EnterpriseContractPolicyStatus + + + +EnterpriseContractPolicyStatus defines the observed state of EnterpriseContractPolicy + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[$$EnterpriseContractPolicy$$] +**** + + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-identity"] +==== Identity + + + +Identity defines the allowed identity for keyless signing. + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyspec[$$EnterpriseContractPolicySpec$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`subject`* __string__ | Subject is the URL of the certificate identity for keyless verification. + | | +| *`subjectRegExp`* __string__ | SubjectRegExp is a regular expression to match the URL of the certificate identity for + +keyless verification. + | | +| *`issuer`* __string__ | Issuer is the URL of the certificate OIDC issuer for keyless verification. + | | +| *`issuerRegExp`* __string__ | IssuerRegExp is a regular expression to match the URL of the certificate OIDC issuer for + +keyless verification. + | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-source"] +==== Source + + + +Source defines policies and data that are evaluated together + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicyspec[$$EnterpriseContractPolicySpec$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`name`* __string__ | Optional name for the source + | | +| *`policy`* __string array__ | List of go-getter style policy source urls + | | MinItems: 1 + + +| *`data`* __string array__ | List of go-getter style policy data source urls + | | +| *`ruleData`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#json-v1-apiextensions-k8s-io[$$JSON$$]__ | Arbitrary rule data that will be visible to policy rules + | | Type: object + + +| *`config`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-sourceconfig[$$SourceConfig$$]__ | Config specifies which policy rules are included, or excluded, from the + +provided policy source urls. + | | Type: object + + +| *`volatileConfig`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilesourceconfig[$$VolatileSourceConfig$$]__ | Specifies volatile configuration that can include or exclude policy rules + +based on effective time. + | | Type: object + + +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-sourceconfig"] +==== SourceConfig + + + +SourceConfig specifies config options for a policy source. + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-source[$$Source$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`exclude`* __string array__ | Exclude is a set of policy exclusions that, in case of failure, do not block + +the success of the outcome. + | | +| *`include`* __string array__ | Include is a set of policy inclusions that are added to the policy evaluation. + +These take precedence over policy exclusions. + | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilecriteria"] +==== VolatileCriteria + + + +VolatileCriteria includes or excludes a policy rule with effective dates as an option. + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilesourceconfig[$$VolatileSourceConfig$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`value`* __string__ | | | +| *`effectiveOn`* __string__ | | | Format: date-time + + +| *`effectiveUntil`* __string__ | | | Format: date-time + + +| *`imageRef`* __string__ | DEPRECATED: Use ImageDigest instead + +ImageRef is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]\{64}$` + + +| *`imageDigest`* __string__ | ImageDigest is used to specify an image by its digest. + | | Pattern: `^sha256:[a-fA-F0-9]\{64}$` + + +| *`imageUrl`* __string__ | ImageUrl is used to specify an image by its URL without a tag. + | | Pattern: `^[a-z0-9][a-z0-9.-]\*[a-z0-9](?:\/[a-z0-9][a-z0-9-]*[a-z0-9])\{2,}$` + + +| *`reference`* __string__ | Reference is used to include a link to related information such as a Jira issue URL. + | | +|=== + + +[id="{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilesourceconfig"] +==== VolatileSourceConfig + + + +VolatileSourceConfig specifies volatile configuration for a policy source. + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-source[$$Source$$] +**** + +[cols="20a,50a,15a,15a", options="header"] +|=== +| Field | Description | Default | Validation +| *`exclude`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilecriteria[$$VolatileCriteria$$] array__ | Exclude is a set of policy exclusions that, in case of failure, do not block + +the success of the outcome. + | | +| *`include`* __xref:{anchor_prefix}-github-com-conforma-crds-api-v1alpha1-volatilecriteria[$$VolatileCriteria$$] array__ | Include is a set of policy inclusions that are added to the policy evaluation. + +These take precedence over policy exclusions. + | | +|=== diff --git a/modules/reference/pages/kube-apis/index.adoc b/modules/reference/pages/kube-apis/index.adoc index e898b0a8..ac49ded0 100644 --- a/modules/reference/pages/kube-apis/index.adoc +++ b/modules/reference/pages/kube-apis/index.adoc @@ -5,7 +5,7 @@ Below are the Kubernetes API extensions added by Konflux. * xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-application[Application] * xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-component[Component] * xref:reference:kube-apis/application-api.adoc#k8s-api-github-com-konflux-ci-application-api-api-v1alpha1-snapshot[Snapshot] -* xref:reference:kube-apis/conforma.adoc#k8s-api-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[EnterpriseContractPolicy] +* xref:reference:kube-apis/enterprise-contract.adoc#k8s-api-github-com-conforma-crds-api-v1alpha1-enterprisecontractpolicy[EnterpriseContractPolicy] * xref:reference:kube-apis/image-controller.adoc#k8s-api-github-com-konflux-ci-image-controller-api-v1alpha1-imagerepository[ImageRepository] * xref:reference:kube-apis/integration-service.adoc#k8s-api-github-com-konflux-ci-integration-service-api-v1alpha1-integrationtestscenario[IntegrationTestScenario] * xref:reference:kube-apis/release-service.adoc#k8s-api-github-com-konflux-ci-release-service-api-v1alpha1-release[Release] diff --git a/modules/reference/pages/kube-apis/integration-service.adoc b/modules/reference/pages/kube-apis/integration-service.adoc index d6fb86f8..f739682d 100644 --- a/modules/reference/pages/kube-apis/integration-service.adoc +++ b/modules/reference/pages/kube-apis/integration-service.adoc @@ -60,7 +60,7 @@ Component/Application GitOps repository resources. [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`env`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1alpha1-envvarpair[$$EnvVarPair$$] array__ | Environment is an array of standard environment variables + | | +| *`env`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1alpha1-envvarpair[$$EnvVarPair$$] array__ | Env is an array of standard environment variables + | | | *`target`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1alpha1-environmenttarget[$$EnvironmentTarget$$]__ | Target is used to reference a DeploymentTargetClaim for a target Environment. + The Environment controller uses the referenced DeploymentTargetClaim to access its bounded + DeploymentTarget with cluster credential secret. + | | @@ -342,7 +342,7 @@ Component/Application GitOps repository resources. [cols="20a,50a,15a,15a", options="header"] |=== | Field | Description | Default | Validation -| *`env`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1beta1-envvarpair[$$EnvVarPair$$] array__ | Environment is an array of standard environment variables + | | +| *`env`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1beta1-envvarpair[$$EnvVarPair$$] array__ | Env is an array of standard environment variables + | | | *`target`* __xref:{anchor_prefix}-github-com-konflux-ci-integration-service-api-v1beta1-environmenttarget[$$EnvironmentTarget$$]__ | Target is used to reference a DeploymentTargetClaim for a target Environment. + The Environment controller uses the referenced DeploymentTargetClaim to access its bounded + DeploymentTarget with cluster credential secret. + | | diff --git a/modules/reference/pages/kube-apis/mintmaker.adoc b/modules/reference/pages/kube-apis/mintmaker.adoc index c67f21d0..0561de15 100644 --- a/modules/reference/pages/kube-apis/mintmaker.adoc +++ b/modules/reference/pages/kube-apis/mintmaker.adoc @@ -79,7 +79,6 @@ How the controller uses this CRD: - For each unique repository+branch across those Components, the controller generates one Tekton `PipelineRun` that scans the repository for dependency updates using Renovate. - Annotations: - `mintmaker.appstudio.redhat.com/processed`: set by the controller when the DependencyUpdateCheck is processed, to avoid reprocessing the same CR. diff --git a/modules/reference/pages/kube-apis/project-controller.adoc b/modules/reference/pages/kube-apis/project-controller.adoc index b2196129..05bb0c50 100644 --- a/modules/reference/pages/kube-apis/project-controller.adoc +++ b/modules/reference/pages/kube-apis/project-controller.adoc @@ -177,8 +177,7 @@ Use values to customize generated resources per development stream. ProjectDevelopmentStreamStatus defines the observed state of ProjectDevelopmentStream Conditions include: -- TemplateApplied (reasons: Success, TemplateNotFound, VariableError, ResourceError, ProcessingError) -- TemplateGenerated (reasons: Success, TemplateError, VariableValidationFailed, ResourceValidationFailed) +- Ready (reasons: Reconciling, UpdatingOwnerRef, NoTemplate, TemplateFetchFailed, TemplateGenerationFailed, ResourcesApplied, ApplyingResources) @@ -191,7 +190,7 @@ Conditions include: |=== | Field | Description | Default | Validation | *`conditions`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.3/#condition-v1-meta[$$Condition$$] array__ | Represents the observations of a ProjectDevelopmentStream's current state. + -Known .status.conditions.type are: "TemplateApplied", and "TemplateGenerated" + | | +Known .status.conditions.type are: "Ready" + | | |=== diff --git a/modules/testing/pages/integration/snapshots/index.adoc b/modules/testing/pages/integration/snapshots/index.adoc index c6a60a90..396cf4ab 100644 --- a/modules/testing/pages/integration/snapshots/index.adoc +++ b/modules/testing/pages/integration/snapshots/index.adoc @@ -3,7 +3,7 @@ // Optional: Define context for cross-references if needed within the module structure // :context: snapshots -A {ProductName} **Snapshot** represents a specific, immutable collection of container images for the Components within an Application at a particular point in time. They capture the exact versions of all relevant component artifacts that were built and intended to be used together including their Git commits. Once created, the list of Components with their images is immutable. +A {ProductName} **Snapshot** represents a specific, immutable collection of container images for the Components within an Application at a particular point in time. They capture the exact versions of all relevant component artifacts that were built and intended to be used together including their Git commits. Once created, the list of Components with their images is immutable. Snapshots are fundamental for ensuring consistency during testing and release processes. They provide a stable target for: @@ -95,7 +95,7 @@ It's possible to encounter a situation where new Snapshots cannot be created bec **Configure the Grace Period**: Ensure the gracePeriodDays field for your Releases is set to a reasonable value that reflects your team's release cadence. This can be configured in your ReleasePlan and will be applied to created Release CRs. If gracePeriodDays is not set in your Release, KubeArchive will delete it when it is 5 days old. KubeArchive will also delete any Release more than 30 days old, regardless of the gracePeriodDays value. A shorter grace period ensures Release CRs are deleted more quickly, freeing up their associated Snapshots for garbage collection. -**Manual Deletion**: In an urgent situation, you can manually delete old or unnecessary Release CRs to immediately make their Snapshots eligible for GC. +**Manual Deletion**: In an urgent situation, you can manually delete old or unnecessary Release CRs to immediately make their Snapshots eligible for GC. ==== === Relationship with Releases