From e93bc147178df5482a68a488188b71de01e0abec Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Thu, 3 Sep 2026 08:15:45 +0200 Subject: [PATCH 1/3] refactor(ske/starterkit): move the hub coordinates into hub.hcl The e2e smoke test unit added next needs the same hub ref the deployment uses, and terragrunt can only share that through an included file. No behaviour change: the ref and draft flag are unchanged, and `module` is new but only read by e2e/. Co-Authored-By: Claude Opus 5 --- .../platforms/ske/starterkit/hub.hcl | 12 ++++++++++++ .../platforms/ske/starterkit/terragrunt.hcl | 14 ++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl diff --git a/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl b/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl new file mode 100644 index 0000000..4e4032c --- /dev/null +++ b/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl @@ -0,0 +1,12 @@ +# Hub building-block coordinates — single source of truth for both the deployment +# (terragrunt.hcl) and the e2e smoke test (e2e/terragrunt.hcl). +# +# `module` is only consumed by e2e/: the deployment composes three hub modules (the starter kit and +# the two definitions it creates child building blocks from), so it names their paths itself. +locals { + module = "ske/ske-starterkit" + git_ref = "b7ac0aa9818db730958f64e7ba0fdeecedcfbd4e" + + # Released, not draft — the e2e test orders against `version_latest_release`. + bbd_draft = false +} diff --git a/foundations/meshstack-trial/platforms/ske/starterkit/terragrunt.hcl b/foundations/meshstack-trial/platforms/ske/starterkit/terragrunt.hcl index 0b660d2..2b3b510 100644 --- a/foundations/meshstack-trial/platforms/ske/starterkit/terragrunt.hcl +++ b/foundations/meshstack-trial/platforms/ske/starterkit/terragrunt.hcl @@ -22,11 +22,10 @@ dependency "dns" { config_path = "../dns" } -locals { - hub = { - git_ref = "b7ac0aa9818db730958f64e7ba0fdeecedcfbd4e" - bbd_draft = false - } +# Hub coordinates live in hub.hcl (single source of truth, shared with e2e/). +include "hub" { + path = "./hub.hcl" + expose = true } generate "provider" { @@ -48,7 +47,10 @@ EOF inputs = { meshstack = dependency.meshstack.outputs - hub = local.hub + hub = { + git_ref = include.hub.locals.git_ref + bbd_draft = include.hub.locals.bbd_draft + } platform_ref = dependency.platform.outputs.platform_ref landing_zone_refs = dependency.platform.outputs.landing_zone_refs From aad02c965a2711dc0219ceb6e09f4f51e1962273 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Thu, 3 Sep 2026 08:15:58 +0200 Subject: [PATCH 2/3] chore(ske/starterkit): bump the hub ref to the dual-mode e2e commit meshcloud/meshstack-hub#304 makes ske/ske-starterkit/e2e usable in foundation mode. The e2e unit sources the hub at the deployed ref, so the deployment has to move first. NOTE: pins the PR branch head. Re-pin to the squashed main commit before merge. Co-Authored-By: Claude Opus 5 --- foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl b/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl index 4e4032c..ef6a8c6 100644 --- a/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl +++ b/foundations/meshstack-trial/platforms/ske/starterkit/hub.hcl @@ -5,7 +5,7 @@ # the two definitions it creates child building blocks from), so it names their paths itself. locals { module = "ske/ske-starterkit" - git_ref = "b7ac0aa9818db730958f64e7ba0fdeecedcfbd4e" + git_ref = "2baf183189d4207ccbd22ff5d5b5334a7cbcc8fa" # Released, not draft — the e2e test orders against `version_latest_release`. bbd_draft = false From d869f22cd808ea7173eb54aaf8edbb62dac1c72f Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Thu, 3 Sep 2026 08:16:09 +0200 Subject: [PATCH 3/3] test(ske/starterkit): add the foundation e2e smoke test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The starter kit is what trial users actually try, and the chain behind it is long: meshProjects, SKE tenants, a Forgejo repository, a pipeline run and a cert-manager certificate. Nothing here verified that the deployed definition still produces a working app. Add an e2e unit next to the deployment: it sources the hub e2e module at the deployed ref and runs it in foundation mode, so it orders an ephemeral building block against the BBD this unit deployed rather than building its own. The hub test then asserts both app endpoints answer 200 over a valid, cert-manager-issued certificate. Run it with `terragrunt test` in e2e/, after `source setup-env.sh`. Each run consumes a Let's Encrypt certificate for a fresh hostname, which is a rate-limited quota — so run it deliberately, not on a tight schedule. Co-Authored-By: Claude Opus 5 --- .../ske/starterkit/e2e/terragrunt.hcl | 46 +++++++++++++++++++ .../platforms/ske/starterkit/outputs.tf | 8 ++++ 2 files changed, 54 insertions(+) create mode 100644 foundations/meshstack-trial/platforms/ske/starterkit/e2e/terragrunt.hcl create mode 100644 foundations/meshstack-trial/platforms/ske/starterkit/outputs.tf diff --git a/foundations/meshstack-trial/platforms/ske/starterkit/e2e/terragrunt.hcl b/foundations/meshstack-trial/platforms/ske/starterkit/e2e/terragrunt.hcl new file mode 100644 index 0000000..c860714 --- /dev/null +++ b/foundations/meshstack-trial/platforms/ske/starterkit/e2e/terragrunt.hcl @@ -0,0 +1,46 @@ +dependency "deployment" { + config_path = "../" +} + +# Hub coordinates: single source of truth in the sibling deployment's hub.hcl. +include "hub" { + path = "../hub.hcl" + expose = true +} + +terraform { + source = "git::https://github.com/meshcloud/meshstack-hub.git//modules/${include.hub.locals.module}/e2e?ref=${include.hub.locals.git_ref}" +} + +generate "provider" { + path = "provider.tf" + if_exists = "overwrite" + contents = <