Pipelines
The Pipelines page (/pipelines) gives you one place to follow CI activity for your repositories — whether it runs in GitHub Actions, GitLab CI or any other CI system. Your CI reports into KubeOpera; KubeOpera shows each run, stage by stage, next to the apps it deploys.
Pipelines are private to your tenant. KubeOpera identifies your tenant from your session, so no one else can see or write to your pipelines.
How pipelines get created
- Automatically — when you deploy an app from a GitHub repository with the Deploy Application wizard, KubeOpera registers a pipeline and build configuration for it, and the build reports its progress there.
- Manually — with Create Pipeline, for any repository whose CI you want to track.
Create a pipeline
- Open Pipelines → Create Pipeline.
- Choose the provider (GitHub or GitLab) and enter the repository exactly as the provider names it —
owner/repofor GitHub,group/projectfor GitLab. KubeOpera uses this to match incoming webhooks to your pipeline. - Select Create.
The confirmation panel shows two things once:
- the webhook URL to add to your repository (
https://cicd.kubeopera.io/webhook/githubor/webhook/gitlab), with its webhook secret; and - a reporting token your CI uses to report runs and stages.
Copy the webhook secret and reporting token now — they can't be displayed again. If you lose them, rotate them from the pipeline's settings.
Connect your CI
Option 1: Webhooks
Add the webhook URL and secret to your repository, triggered on push. Each push creates a run in KubeOpera. Every webhook is verified with its signature (GitHub X-Hub-Signature-256, GitLab X-Gitlab-Token), so only your repository can create runs.
Option 2: Report from your CI job
Use the reporting token to create and update runs directly. The confirmation panel shows these snippets with your pipeline ID and token filled in.
Your CI creates the run:
RUN_ID=$(curl -s -X POST https://cicd.kubeopera.io/api/v1/pipelines/<id>/runs \
-H "X-Pipeline-Token: <token>" -H "Content-Type: application/json" \
-d '{"commit":"'"$GIT_SHA"'","branch":"'"$GIT_BRANCH"'","trigger_type":"manual"}' | jq -r .id)
curl -s -X PATCH https://cicd.kubeopera.io/api/v1/runs/$RUN_ID \
-H "X-Pipeline-Token: <token>" -H "Content-Type: application/json" \
-d '{"status":"success","stages":[{"name":"build","status":"success"}]}'
Or attach to the run a webhook already created:
RUN_ID=$(curl -s "https://cicd.kubeopera.io/api/v1/pipelines/<id>/runs/find?commit=$GIT_SHA" \
-H "X-Pipeline-Token: <token>" | jq -r .id)
Reporting useful failure detail
Each stage you report can include:
| Field | Use it for |
|---|---|
error_message | A one-line summary of what failed. |
log_excerpt | The last ~20 lines or the failing assertion — not the whole log. |
exit_code | The step's exit code. |
log_url | A link to the full log. In GitHub Actions: ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}. |
Reporting the same stage name again updates that stage, so you can send running when a stage starts and success or failed when it ends.
Read the dashboard
Summary cards
Total Runs, Success Rate, Failed Runs and Avg Duration — for all your pipelines over the last 7 days, or for one pipeline using the selector above the cards.
Runs and run detail
Select a run on the left to see its detail on the right. The detail view includes a timeline: one bar per stage, placed and sized by when it started and finished, colored by status. Failed stages show their error message, log excerpt and a link to the full log.
Builds keep reporting when you close the browser
For apps deployed from source, build-service reports the build's progress server-side. You can close the wizard — or your browser — mid-build; the run still completes in the Pipelines dashboard with full stage detail.
Next steps
- App Creation Flow — deploy from a repository and get a pipeline automatically.
- CI/CD gateway — the service behind this page, its API and events.
- Webhooks — webhook payloads and verification in detail.