Skip to content

fix(ske/ske-starterkit): provision dummy stackit-ai secret and use a valid DNS zone in e2e#217

Merged
grubmeshi merged 2 commits into
mainfrom
fix/ske-starterkit-smoke-e2e
Jul 3, 2026
Merged

fix(ske/ske-starterkit): provision dummy stackit-ai secret and use a valid DNS zone in e2e#217
grubmeshi merged 2 commits into
mainfrom
fix/ske-starterkit-smoke-e2e

Conversation

@grubmeshi

@grubmeshi grubmeshi commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

Problem

The ske/ske-starterkit e2e test failed on every smoke-test run. The starterkit app's deploy
job could not start its pods:

CreateContainerConfigError: secret "stackit-ai" not found

The app chart mounts a stackit-ai secret via envFrom, but the e2e test never provisioned it,
so helm upgrade --install --wait --atomic rolled the release back. Secondarily, dns_zone_name
was a bare resource name rather than a valid FQDN, so cert-manager rejected the ingress hostname.

Changes

  • fix: inject a dummy stackit-ai secret via the forgejo-connector's
    additional_kubernetes_secrets (smoke tests don't exercise real inference), and take
    dns_zone_name from test_context.dns_zone_name (the real meshcloud-dev.stackit.run zone).
  • test: probe the deployed dev + prod app endpoints — a data.external Python script GETs
    both app_link_dev/app_link_prod over TLS verified against the system trust store (retrying
    while cert-manager issues the cert) and the test asserts both return 200. Reaching SUCCEEDED
    alone doesn't prove the ingress serves traffic with a valid certificate; this does.

Validation

Applied locally against meshcloud-dev end-to-end (via task e2e:apply): composite BB reached
SUCCEEDED, app pods Running (dev 1/1, prod 2/2), and the probe returned 200 over verified TLS
for both endpoints (…-dev.meshcloud-dev.stackit.run and ….meshcloud-dev.stackit.run). Also
exercised in the full smoke-test CI matrix.

Cross-repo PRs

  • meshcloud/meshstack-smoke-test#31 — plumbs dns_zone_name via test_context, unifies e2e discovery, adds task e2e:apply/destroy
  • meshcloud/meshfed-release#10266 — expands the smoke-test-analysis debugging skill

…lid DNS zone in e2e

The ske-starterkit smoke test failed because the app deploy never became ready
and `helm --wait --atomic` rolled back:

- The app chart mounts a `stackit-ai` secret via envFrom (required), but the e2e
  never provisioned it, so pods stayed in CreateContainerConfigError
  ("secret \"stackit-ai\" not found"). Inject a dummy secret via the
  forgejo-connector's additional_kubernetes_secrets — smoke tests don't exercise
  real inference, they just need the secret to exist. (Static foundations like
  trial inject a real STACKIT model-serving token via their own ai.tf.)
- dns_zone_name was the zone's resource name ("meshcloud-dev-ske-starterkit"),
  not a valid FQDN, so cert-manager rejected the ingress hostname. Take it from
  test_context.dns_zone_name (meshcloud-dev.stackit.run) instead of hardcoding a
  dev-specific domain here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Scorecard Check

Scorecard run on commit b873f4abf6971709bb3afc416d9025491a164fa5 relative to origin/main

📊 meshstack-hub Module Scorecard

Generated: 2026-07-03 | Modules scanned: 1 | Categories: 5

📋 Per-Module Category Summary

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

Module Overall Core Structure Integration Azure Backplane STACKIT Backplane Testing
ske/ske-starterkit 🟢 95% 🟢 100% 🟢 100% n/a n/a 🟡 67%

⚠️ 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%
🔒 Provider versions use minimum constraint (>=) 1/1 🟢 100%
Integration — ✅ all passing

meshstack_integration.tf conventions — applies to 1 modules

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

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%
📋 version_spec.draft uses var.hub.bbd_draft 1/1 🟢 100%
🏷️ BBD metadata.tags forwards var.meshstack.tags 1/1 🟢 100%
📖 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
Azure Backplane — not applicable

Azure UAMI-based 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 🟡 67%

Testing — Summary

Emoji Criterion Coverage Status
⚙️ backplane/ directory (optional tier) 0/1 🔴 0%
🧪 e2e/ test directory exists 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-217.d1o16zfeoh2slu.amplifyapp.com

@grubmeshi grubmeshi force-pushed the fix/ske-starterkit-smoke-e2e branch from e161b4e to db48927 Compare July 3, 2026 07:08
…ver TLS

Reaching SUCCEEDED only proves the app was deployed, not that its ingress serves traffic with a
valid cert-manager-issued certificate. Add a data.external probe (probe_app_endpoints.py) that
GETs both app_link_dev and app_link_prod over TLS verified against the system trust store,
retrying while cert-manager issues the cert, and assert both return 200. Validated live against
meshcloud-dev: dev + prod both 200 over verified TLS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@grubmeshi grubmeshi force-pushed the fix/ske-starterkit-smoke-e2e branch from db48927 to 5caf7fd Compare July 3, 2026 07:12
@grubmeshi grubmeshi merged commit b35417e into main Jul 3, 2026
3 checks passed
@grubmeshi grubmeshi deleted the fix/ske-starterkit-smoke-e2e branch July 3, 2026 14:21
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