Reporting and maintenance GUI for Tekton DAG pipelines: trigger jobs, monitor runs, view test results, explore Git repos, and embed the Tekton Dashboard.
- frontend/ — Vue 3 SPA (Vite). Nav: Trigger, Monitor, Test results, Git, Dashboard.
- backend/ — Node (Express) API. Uses
kubectlto list PipelineRuns/TaskRuns and to create PipelineRuns (viagenerate-run.shor Kubernetes API).
- Node 18+
kubectlin PATH, configured for your cluster (e.g. Kind). Backend runskubectl get pipelinerunsetc.- Tekton Pipelines installed in the cluster (e.g.
tekton-pipelinesnamespace). - Optional: Tekton Dashboard for the Dashboard tab and "Open in Dashboard" links. From the repo root:
./scripts/install-tekton-dashboard.sh(install),./scripts/port-forward-tekton-dashboard.sh(then open http://localhost:9097),./scripts/uninstall-tekton-dashboard.sh(uninstall). SetVITE_DASHBOARD_URL=http://localhost:9097when building or in.env.
From this directory (or repo root):
cd reporting-gui/backend
npm install
npm startListens on http://localhost:4000. Environment:
- PORT — default 4000
- KUBECONFIG — optional;
kubectluses default - TEKTON_NAMESPACE — default
tekton-pipelines - REPO_ROOT — path to tekton-dag repo (for trigger script and stacks/ for repo list). Default: walk up from backend dir until a
stacks/folder is found. Set explicitly if the backend runs from a different layout. - GITHUB_TOKEN — optional but required for private repos. Used by
GET /api/repos/...andGET /api/prs(branches, tags, commits, PRs). Without it, private app repos are skipped and "Open PRs (all repos)" may show "All repos were skipped" or list only public repos.
cd reporting-gui/frontend
npm install
npm run devOpens at http://localhost:5173. In dev, Vite proxies /api to the backend (see vite.config.js). Optional:
- VITE_API_URL — if backend is elsewhere, set to full URL (e.g.
http://localhost:4000). Leave unset when using the dev proxy. - VITE_DASHBOARD_URL — base URL of Tekton Dashboard for the Dashboard tab iframe (e.g.
http://localhost:9097after port-forward). PipelineRun detail URL:{base}/#/namespaces/{namespace}/pipelineruns/{name}.
-
GET /api/health— health check -
GET /api/pipelineruns?limit=50&namespace=tekton-pipelines— list PipelineRuns -
GET /api/pipelineruns/:name— single PipelineRun -
GET /api/taskruns?pipelineRun=:name— TaskRuns for a PipelineRun -
GET /api/stacks— list stack files and apps (for trigger form) -
POST /api/trigger— create a PipelineRun (body: pipelineType, stack, app, prNumber?, gitUrl?, gitRevision?, imageRegistry?, versionOverrides?, buildImages?, storageClass?) -
GET /api/repos— list repos (platform + app repos from stacks) -
GET /api/repos/:owner/:repo/branches— GitHub branches (requires GITHUB_TOKEN for private repos) -
GET /api/repos/:owner/:repo/tags— GitHub tags -
GET /api/repos/:owner/:repo/commits— GitHub commits -
GET /api/repos/:owner/:repo/prs?state=open|closed|all— GitHub PRs (default open) -
GET /api/prs?state=open|closed|all— PRs across all repos (from stacks). Returnsitems,reposQueried,reposSkipped. Needs GITHUB_TOKEN for private repos.
- Restart the backend after pulling changes. The running process may not have the latest routes (e.g.
GET /api/prs). Stop the backend (Ctrl+C) and runnpm startagain fromreporting-gui/backend. - Set
GITHUB_TOKEN(env or.env) if your app repos are private. Without it, GitHub returns 404/401 and those repos are skipped; the GUI shows "Skipped N repo(s)" or "All repos were skipped". - Check API directly:
curl -s http://localhost:4000/api/reposshould list repos from stacks;curl -s "http://localhost:4000/api/prs?state=open"should return JSON withitems,reposQueried,reposSkipped. If you get HTML "Cannot GET /api/prs", the backend is old — restart it.
Ensure kubectl is configured for your Kind cluster (e.g. kubectl config use-context kind-kind or set KUBECONFIG). The backend runs in the same environment as your terminal; no in-cluster deployment is required for local dev.
For production, deploy the backend behind auth (e.g. token, OIDC) and RBAC so only authorized identities can create PipelineRuns. The GUI is intended for dev/Kind; document that production use requires securing the API and frontend.