4adb7224d8
Updated the README to provide clearer descriptions for the `gcp-bucket-crossplane-health` and `stg-workspace-smoke` code bundles. The `gcp-bucket-crossplane-health` now specifies its focus on Kubernetes platform and k8s-kubectl-cmd runtime, while the `stg-workspace-smoke` is noted for its integration of runwhen and tool-builder runtime. This improves documentation clarity for users regarding the purpose and structure of these bundles.
64 lines
2.6 KiB
Markdown
64 lines
2.6 KiB
Markdown
# simple-private-codecollection
|
||
|
||
An **educational, generation-rule-only** RunWhen CodeCollection. It ships **no**
|
||
Robot Framework code of its own — instead it teaches how a private repository
|
||
can define **discovery rules** and **SLX templates** that reuse a generic
|
||
runtime already loaded by the RunWhen runner (in this case
|
||
[`k8s-kubectl-cmd`](https://github.com/runwhen-contrib/rw-generic-codecollection/tree/main/codebundles/k8s-kubectl-cmd)
|
||
from `rw-generic-codecollection`).
|
||
|
||
## What it demonstrates
|
||
|
||
- How **workspace-builder** discovers a Kubernetes **Custom Resource** (a
|
||
Crossplane `Bucket` from the Upbound GCP provider) via a generation rule.
|
||
- How the resulting SLX points its `codeBundle.repoUrl` at a **different**
|
||
code collection where the runtime actually lives.
|
||
- How to compute a fractional **SLI** (0.0–1.0) from
|
||
`.status.conditions[]` with `jq`, and how to emit a **detailed
|
||
TaskSet** with per-condition issues via `RW.DynamicIssues`.
|
||
|
||
## Layout
|
||
|
||
```
|
||
codebundles/
|
||
gcp-bucket-crossplane-health/ # kubernetes platform + k8s-kubectl-cmd runtime
|
||
.runwhen/
|
||
generation-rules/gcp-bucket-crossplane-health.yaml
|
||
templates/
|
||
gcp-bucket-crossplane-health-slx.yaml
|
||
gcp-bucket-crossplane-health-sli.yaml
|
||
gcp-bucket-crossplane-health-taskset.yaml
|
||
stg-workspace-smoke/ # platform: runwhen + tool-builder runtime (RW-1353 E2E)
|
||
.runwhen/
|
||
generation-rules/stg-workspace-smoke.yaml
|
||
templates/
|
||
stg-workspace-smoke-slx.yaml
|
||
stg-workspace-smoke-taskset.yaml
|
||
docs/
|
||
01-overview.md
|
||
02-generation-rules-only-pattern.md
|
||
03-crossplane-crd-discovery.md
|
||
04-generation-rule-walkthrough.md
|
||
05-slx-and-templates.md
|
||
06-runner-integration.md
|
||
07-validate-and-observe.md
|
||
08-current-limitations.md
|
||
images/ # screenshots referenced from the chapters
|
||
```
|
||
|
||
## Start here
|
||
|
||
Open [`docs/01-overview.md`](docs/01-overview.md) and read the chapters in
|
||
order. Each chapter has a short "What you'll do" preamble, an inline diagram
|
||
or code snippet, and screenshot placeholders that we fill in as we iterate.
|
||
|
||
## Target environment
|
||
|
||
This training example is wired for the RunWhen **airgap** environment (in-cluster
|
||
workspace-builder in `runwhen-env-airgap-runner`, Gitea at
|
||
`gitea.airgap.shared.runwhen.com`). The generation rule targets real Crossplane
|
||
`Bucket` resources already present in that cluster (see
|
||
[llm-storage.yaml](https://github.com/runwhen/infra-flux-nonprod-shared/blob/main/infrastructure/crossplane/llm-storage/llm-storage.yaml)
|
||
and similar). The pattern applies to any RunWhen environment; only the
|
||
`repoUrl` in the templates needs to change.
|