Why contribute?
When your pull request merges to
maximilianoPizarro/openshift-integration-operator,
GitHub Pages republishes docs/flow-catalog.json within minutes. Every cluster with the
operator installed loads that catalog from:
https://maximilianopizarro.github.io/openshift-integration-operator/flow-catalog.json
Users see your template in Integration Platform → Create IntegrationFlow → Browse templates after refreshing the modal. No Helm upgrade, no operator RC, no console-plugin image rebuild is required for catalog-only changes.
What to contribute
| Artifact | Purpose | Visible in cluster |
|---|---|---|
docs/flow-catalog.json |
Template catalog entry (console create form + Ready Flows Examples Catalog) | After GitHub Pages deploy |
k8s/examples/NN-*.yaml |
Runnable IntegrationFlow CR for Quick Try |
After oc apply |
| Both (recommended) | Template + one-click YAML for docs and CI | Catalog + manual apply |
Flow requirements
deploymentMode: EPHEMERALfor public-API demos (no Git, Tekton, or secrets)- Public HTTP APIs only — no API keys in the repository
- Camel components covered by
camel-worker-httporcamel-worker-full - Community flows in
publicapicategory must include anownerfield (GitHub username)
Catalog entry fields
| Field | Required | Example |
|---|---|---|
name | Yes | publicapi-open-meteo-weather |
owner | Yes (community) | your-github-username |
type | Yes | CAMEL_ROUTE |
pattern | Yes | Scheduled Public API Poll |
components | Yes | timer, https, jsonpath, choice |
description | Yes | One-line summary |
kaotoDesign | Yes | YAML route body (escaped in JSON) |
Step-by-step PR workflow
-
Fork and branch
git clone https://github.com/<your-user>/openshift-integration-operator.git cd openshift-integration-operator git checkout -b contrib/my-public-api-flow -
Add catalog entry — append to the
publicapicategory indocs/flow-catalog.jsonwith yourownerfield. -
Add runnable YAML — e.g.
k8s/examples/22-ephemeral-open-meteo-weather.yamlwith labelplatform.io/flow-owner: <owner>. -
Register validation — add your flow
nametoREQUIRES_OWNERinscripts/validate-ready-flows.js(same PR). -
Validate locally
bash scripts/prepare-flow-contribution.sh # or individually: node scripts/validate-ready-flows.js python3 scripts/validate-catalog.py -
Open PR to
mainwith checklist below and your GitHub username in the description.
PR checklist
- No operator RC — PR must not modify
src/,pom.xml,bundle/, orhelm/openshift-integration-operator/ - Owner set —
ownerin JSON andplatform.io/flow-ownerlabel in YAML - Validation passes —
bash scripts/prepare-flow-contribution.shexits 0 - Public API only — no secrets, tokens, or private endpoints
Reference example: Open-Meteo weather
The repository includes a complete community contribution you can copy:
publicapi-open-meteo-weather polls
Open-Meteo (no API key) every 2 minutes and logs temperature alerts for Madrid.
oc apply -f k8s/examples/22-ephemeral-open-meteo-weather.yaml
oc logs -f deploy/iflow-ephemeral-open-meteo-weather-worker -n openshift-integration
Browse the template on Ready Flows Examples Catalog — look for the @owner badge.
Automate with GitHub Actions
Workflow Contribute flow example (Open-Meteo PR) demonstrates validation and PR creation.
Run it manually from Actions → workflow_dispatch:
- owner — your GitHub username (required)
- dry_run —
trueto validate only,falseto open a PR
# Local equivalent
bash scripts/prepare-flow-contribution.sh --owner your-github-username
bash scripts/prepare-flow-contribution.sh
See .github/workflows/contrib-flow-example.yml. Forks can copy this workflow; upstream PRs are typically opened manually from your fork.
After a successful merge
Document and verify the publication path:
- GitHub Pages workflow deploys
docs/(usually within 2–5 minutes) - Confirm the catalog contains your flow:
curl -s https://maximilianopizarro.github.io/openshift-integration-operator/flow-catalog.json \ | python3 -c "import sys,json; d=json.load(sys.stdin); \ f=[x for c in d if c['id']=='publicapi' for x in c['flows'] if x['name']=='publicapi-open-meteo-weather']; \ print(f[0]['owner'] if f else 'NOT FOUND')" - In OpenShift Console: Integration Platform → Integration Flows → Create → Browse templates → search your flow name
- Optional cluster test:
oc apply -f k8s/examples/22-ephemeral-open-meteo-weather.yaml
Running phase — all without upgrading the operator Helm release.
Contributing operator code
Changes to the Java operator, CRDs, or Helm chart follow a separate process (fork, mvn test, PR).
Those changes do require a new operator image release. Flow catalog contributions do not.
See the README Contributing section for operator development.