Skip to content

test(ske/ske-starterkit): make the e2e module dual-mode - #304

Draft
JohannesRudolph wants to merge 1 commit into
mainfrom
claude/ske-starterkit-e2e-foundation-mode
Draft

test(ske/ske-starterkit): make the e2e module dual-mode#304
JohannesRudolph wants to merge 1 commit into
mainfrom
claude/ske-starterkit-e2e-foundation-mode

Conversation

@JohannesRudolph

@JohannesRudolph JohannesRudolph commented Sep 3, 2026

Copy link
Copy Markdown
Member

Prerequisite for running the SKE StarterKit smoke test against deployed cloud foundations
(likvid-bank/likvid-cloudfoundation and meshcloud/trial-cloudfoundation).

Why

modules/ske/ske-starterkit/e2e only had build-from-source mode: it stands up an ephemeral
meshPlatform, a stackit/git-repository and a ske/forgejo-connector definition, builds the
starter kit BBD from hub source, and orders a building block against it. That verifies a fresh hub
deployment. It says nothing about the starter kit a foundation actually ships to its users.

Every other dual-mode e2e module already has the second mode. This adds it here so the foundations
can run the same test against their deployed BBD.

What

  • test_context.bbd_version_ref (optional) is the mode discriminator, per the e2e-test skill.
  • Everything the build-from-source backplane needs is gated behind count: the ephemeral platform,
    the two child definitions, and the starter kit module itself. forgejo_base_url,
    forgejo_organization and dns_zone_name become optional(); the five backplane secrets get
    default = null.
  • What runs in both modes is the part worth running against a live foundation: order a starter
    kit building block, wait for it, and probe the dev + prod app endpoints for HTTP 200 over
    verified TLS.
  • depends_on on the building block now lists all four source-built modules, so the delete run
    always finishes before any backplane resource is torn down.
  • The kubernetes provider moves from provider.tf into main.tf (matching stackit/storage-bucket).
    A foundation e2e unit generates its meshstack provider into provider.tf, which would silently
    overwrite a file of that name shipped by the module. Its arguments are null-tolerant because
    foundation mode has no kubeconfig — and needs none, since nothing is created on the cluster.

Verification

tofu plan in both modes evaluates the full graph and stops only at the dummy provider credentials:

  • foundation mode (bbd_version_ref set, no secrets) — the kubernetes provider configures cleanly
    with all-null arguments, confirming it is never needed there.
  • build-from-source mode — unchanged behaviour.

The live run is the nightly ske/ske-starterkit case in meshcloud/meshstack-smoke-test, which
still exercises build-from-source mode.

🤖 Generated with Claude Code


Consumers of this change (both draft):

Both currently pin this PR's branch head and need re-pinning to the squashed main commit before merge.

The starter kit e2e module could only build its own BBD from hub source. That
covers a fresh hub deployment, but says nothing about the starter kit a
foundation actually ships to its users.

Add foundation mode the same way every other dual-mode e2e module has it: the
optional `test_context.bbd_version_ref` selects it, and everything the
build-from-source backplane stands up — the ephemeral meshPlatform, the
git-repository and forgejo-connector definitions, the starter kit BBD itself —
is gated behind `count`. The foundation already deployed all of that, so it
supplies neither those fixtures nor the backplane secrets. What remains is the
part worth running against a live foundation: order a starter kit building
block, wait for it, and probe both app endpoints for HTTP 200 over verified TLS.

The kubernetes provider moves from `provider.tf` into `main.tf`, matching
stackit/storage-bucket. A foundation e2e unit generates its meshstack provider
into `provider.tf`, which would silently overwrite a file of that name shipped
by the module. Its arguments become null-tolerant because foundation mode has
no kubeconfig — and needs none, since nothing is created on the cluster.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Scorecard Check

Scorecard run on commit bbccb6de39b962fefcea26e2fa791eb9a83980f3 relative to origin/main

📊 meshstack-hub Module Scorecard

Generated: 2026-09-03 | Modules scanned: 1 | Categories: 7

📋 Per-Module Category Summary

Score per category per building block. n/a = category does not apply to this module.

Module Overall Core Structure Integration AWS Backplane Azure Backplane GCP Backplane STACKIT Backplane Testing
ske/ske-starterkit 🟢 92% 🟢 100% 🟢 93% n/a n/a n/a n/a 🟡 75%

⚠️ 1 module has failing checks — failing categories are expanded below.

Core Structure — ✅ all passing

Basic module file structure and documentation — applies to 1 modules

Module Score 📦 🔗 📋 📝 🖼️ 📌 🚦 🔒
ske/ske-starterkit 🟢 100%

Core Structure — Summary

Emoji Criterion Coverage Status
📦 buildingblock/ directory exists 1/1 🟢 100%
🔗 meshstack_integration.tf present 1/1 🟢 100%
📋 buildingblock/APP_TEAM_README.md present (no-integration fallback) n/a
📝 buildingblock/README.md with YAML front-matter 1/1 🟢 100%
🖼️ buildingblock/logo.png included 1/1 🟢 100%
📌 buildingblock/versions.tf present 1/1 🟢 100%
🚦 Child meshstack_building_block asserts a SUCCEEDED run 1/1 🟢 100%
🔒 Provider versions use minimum constraint (>=) 1/1 🟢 100%
Integration — some checks failing

meshstack_integration.tf conventions — applies to 1 modules

Module Score 🏷️ 🏢 📤 🔌 📎 🔀 🌱 📋 🏷️ 🧱 📖 📝 📊 🚫 🔄
ske/ske-starterkit 🟢 93%

Integration — Summary

Emoji Criterion Coverage Status
🏷️ variable "hub" in integration 1/1 🟢 100%
🏢 variable "meshstack" in integration 1/1 🟢 100%
📤 building_block_definition output exposed 1/1 🟢 100%
🔌 meshcloud/meshstack in required_providers 1/1 🟢 100%
📎 backplane source uses var.hub.git_ref 1/1 🟢 100%
🔀 ref_name uses var.hub.git_ref 1/1 🟢 100%
🌱 BBD terraform_version >= 1.12.0 1/1 🟢 100%
📋 version_spec.draft uses var.hub.bbd_draft 1/1 🟢 100%
🏷️ BBD metadata.tags forwards var.meshstack.tags 1/1 🟢 100%
🧱 BBD input argument vars with optional() have explicit defaults 0/1 🔴 0%
📖 BBD readme field present 1/1 🟢 100%
📝 BBD readme starts with plain-text description (no heading) 1/1 🟢 100%
📊 BBD readme has shared responsibility table (✅/❌) 1/1 🟢 100%
🚫 No documentation_md output in backplane 1/1 🟢 100%
🔄 meshstack_platform has lifecycle ignore_changes = [availability] n/a
AWS Backplane — not applicable

AWS automation principal conventions (WIF or cross-account StackSet) — applies to 0 modules

No applicable modules.

Azure Backplane — not applicable

Azure UAMI-based automation principal conventions — applies to 0 modules

No applicable modules.

GCP Backplane — not applicable

GCP workload-identity-federation automation principal conventions — applies to 0 modules

No applicable modules.

STACKIT Backplane — not applicable

STACKIT WIF-based automation principal conventions — applies to 0 modules

No applicable modules.

Testing — some checks failing

End-to-end test coverage — applies to 1 modules

Module Score ⚙️ 🧪 🚫
ske/ske-starterkit 🟡 75%

Testing — Summary

Emoji Criterion Coverage Status
⚙️ backplane/ directory (optional tier) 0/1 🔴 0%
🧪 e2e/ test directory exists 1/1 🟢 100%
🚫 no .tftest.hcl outside e2e/ 1/1 🟢 100%
e2e/ contains .tftest.hcl files 1/1 🟢 100%

@aws-amplify-eu-central-1

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-304.d1o16zfeoh2slu.amplifyapp.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant