{"id":30211050,"url":"https://github.com/kubeshop/testkube-backstage-plugin","last_synced_at":"2026-04-15T21:01:37.301Z","repository":{"id":306128502,"uuid":"1022241321","full_name":"kubeshop/testkube-backstage-plugin","owner":"kubeshop","description":"Plugin for exposing Testkube test execution results in the Backstage Developer Portal","archived":false,"fork":false,"pushed_at":"2025-09-10T12:43:05.000Z","size":5250,"stargazers_count":2,"open_issues_count":2,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-05T04:19:33.895Z","etag":null,"topics":["backstage","kubernetes","plugin","test-automation","testing"],"latest_commit_sha":null,"homepage":"https://testkube.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kubeshop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-18T17:40:38.000Z","updated_at":"2026-01-27T12:03:42.000Z","dependencies_parsed_at":"2025-09-10T14:37:54.089Z","dependency_job_id":null,"html_url":"https://github.com/kubeshop/testkube-backstage-plugin","commit_stats":null,"previous_names":["kubeshop/testkube-backstage-plugin"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kubeshop/testkube-backstage-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeshop%2Ftestkube-backstage-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeshop%2Ftestkube-backstage-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeshop%2Ftestkube-backstage-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeshop%2Ftestkube-backstage-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubeshop","download_url":"https://codeload.github.com/kubeshop/testkube-backstage-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubeshop%2Ftestkube-backstage-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30352871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backstage","kubernetes","plugin","test-automation","testing"],"created_at":"2025-08-13T20:31:29.580Z","updated_at":"2026-04-15T21:01:37.292Z","avatar_url":"https://github.com/kubeshop.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Testkube Backstage Plugin\n\nThis repository contains the official Testkube plugins for [Backstage](https://backstage.io):\n\n- **Testkube UI plugin** (`plugins/testkube`): adds a Testkube dashboard and an entity-level tests summary page to your Backstage frontend.\n- **Testkube backend plugin** (`plugins/testkube-backend`): exposes a `testkube` backend service that proxies requests to the Testkube API and provides additional metadata endpoints used by the UI plugin.\n\nThe `packages/app` and `packages/backend` folders contain an example Backstage app wired with these plugins for local development.\n\n## Repository layout\n\n- **Root Backstage app**\n  - `packages/app`: example Backstage frontend application.\n  - `packages/backend`: example Backstage backend using the new backend system.\n- **Plugins**\n  - `plugins/testkube`: Testkube UI (frontend) plugin.\n  - `plugins/testkube-backend`: Testkube backend plugin.\n\nFor detailed installation and configuration instructions, see:\n\n- **UI plugin**: `plugins/testkube/README.md`\n- **Backend plugin**: `plugins/testkube-backend/README.md`\n\n## Running the example app locally\n\nThis repo includes a full Backstage app you can use to try the Testkube plugins end‑to‑end.\n\n### Prerequisites\n\n- **Node.js** 20 or later.\n- A running **Testkube Standalone Agent**. See the Testkube documentation for [installation instructions](https://docs.testkube.io/articles/install/standalone-agent).\n- Access to a Kubernetes cluster where Testkube is running (for example via [Kind](https://kind.sigs.k8s.io/)).\n\nOptional but recommended for local testing:\n\n- Port‑forward the Testkube API:\n\n```bash\nkubectl port-forward svc/testkube-api-server -n testkube 8088:8088\n```\n\n### Configure Testkube connection\n\nIn `app-config.yaml`, configure the `testkube` section (a sensible local default is already present):\n\n```yaml\ntestkube:\n  apiUrl: 'http://localhost:8088'\n\n  # enterprise settings (optional)\n  # enterprise: true\n  # uiUrl: https://app.testkube.io\n  # organizations:\n  #   - id: \u003cyour-organization-id\u003e\n  #     apiKey: \u003cyour-api-key-with-only-read-access!!\u003e\n```\n\n### Start the Backstage example app\n\nFrom the repository root:\n\n```bash\nyarn install\nyarn start\n```\n\nThis will start both the frontend (on port `3000`) and backend (on port `7007`). The Testkube dashboard and entity pages are available in the example app once the plugins are loaded.\n\n### Troubleshooting GitHub auth locally\n\nIf you need to debug GitHub authentication instead of using guest auth locally:\n\n1. Create or update `app-config.local.yaml`:\n\n```yaml\napp:\n  signInPage: github\n\nauth:\n  environment: development\n  githubAccess:\n    allowedDomains:\n      - domain.example\n    whitelistedEmails:\n      - user@example.com\n  providers:\n    github:\n      development:\n        clientId: ${AUTH_GITHUB_CLIENT_ID}\n        clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}\n        signIn:\n          resolvers:\n            - resolver: domainUserProvisioning\n\ncatalog:\n  rules:\n    - allow: [Component, System, API, Resource, Location, User, Group]\n```\n\n2. Export GitHub OAuth credentials in your shell:\n\n```bash\nexport AUTH_GITHUB_CLIENT_ID=\u003cyour_client_id\u003e\nexport AUTH_GITHUB_CLIENT_SECRET=\u003cyour_client_secret\u003e\n```\n\n3. In your GitHub OAuth App, set callback URL to:\n\n```text\nhttp://localhost:7007/api/auth/github/handler/frame\n```\n\n4. Start the app:\n\n```bash\nyarn start\n```\n\n5. Verify effective frontend config (optional but useful):\n\n```bash\nyarn backstage-cli config:print --frontend --config app-config.yaml --config app-config.local.yaml\n```\n\nYou should see `app.signInPage: github` in the output. If not, stop and restart `yarn start` after updating config files.\n\nWhen changing `auth.githubAccess.allowedDomains` or `auth.githubAccess.whitelistedEmails`, restart the backend process to apply changes.\n\n## Using the plugins in your own Backstage instance\n\nIf you want to integrate Testkube into your own Backstage deployment, follow the plugin‑specific guides:\n\n- **UI plugin** setup: `plugins/testkube/README.md`\n- **Backend plugin** setup: `plugins/testkube-backend/README.md`\n\nThese READMEs cover installation, configuration, and how to add the Testkube dashboard and entity tabs to your own Backstage app.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeshop%2Ftestkube-backstage-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubeshop%2Ftestkube-backstage-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubeshop%2Ftestkube-backstage-plugin/lists"}