Initial scaffold: generation-rule-only Crossplane Bucket example
Educational RunWhen CodeCollection that discovers Crossplane GCP Bucket CRDs (storage.gcp.upbound.io/v1beta1) and generates one SLX per bucket. Ships only generation rules and Jinja templates; the runtime lives in rw-generic-codecollection/k8s-kubectl-cmd (already loaded by the airgap runner). Includes: - codebundles/gcp-bucket-crossplane-health with generation rule + 3 templates - docs/01..07 numbered training chapters with screenshot placeholders - README, .gitignore Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# 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/ # rules + templates only, no *.robot
|
||||
.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
|
||||
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
|
||||
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.
|
||||
Reference in New Issue
Block a user