Feature/runner e2e test#201
Conversation
Scorecard Check
📊 meshstack-hub Module Scorecard
📋 Per-Module Category SummaryScore per category per building block.
Core Structure — ✅ all passingBasic module file structure and documentation — applies to 1 modules
Core Structure — Summary
Integration — ✅ all passingmeshstack_integration.tf conventions — applies to 1 modules
Integration — Summary
Azure Backplane — not applicableAzure UAMI-based automation principal conventions — applies to 0 modules No applicable modules. STACKIT Backplane — not applicableSTACKIT WIF-based automation principal conventions — applies to 0 modules No applicable modules. Testing — ✅ all passingEnd-to-end test coverage — applies to 1 modules
Testing — Summary
|
|
👋 Hi @Jelledb! This PR has been linked to the Feature Shipping Tracker: BuildingBlockRunner API (meshBuildingBlockRunner meshObject) (meshcloud/janny#1025) under DoD item 6 (Reference Examples Updated). The noop backplane for Google Cloud Run and the e2e runner test you are adding here directly address the open meshstack-hub example we have been tracking for the self-hosted runner workflow. 🎉 Merging this will help close out that DoD item. |
|
This pull request is automatically being deployed by Amplify Hosting (learn more). |
There was a problem hiding this comment.
Pull request overview
This PR extends the meshstack/noop building block to support dispatching runs to a dedicated meshStack “building block runner” and adds an E2E test fixture that provisions a Cloud Run–hosted runner backplane and executes the noop building block against it.
Changes:
- Add optional
runner_refwiring to the noop building block definition (version_spec.runner_ref). - Introduce a new GCP Cloud Run “backplane” module that provisions secrets, an API key, and registers a meshStack runner.
- Add a new E2E runner test module +
tftest.hclrun that provisions the backplane and asserts noop run outputs.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| modules/meshstack/noop/meshstack_integration.tf | Adds optional runner_ref variable and forwards it into the BBD version spec. |
| modules/meshstack/noop/e2e/tests/building_block_noop_runner_hub.tftest.hcl | Adds a new terraform test run to validate noop execution via a custom runner module. |
| modules/meshstack/noop/e2e/runner/variables.tf | Defines inputs for the runner E2E module (test context, GCP, meshStack endpoint). |
| modules/meshstack/noop/e2e/runner/terraform.tf | Declares provider requirements for the runner E2E module. |
| modules/meshstack/noop/e2e/runner/provider.tf | Configures providers for the runner E2E module (currently only Google). |
| modules/meshstack/noop/e2e/runner/main.tf | Provisions the backplane + noop module and triggers a building block run for assertions. |
| modules/meshstack/noop/backplane/versions.tf | Introduces Terraform/provider version constraints for the backplane module. |
| modules/meshstack/noop/backplane/variables.tf | Defines backplane inputs (workspace, endpoint, runner naming, GCP settings). |
| modules/meshstack/noop/backplane/runner-config.yml | Runner config template rendered into Secret Manager for Cloud Run consumption. |
| modules/meshstack/noop/backplane/README.md | Documents the new Cloud Run runner backplane module and its outputs. |
| modules/meshstack/noop/backplane/provider.tf | Configures Google + meshStack providers for the backplane module. |
| modules/meshstack/noop/backplane/outputs.tf | Exposes runner_ref and Cloud Run service URL outputs. |
| modules/meshstack/noop/backplane/main.tf | Provisions TLS keypair, meshStack API key, secrets, IAM bindings, Cloud Run service, and runner registration. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "MANAGED_BUILDINGBLOCKRUN_LIST", | ||
| "MANAGED_BUILDINGBLOCKRUN_SAVE" | ||
| ] | ||
| expires_at = "2026-08-31" # TODO: this should be a variable? generated somehow |
| /** | ||
| provider "meshstack" { | ||
| endpoint = "https://federation.dev.meshcloud.io" | ||
| apikey = "761ca118-5801-424b-b839-1ea3b8866f57" | ||
| apisecret = "nyZG2oduo58aUWzvFtDYksuVGrZV25xK" | ||
| **/ |
| | Mount path | Content | | ||
| |------------------------------------|--------------------------------------------------------------------------------------------------------------------| | ||
| | `/app/runner-config.yml` | Rendered from `runner-config.yml` with `RUNNER_UUID`, `RUNNER_API_URL`, and `RUNNER_API_KEY_CLIENT_ID` substituted | | ||
| | `/app/runner-private.pem` | RSA 4096 private key (PEM) | | ||
| | `$MESHSTACK_CLIENT_SECRET` env var | meshStack API client secret | |
| ## Prerequisites | ||
|
|
||
| - The `cloudrun.googleapis.com` and `secretmanager.googleapis.com` APIs must be enabled in `gcp_project_id`. | ||
| - The service account identified by `gcp_cloud_run_service_account_email` must exist before applying. The backplane grants it `roles/secretmanager.secretAccessor` on the created secrets. |
| provider "google" { | ||
| project = var.gcp_project_id | ||
| region = var.gcp_region | ||
| } |
| @@ -0,0 +1,17 @@ | |||
| terraform { | |||
| required_version = ">= 1.0" | |||
No description provided.