Code Monkey home page Code Monkey logo

spec's Introduction

keptn

Keptn

Keptn V1 has reached end of life on December 22nd, 2023 and has been replaced.

GitHub release (latest by date) GitHub Downloads CI codecov Go Report Card CII Best Practices

Keptn is an event-based control plane for continuous delivery and automated operations for cloud-native applications. Please find the documentation on our website, and read the motivation about Keptn on our Why Keptn? page.

In addition, you can find the roadmap of the Keptn project here. It provides an overview of user stories that are currently in the focus of development for the next release.

Keptn Today! Keptn Lifecycle Toolkit Tomorrow!

Keptn: Moving towards our 1.0 milestone!

3 years of hard work will soon reach a long awaited milestone: Keptn 1.0 with LTS (Long Time Support) brings you automated release validation based on SLOs that you can easily integrate into your existing DevOps Tools (deployment, test and observability).

If you want to explore Keptn then keep scrolling down to get all information!

Keptn Lifecycle Toolkit: The kuber-native road ahead!

At KubeCon 2022 in Detroit we announced the direction we are heading: Keptn Lifecycle Toolkit! Keptn Lifecycle Toolkit brings application-aware deployment lifecycle management to your k8s cluster:

  • kubernetes-native: no external dependencies, everything in your CRDs and
  • pipeline-less: works with any delivery tool (ArgoCD, Flux, Jenkins, GitHub, GitLab, Harness ...) without having to integrate it with Keptn

To decide whether you want to stick with Keptn 1.0 or focus on Keptn Lifecycle Toolkit do this:

  1. Watch our Keptn Lifecycle Toolkit in a Nutshell video including live demo
  2. Try Keptn Lifecycle Toolkit yourself: GitHub Repo

Quickstart

Keptn runs on Kubernetes. To get started, you can follow our Quickstart guide.

Developing Keptn

The easiest way to develop is to spin up a Kubernetes cluster locally by using K3d (requires docker) via the following commands:

curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | TAG=v5.3.0 bash
k3d cluster create mykeptn -p "8082:80@loadbalancer" --k3s-arg "--no-deploy=traefik@server:*"

Afterwards, install Keptn CLI:

curl -sL https://get.keptn.sh | bash

And install Keptn using Helm:

helm repo add keptn https://charts.keptn.sh && helm repo update
helm install keptn keptn/keptn \
-n keptn --create-namespace \
--wait \
--set=apiGatewayNginx.type=LoadBalancer

In case you want to install helm-service and jmeter-service, execute:

helm install jmeter-service keptn/jmeter-service -n keptn
helm install helm-service keptn/helm-service -n keptn

Please follow the instructions printed by the CLI to connect to your Keptn installation.

Installing Keptn from Master branch

Note: This will install a potentially unstable version of Keptn.

If you want to install the latest master version of Keptn onto your cluster you can do that by using the development helm charts repository located at https://charts-dev.keptn.sh . By default, the global registry used is ´ghcr.io/keptn´, so you will need to override it.

helm repo add keptn-dev https://charts-dev.keptn.sh    # Add the keptn-dev helm repo
helm repo update                                       # Update all repo contents
helm search repo keptn-dev --devel --versions          # List all versions present in the keptn-dev repo

# Select a chart version from the previous command that you want to install

helm install -n keptn-dev keptn keptn-dev/keptn --set=global.keptn.registry=ghcr.io/keptn --create-namespace --version "<the-version-you-selected-previously>"

You can find more information in our docs.

Community

Please find details on regular hosted community events as well as our Slack workspace in the keptn/community repo.

Keptn Versions compatibilities

We manage the Keptn core components in versions. The versions of the Keptn core components and the services are compatible with each other. However, contributed services as well as services that are not considered core components might not follow the same versioning schema.

We are tracking compatibility of those services on our website.

Container Images

Keptn provides container images of all core components. The respective images in their versions are stored on the following container registries:

From version 0.19.0, all released container images are signed using cosign with a keyless signing mechanism. That means that Keptn uses short-lived code signing certificates and keys together with OIDC and a transparency log to sign all its container images. More info on keyless signed container images can be found here.

Helm Chart

Keptn provides Helm charts for easy installation of all control plane components. From version 0.19.0, the charts are signed and can be verified with the public key that can be found in assets/pubring.gpg and attached to every release. More info on signed Helm charts can be found here.

Contributions

You are welcome to contribute using Pull Requests to the respective repositories. Before contributing, please read our Contributing Guidelines and our Code of Conduct. Please also check out our list of good first issues.

License

Keptn is an Open Source Project. Please see LICENSE for more information.

Adopters

For a list of users, please refer to ADOPTERS.md.

Further information

spec's People

Contributors

agardnerit avatar agrimmer avatar aloisreitbauer avatar bacherfl avatar christian-kreuzberger-dtx avatar dirkwall avatar johannes-b avatar kirdock avatar laneli avatar mowies avatar odubajdt avatar raffy23 avatar realanna avatar sudiptob2 avatar thisthat avatar warber avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spec's Issues

Keptn CloudEvents: Project.Create / Service.Create / Service.Delete etc... need to be streamlined

Right now we have “internal” events that are fired when a project or a service is created or deleted, e.g., project.create.triggered, project.create.started and project.create.finished.

Observation 1: We never fire a project.create.triggered, but shipyard-controller sends a project.create.started and .finished (I guess the same is true for services).
This means that it is not possible for any other service to react on a project.create.triggered.

Observation 2: It seems that to counteract my first observation, some services listen on the *.create.finished events. This is suboptimal, as they sometimes event send another *.create.finished event.
For instance, helm-service sends a second service.create.finished (the other one is from shipyard-controller)

Suggested fix:
Provide post-*-create cloud-events, e.g.:
post-project-create.triggered
post-service-create.triggered

Keptn CloudEvents: Naming of get-sli

Question: Considering all our CloudEvent naming (e.g., test, deployment, evaluation), should get-sli be renamed to something that aligns with the other names, e.g., sli-retrieval?

spec 0.2.0 - Specify Deployment / DeploymentNames

In helm-service of Keptn 0.8.0-rc1 I noticed that we are sending deploymentNames within the deployment.finished event:

{
  "data": {
    "deployment": {
      "deploymentNames": [
        "canary"
      ],
      "deploymentURIsLocal": [
        "http://tempberry-backend.tempberry-hardening:80"
      ],
      "deploymentURIsPublic": [
        "http://tempberry-backend.tempberry-hardening.1-2-3-4.nip.io:80"
      ],
      "deploymentstrategy": "duplicate",
      "gitCommit": "bb31a5c6a65a0ca6f42081ce1fe1099dadba697d"
    },
    "message": "Successfully deployed",
    "project": "tempberry",
    "result": "pass",
    "service": "tempberry-backend",
    "stage": "hardening",
    "status": "succeeded"
  },
  "source": "helm-service",
  "type": "sh.keptn.event.deployment.finished",
}

The information provided by helm-service in this Array is either "canary" or "direct" and is consumed by SLI providers to determine whether the SLI is fetched for the primary or canary deployment (e.g., in case of blue-green deployments).
In addition, we refer to deployment in helm-charts (for dynatrace integration):
https://github.com/keptn/examples/blob/519680b56e270e9a59b09d864415df3d45643a09/onboarding-carts/carts/templates/deployment.yaml#L35-L36

In Keptn 0.7.x this field was called "deployment", e.g.:

{
  "contenttype": "application/json",
  "data": {
    "customFilters": [],
    "deployment": "canary",
    "deploymentstrategy": "blue_green_service",
    "end": "2020-12-04T07:00:54Z",
    "indicators": [
      "response_time_p95"
    ],
    "project": "ck-sockshop",
    "service": "carts",
    "sliProvider": "dynatrace",
    "stage": "staging",
    "start": "2020-12-04T06:59:00Z",
    "teststrategy": "performance"
  },
  "source": "lighthouse-service",
  "type": "sh.keptn.internal.event.get-sli",
}

See also helm-service#deployment-finished.

Questions / Problems

  • I did not expect "direct" nor "canary" for DeploymentNames. Coming from helm-service, I would have expected the actual name of the release, helm-chart or Kubernetes Deployment (e.g., tempberry-primary).
  • Why is it an array? Do we consume it as an array anywhere (e.g., sli provider) or do we always consume the value at index 0?
  • The respective attribute is not visible/document in keptn/spec, therefore writing an integration that consumes this attribute is impossible unless you have profound knowledge of helm-service.

Resolve differences between properties and "special terms" like "triggeredOn" and "triggeredAfter"

task properties are denotes as:

- name: "task1"
  properties:
    foo: bar

A task can be "triggered after" a certain amount of time like this:

- name: "task1"
  triggeredAfter: 10m

Why the difference? Why not streamline and list as just another property:

- name: "task1"
  properties:
    foo: bar
    triggeredAfter: 10m

Same idea for sequences being "triggered on" other events. Currently the syntax is:

- name: sequence1
  triggeredOn:
    - event: "dev.delivery.finished"

Why not:

- name: sequence1
  properties:
    triggeredOn:
      event: dev.delivery.finished

Keptn CloudEvents: Explain what gitCommit is and why we need it

When reading CloudEvents spec, it is not clear what gitCommit is and why I need it.

gitCommit appears in multiple cloudevents, e.g., deployment (here it actually makes sense, if we consider our helm-service), but also evaluation, as well as also action (e.g., action.finished).
image

image

To be clear, I know that gitCommit means it should be a commit hash of a git commit, but of "what" (and "why")?
The Git config repo? What if I don't have one (e.g., unleash-service is an action-provider and does not need to have access to a Git repository at all)?

Also, what is the added benefit of having a gitCommit in certain cloud-events (but not all)?

Problem / Problem.Open Cloud Events need to be streamlined

In Keptn 0.7.x and spec 0.1.7 as well as Keptn 0.8.0-alpha and spec 0.2.0-alpha we are still using the old Problem / Problem.Open CloudEvents.

Those are most certainly not compatible with our new .triggered/.started/.finished structure. In addition, in our spec we only list problem.open, but no longer “just” problem (which is sent by Dynatrace to our API).

Suggested fix (to be discussed):
Right now the workflow is a little bit weird. Dynatrace sends a Problem Notification to Keptn API, which is processed as if it was a CloudEvent, and then Service parses this and sends a Problem.Open CloudEvent.

For one, Dynatrace could try to communicate directly via Dynatrace-Service (and not via Keptn API) to send the Problem Event (though this would require Dynatrace-Service to be reachable from the outside, which it currently is not).

Second, Problem.Open CloudEvents could be streamlined to use .triggered/.started/.finished - or maybe it should even just be .problem.triggered (without the .open)?

As a tradeoff, we could do the following:
Dynatrace keeps sending a sh.keptn.events.problem to stay backwards compatible (we can think of introducing sh.keptn.events.problem.triggered). We need to define this event in our CloudEvents spec.
Dynatrace-Service reacts on this event, and sends a problem.open.triggered (we need to introduce problem.open.triggered).
Remediation-Service listens on problem.open.triggered and reacts on it with sending appropriate .started and .finished events
To be discussed: How do we handle problem close/resolve events from Dynatrace?

Is Keptn following the spec?

In v0.15.0, I'm getting breaking validation errors.

name: invalid response
shortmsg: |-
  properties: /data/events/0/data/evaluation/indicatorResults/0/value/comparedValue: must NOT have additional properties
  properties: /data/events/0/data/evaluation/indicatorResults/1/value/comparedValue: must NOT have additional properties
  properties: /data/events/0/data/evaluation: must have property 'gitCommit'
info:
  request:
    baseURL: https://[REDACTED]/api/
    headers:
      x-token: ***
    method: GET
    url: mongodb-datastore/event
    params:
      type: sh.keptn.event.evaluation.finished
      keptnContext: b204cf07-5973-470a-8f63-7e44e1bd4d35
  response:
    status: 200
    statusText: OK
    headers:
      server: istio-envoy
      date: Sat, 14 May 2022 17:34:30 GMT
      content-type: application/json
      x-envoy-upstream-service-time: '11'
      transfer-encoding: chunked
    data:
      events:
      - data:
          evaluation:
            indicatorResults:
            - displayName: ''
              keySli: true
              passTargets:
              - criteria: <2000
                targetValue: 2000
                violated: false
              score: 20
              status: pass
              value:
                comparedValue: 0
                metric: avg_responsetime
                success: true
                value: 1.5889433962264152
              warningTargets:
              - criteria: <1000
                targetValue: 1000
                violated: false
            - displayName: ''
              keySli: true
              passTargets:
              - criteria: <1
                targetValue: 1
                violated: false
              score: 20
              status: pass
              value:
                comparedValue: 0
                metric: error_rate
                success: true
                value: 0
              warningTargets:
              - criteria: <2
                targetValue: 2
                violated: false
            result: pass
            score: 100
            sloFileContent: c3BlY192ZXJzaW9uOiAnMS4wJwpvYmplY3RpdmVzOgotIHNsaTogYXZnX3Jlc3BvbnNldGltZQogIHBhc3M6CiAgLSBjcml0ZXJpYToKICAgIC0gPDIwMDAKICB3YXJuaW5nOgogIC0gY3JpdGVyaWE6CiAgICAtIDwxMDAwCiAgd2VpZ2h0OiAyMAogIGtleV9zbGk6IHRydWUKLSBzbGk6IGVycm9yX3JhdGUKICBwYXNzOgogIC0gY3JpdGVyaWE6CiAgICAtIDwxCiAgd2FybmluZzoKICAtIGNyaXRlcmlhOgogICAgLSA8MgogIHdlaWdodDogMjAKICBrZXlfc2xpOiB0cnVlCnRvdGFsX3Njb3JlOgogIHBhc3M6IDkwJQogIHdhcm5pbmc6IDYwJQpjb21wYXJpc29uOgogIGNvbXBhcmVfd2l0aDogc2V2ZXJhbF9yZXN1bHRzCiAgaW5jbHVkZV9yZXN1bHRfd2l0aF9zY29yZTogcGFzc19vcl93YXJuCiAgbnVtYmVyX29mX2NvbXBhcmlzb25fcmVzdWx0czogMQo=
            timeEnd: '2022-05-14T17:31:04.360Z'
            timeStart: '2022-05-14T17:30:04.360Z'
          labels:
            DtCreds: dynatrace-np
            appServiceId: appsvc0
            buildId: '20115'
            definition: EMF.Keptn.Sandbox
            dtEntityName0: EMFSandbox_Blue
            dtEntityWebUrl0: https://[REDACTED]/e/54d139b9-23ee-466d-ad7a-f98e0bd8bdf4/ui/nav/SERVICE-A5D15D718DF71792
            pipeline: https://dev.azure.com/[REDACTED]/6b945a9d-1349-4d3c-9858-0b57fcad3e9e/_build/results?buildId=20115
            runby: Microsoft.VisualStudio.Services.TFS
          project: devops
          result: pass
          service: emf.keptn.sandbox
          stage: stage
          status: succeeded
        id: 6c3b309f-91b0-4ae0-92b8-c789537b7101
        shkeptncontext: b204cf07-5973-470a-8f63-7e44e1bd4d35
        shkeptnspecversion: 0.2.4
        source: lighthouse-service
        specversion: '1.0'
        time: '2022-05-14T17:33:04.769Z'
        triggeredid: 1126c26a-d70d-48ee-be37-c04df27c6016
        type: sh.keptn.event.evaluation.finished
      pageSize: 20
      totalCount: 1
  errors:
  - instancePath: /data/events/0/data/evaluation/indicatorResults/0/value/comparedValue
    schemaPath: /definitions/indicatorResult/properties/value
    keyword: properties
    params:
      error: additional
      additionalProperty: comparedValue
    message: must NOT have additional properties
  - instancePath: /data/events/0/data/evaluation/indicatorResults/1/value/comparedValue
    schemaPath: /definitions/indicatorResult/properties/value
    keyword: properties
    params:
      error: additional
      additionalProperty: comparedValue
    message: must NOT have additional properties
  - instancePath: /data/events/0/data/evaluation
    schemaPath: /definitions/evaluation/properties/gitCommit
    keyword: properties
    params:
      error: missing
      missingProperty: gitCommit
    message: must have property 'gitCommit'

These PRs seem to conflict with schema lines.

Could CI/CD check for compatibility breaks between design & generated schemas?
There are various tools to do that:

Add explicit JSON Payload example in spec for customsequence.triggered

It is possible to interpret the cloudevents spec file and build a payload for a mysequence.triggered event, but it's not quick.

Add a new subsection for custom events.

During this, make it clear which parts the shipyard-controller will automatically add on your behalf and which are mandatory:

For example, AFAIK this is a minimal working example of a cloudevent that can be ingested and used:

{
  "specversion": "1.0",
  "contenttype": "application/json",
  "data": {
      "project": "<projectNameHere>",
      "service": "<serviceNameHere>",
      "stage": "<stageNameHere>"
  },
  "type": "sh.keptn.event.<stageNameHere>.<sequenceNameHere>.triggered",
  "source": "<yourSource>"
}

Keptn CloudEvents action.triggered: Why do we send name and description?

NOTE: This was changed from spec 0.2.1 to 0.2.2 and the issue description might be outdated


In the 0.2.0-alpha spec, the CloudEvent action.triggered contains name, action, description and value.

Based on the spec for remediation.yaml I have to say that action and value make perfect sense to me:
https://github.com/keptn/spec/blob/master/remediation.md#example-of-a-remediation-in-yaml
image

Though why do we need to send all 4 attributes with an action.triggered event?

Also, what happens if I send something else in there? Is it validated? Will it fail?


Counter-proposal:

  • Only send action and value

Reasoning:

  • If I ever send an action.triggered cloud-event (e.g., through Keptn Bridge or via CLI), I don't want to need to specify name and description - implementing this properly would actually require reading remediation.yaml and processing name and description before sending the CloudEvent
  • remediation.yaml should be independent from the action-provider that reacts on the action.triggered event. The action-provider should only need to know what action it performs, and what values it needs for this action.
  • name and description of a remediation action are specific to the problem/remediation workflow, not the actual action performed.

Keptn CloudEvents: Auto-Generate JSON Schema and JSON Examples

Currently, the Keptn Cloudevent Spec page is created manually.
Due to the error-prone nature of this process, it is very hard to keep the JSON examples and JSON schema descriptions in sync and up to date.

Task:

The go structs representing the cloud events (mainly in keptn/go-utils) shall be used to auto-generate JSON schema files and JSON examples which can then be used in the keptn spec for our cloud events. Note that it might be necessary to add additional metadata to the existing go structs.

Initial work on generating the cloudevents.md file has been done here There are some Tasks left:

  • Add jsonschema tags to the golang structs to make the generated JSON schema more descriptive (add type information, enums, quantities, etc...)
  • Fix keptn/keptn#2830 which causes the generated schema generation to output weird $ref fields (see json schema for EvaluationTriggeredEventData
  • Move code to one of the keptn repositories
  • Nice to have: trigger the generation of the cloudevents.md file automatically via a GH action.

New Spec: artifact-delivery / deploy events - should we have configuration-change in it or something else?

My proposal:

If we want to trigger artifact delivery, we should only deploy some data, e.g.:

keptn trigger artifact-delivery --deployment.image=docker.io/keptnexamples/carts --deployment.tag=0.11.3

which should result in a cloud-event that looks like this (simplified cloud-event):

{
    "type": "artifact-delivery",
    "data": {
        "deployment": {
               "image": "docker.io/keptnexamples/carts",
               "tag": "0.11.3"
         }
    }
}

And then shipcard-controller will send a deploy.triggered with the same data.

@bacherfl could you please add the resulting cloud-events of our current implementation (master branch) as a comment?

Double-check all cloud-events before release

Before we release Keptn 0.8.0 we need to double-check every cloud-event and every payload attribute

  • whether it is needed
  • whether it is used (currently)
  • whether it is documented properly within the spec

Change spec_version to apiVersion for Keptn configurations

The remediation config uses the property apiVersion to declare the version of this spec file, has "kind", "metadata", and "spec": https://github.com/keptn/spec/blob/master/sre.md#remediation

When modifying the spec of shipyard, sli, or slo please change the property spec_version to apiVersion with the value: apiVersion: spec.keptn.sh/x.y.z, and add kind (= Shipyard, ServiceLevelIndicator, ServiceLevelObjective), metadata, and spec according to the example of the remedation spec.

Definition of Done:

  • The specifications of shipyard, sli, or slo are aligned with the remedation spec

spec 0.2.0 - Optimize CloudEvents spec based on payloads

As a developer (that develops a Keptn integration) I want to be able to read the CloudEvents spec and understand what CloudEvents and Payloads I need to deal with.

Also, as a developer, I want to make sure that my Keptn-service validates the input based on my requirements, not based on what Keptn spec specifies (e.g., lighthouse-service requires a test and deployment payload for evaluation.triggered - but this should not be part of the evaluation.triggered event).

Current situation

In spec 0.2.0, several of our CloudEvents specify payloads of previous CloudEvents, e.g.:

On a site node, sh.keptn.event.get-sli.triggered is absolutely not Keptn CloudEvents 0.2.0 compatible... we are breaking current implementations of SLI providers, and we will need to break implementations again once we send get-sli.triggered from shipyard-controller - I'll leave that for another issue.

Desired situation

  • We have a basic definition of how a Keptn Cloud Event looks like (I think we already have that: cloudevents.md#type, cloudevents.md#task-events, cloudevents.md#data
  • For each task we have a concrete definition of the payload of the task, e.g., sh.keptn.evaluation.triggered should specify the actual evaluation payload (start and end)
  • Every Keptn-service defines the desired .triggered CloudEvent (see example below)

Example: helm-service specifies deployment.triggered

go-utils

type DeploymentTriggeredEventData struct {
	EventData

	ConfigurationChange ConfigurationChange    `json:"configurationChange"`
	Deployment          DeploymentWithStrategy `json:"deployment"`
}

becomes

type DeploymentTriggeredEventData struct {
	EventData
	Deployment          DeploymentWithStrategy `json:"deployment"`
}

helm-service

Needs to either use the go-utils DeploymentTriggeredEventData or specify their own using an imported struct, e.g.:

type DeploymentTriggeredEventData struct {
	keptnv2.DeploymentTriggeredEventData
	ConfigurationChange ConfigurationChange    `json:"configurationChange"`
}

Example: lighthouse-service specifies evaluation.triggered

go-utils

type EvaluationTriggeredEventData struct {
	EventData
	Test       Test       `json:"test"`
	Evaluation Evaluation `json:"evaluation"`
	Deployment Deployment `json:"deployment"`
}

becomes

type EvaluationTriggeredEventData struct {
	EventData
	Evaluation Evaluation `json:"evaluation"`
}

lighthouse-service

Needs to either use the go-utils EvaluationTriggeredEventData or specify their own using an imported struct, e.g.:

type EvaluationTriggeredEventData struct {
	keptnv2.EvaluationTriggeredEventData
	Test       Test       `json:"test"`
	Deployment Deployment `json:"deployment"`
}

spec 0.2.1 - add deployment attribute to get-sli

From discussion in #68

Goal: We need to add a deployment field to get-sli.triggered

Tasks

  • Add deployment to get-sli.triggered in go-utils
  • Merge go-utils in keptn core
  • Generate spec using CLI keptn generate-spec and create a PR on the keptn/spec repo

Keptn Shipyard: Update specification for deployment- and test-strategy

The specification documentation still uses the property strategy for the deployment- and test-strategy. It should be deploymentstrategy and teststrategy.

Failing example:

- name: deployment
  properties:
    strategy: direct

should be

- name: deployment
  properties:
    deploymentstrategy: direct

Documentation of stage events

In the https://github.com/keptn/spec/blob/master/cloudevents.md a section should be provided to explain the stage events fired by the shipyard-controller. Given the below example of a shipyard, the following stage events are fired:

  • sh.keptn.event.dev.artifact-delivery.triggered
  • sh.keptn.event.dev.artifact-delivery.finished
  • sh.keptn.event.staging.artifact-delivery.triggered
  • sh.keptn.event.staging.artifact-delivery.finished
apiVersion: "spec.keptn.sh/0.2.0"
kind: "Shipyard"
metadata:
  name: "shipyard-sockshop"
spec:
  stages:
    - name: "dev"
      sequences:
        - name: "artifact-delivery"
          tasks:
            - name: "deployment"
            - name: "test"
            - name: "evaluation"
            - name: "release"

    - name: "staging"
      sequences:
        - name: "artifact-delivery"
          triggers:
            - "dev.artifact-delivery.finished"
          tasks:
            - name: "deployment"
            - name: "test"
            - name: "evaluation"
            - name: "release"

Task: Provide documentation to explain:

  • The pattern of a stage event follows this format: sh.keptn.event.{stage}.{seqeunece}.{triggered | finished}
  • The result, status, and message properties represent the properties from the last successfully executed task in the sequence.

aggregate keptn json schemas into `schema` folder for publishing in schemastore

Is your feature request related to a problem? Please describe.
Ketpn JSON schemas are defined in the .md files. It would be nice if we create a folder and aggregate schema definition there.

Describe the solution you'd like
I am working on the issue #9452 related to publishing Keptn schemas in JSON Schemastore.
It is possible to publish self-hosted schemas in the Schemastore. If we host the file in keptn/spec repo then it will be easy to refer to the schemas in the schema catalog of the Schemastore without needing to create the files in the schemastore repo.

Describe alternatives you've considered
We can directly create JSON schemas in the schemastore repository. However In my opinion, it would be more maintainable if we define the schemas in keptn/spec repo and refer them in the catalog.

ProblemDetails Example wrong

The ProblemDetails field in the cloudevents.md example shows "ProblemDetails": "Pod name", whereas it's actually passed like this:

"ProblemDetails":{"displayName":"641","endTime":-1,"hasRootCause":false,"id":"1234_5678V2","impactLevel":"SERVICE","severityLevel":"PERFORMANCE","startTime":1587624420000,"status":"OPEN"}

Clarify / Reword SRE spec

Does this SLO example contradict itself?

https://github.com/keptn/spec/blob/0.1.2/sre.md#service-level-indicators-sli-configuration

comparison:
  compare_with: "single_result"
  include_result_with_score: "pass"
  number_of_comparison_results: 3
  aggregate_function: avg

This comparison configuration means that the current result is only compared to the last result that passed.

Doesn't the compare_with: "single_result" actually negate the number_of_comparison_results?

Perhaps the example should be:

comparison:
  compare_with: "single_result"
  include_result_with_score: "pass"
  aggregate_function: avg

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.