Skip to content

Commit 9634f68

Browse files
committed
Update metrics, semver, versions
1 parent 085b7cc commit 9634f68

8 files changed

Lines changed: 214 additions & 0 deletions

File tree

docs/en/index.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
DataFlow Operator is a Kubernetes operator for streaming data between different data sources with support for message transformations.
44

5+
## Current Versions
6+
7+
| Component | Version |
8+
|-----------|---------|
9+
| DataFlow Operator | <span data-version-repo="dataflow-operator/dataflow">—</span> |
10+
| Helm Charts | <span data-version-repo="dataflow-operator/helm-charts">—</span> |
11+
| DataFlow MCP | <span data-version-repo="dataflow-operator/dataflow-mcp">—</span> |
12+
| DataFlow Web | <span data-version-repo="dataflow-operator/dataflow-web">—</span> |
13+
514
## Overview
615

716
DataFlow Operator allows you to declaratively define data flows between different sources and sinks through Kubernetes Custom Resource Definitions (CRD). The operator automatically manages the lifecycle of data flows, processes messages, and applies necessary transformations.

docs/en/metrics.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ serviceMonitor:
188188
189189
Import the dashboard from [grafana-dashboard.json](https://github.com/dataflow-operator/dataflow-operator/blob/main/monitoring/dashboards/grafana-dashboard.json) into Grafana to visualize metrics.
190190
191+
**Via Helm chart (ConfigMap):** Enable `monitoring.dashboard.enabled` when installing. The dashboard is bundled in the chart (`dashboards/grafana-dashboard.json`). Grafana sidecar (kube-prometheus-stack) picks up ConfigMaps with label `grafana_dashboard: "1"`.
192+
191193
The dashboard includes:
192194
- Message received/sent rate charts
193195
- Connector and transformer error charts
@@ -298,6 +300,8 @@ A PrometheusRule manifest with pre-configured alerts is available in the reposit
298300
kubectl apply -f monitoring/alerts/prometheusrule.yaml
299301
```
300302

303+
**Via Helm chart:** Enable `monitoring.prometheusRule.enabled` and set `monitoring.prometheusRule.additionalLabels` (e.g. `release: kube-prometheus-stack`) to match your Prometheus ruleSelector.
304+
301305
**Requirements:** Prometheus Operator (e.g. kube-prometheus-stack). The `release: kube-prometheus-stack` label must match your Prometheus instance's ruleSelector. Adjust the label if you use a different Prometheus deployment.
302306

303307
| Alert | Description |

docs/en/semver-release.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Automatic Versioning (Semver)
2+
3+
The project uses automatic versioning based on [Semantic Versioning](https://semver.org/) principles using [Conventional Commits](https://www.conventionalcommits.org/).
4+
5+
## How it works
6+
7+
1. **On push to `main`** the `Release (Semver)` workflow is triggered
8+
2. **semantic-release** analyzes commits since the last tag
9+
3. The next version is determined by commit types:
10+
- `fix:` or `fix(scope):`**patch** (1.0.0 → 1.0.1)
11+
- `feat:` or `feat(scope):`**minor** (1.0.0 → 1.1.0)
12+
- `BREAKING CHANGE:` in footer or `!` after type → **major** (1.0.0 → 2.0.0)
13+
4. `Chart.yaml`, `package.json` are updated, `CHANGELOG.md` is created
14+
5. A git tag `vX.Y.Z` and GitHub Release are created
15+
6. Build workflows build images with the new version
16+
17+
## Commit format
18+
19+
```
20+
<type>(<scope>): <description>
21+
22+
[optional body]
23+
24+
[optional footer]
25+
```
26+
27+
**Types:**
28+
- `feat` — new functionality (minor)
29+
- `fix` — bug fix (patch)
30+
- `docs` — documentation (no release)
31+
- `style` — formatting (no release)
32+
- `refactor` — refactoring (no release)
33+
- `test` — tests (no release)
34+
- `chore` — maintenance changes (no release)
35+
36+
**Examples:**
37+
```
38+
feat(api): add new endpoint for health check
39+
fix(processor): resolve memory leak in Kafka consumer
40+
docs: update installation guide
41+
```
42+
43+
**Breaking change:**
44+
```
45+
feat(api)!: remove deprecated endpoint
46+
47+
BREAKING CHANGE: /v1/legacy endpoint has been removed
48+
```
49+
50+
## Configuration files
51+
52+
- `.github/workflows/release.yml` — main release workflow
53+
- `.releaserc.json` — semantic-release configuration (plugins, Chart.yaml and package.json updates)
54+
55+
## Manual release
56+
57+
To manually create a release, create a tag:
58+
59+
```bash
60+
git tag v1.2.3
61+
git push origin v1.2.3
62+
```
63+
64+
Build workflows will build artifacts for this tag. For automatic Chart.yaml and package.json updates, use conventional commits and merge into main.

docs/javascripts/versions.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
(function () {
2+
const GITHUB_API = "https://api.github.com";
3+
const FALLBACK = "—";
4+
5+
function formatVersion(tagName) {
6+
if (!tagName) return FALLBACK;
7+
return tagName.startsWith("v") ? tagName.slice(1) : tagName;
8+
}
9+
10+
async function fetchLatestRelease(repo) {
11+
try {
12+
const res = await fetch(`${GITHUB_API}/repos/${repo}/releases/latest`, {
13+
headers: { Accept: "application/vnd.github+json" },
14+
});
15+
if (!res.ok) return null;
16+
const data = await res.json();
17+
return { tagName: data.tag_name, version: formatVersion(data.tag_name) };
18+
} catch {
19+
return null;
20+
}
21+
}
22+
23+
function setReleaseLink(el, repo, release) {
24+
el.textContent = "";
25+
if (release) {
26+
const a = document.createElement("a");
27+
a.href = `https://github.com/${repo}/releases/tag/${release.tagName}`;
28+
a.textContent = release.version;
29+
a.rel = "noopener noreferrer";
30+
a.target = "_blank";
31+
el.appendChild(a);
32+
} else {
33+
el.textContent = FALLBACK;
34+
}
35+
}
36+
37+
function updateVersions() {
38+
const elements = Array.from(document.querySelectorAll("[data-version-repo]"));
39+
const repos = [...new Set(elements.map((el) => el.getAttribute("data-version-repo")))];
40+
const cache = {};
41+
42+
repos.forEach((repo) => {
43+
fetchLatestRelease(repo).then((release) => {
44+
cache[repo] = release;
45+
elements
46+
.filter((el) => el.getAttribute("data-version-repo") === repo)
47+
.forEach((el) => setReleaseLink(el, repo, release));
48+
});
49+
});
50+
}
51+
52+
if (document.readyState === "loading") {
53+
document.addEventListener("DOMContentLoaded", updateVersions);
54+
} else {
55+
updateVersions();
56+
}
57+
})();

docs/ru/index.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
DataFlow Operator - это Kubernetes оператор для потоковой передачи данных между различными источниками данных с поддержкой трансформаций сообщений.
44

5+
## Текущие версии
6+
7+
| Компонент | Версия |
8+
|-----------|--------|
9+
| DataFlow Operator | <span data-version-repo="dataflow-operator/dataflow">—</span> |
10+
| Helm Charts | <span data-version-repo="dataflow-operator/helm-charts">—</span> |
11+
| DataFlow MCP | <span data-version-repo="dataflow-operator/dataflow-mcp">—</span> |
12+
| DataFlow Web | <span data-version-repo="dataflow-operator/dataflow-web">—</span> |
13+
514
## Обзор
615

716
DataFlow Operator позволяет декларативно определять потоки данных между различными источниками и приемниками через Kubernetes Custom Resource Definitions (CRD). Оператор автоматически управляет жизненным циклом потоков данных, обрабатывает сообщения и применяет необходимые трансформации.

docs/ru/metrics.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ serviceMonitor:
188188
189189
Импортируйте дашборд из файла [grafana-dashboard.json](https://github.com/dataflow-operator/monitoring/blob/main/dashboards/grafana-dashboard.json) в Grafana для визуализации метрик.
190190
191+
**Через Helm chart (ConfigMap):** Включите `monitoring.dashboard.enabled` при установке. Дашборд входит в chart (`dashboards/grafana-dashboard.json`). Grafana sidecar (kube-prometheus-stack) подхватывает ConfigMap с меткой `grafana_dashboard: "1"`.
192+
191193
Дашборд включает:
192194
- Графики количества полученных/отправленных сообщений
193195
- Графики ошибок в коннекторах и трансформерах
@@ -275,6 +277,8 @@ histogram_quantile(0.99, sum(rate(dataflow_transformer_duration_seconds_bucket[5
275277
kubectl apply -f monitoring/alerts/prometheusrule.yaml
276278
```
277279

280+
**Через Helm chart:** Включите `monitoring.prometheusRule.enabled` и задайте `monitoring.prometheusRule.additionalLabels` (например, `release: kube-prometheus-stack`) в соответствии с ruleSelector вашего Prometheus.
281+
278282
**Требования:** Prometheus Operator (например, kube-prometheus-stack). Метка `release: kube-prometheus-stack` должна совпадать с ruleSelector вашего Prometheus. Измените метку, если используете другой Prometheus.
279283

280284
| Алерт | Описание |

docs/ru/semver-release.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Автоматическое версионирование (Semver)
2+
3+
Проект использует автоматическое версионирование по принципу [Semantic Versioning](https://semver.org/) на основе [Conventional Commits](https://www.conventionalcommits.org/).
4+
5+
## Как это работает
6+
7+
1. **При push в `main`** запускается workflow `Release (Semver)`
8+
2. **semantic-release** анализирует коммиты с последнего тега
9+
3. По типу коммитов определяется следующая версия:
10+
- `fix:` или `fix(scope):`**patch** (1.0.0 → 1.0.1)
11+
- `feat:` или `feat(scope):`**minor** (1.0.0 → 1.1.0)
12+
- `BREAKING CHANGE:` в footer или `!` после типа → **major** (1.0.0 → 2.0.0)
13+
4. Обновляются `Chart.yaml`, `package.json`, создаётся `CHANGELOG.md`
14+
5. Создаётся git-тег `vX.Y.Z` и GitHub Release
15+
6. Build workflows собирают образы с новой версией
16+
17+
## Формат коммитов
18+
19+
```
20+
<type>(<scope>): <description>
21+
22+
[optional body]
23+
24+
[optional footer]
25+
```
26+
27+
**Типы:**
28+
- `feat` — новая функциональность (minor)
29+
- `fix` — исправление бага (patch)
30+
- `docs` — документация (без релиза)
31+
- `style` — форматирование (без релиза)
32+
- `refactor` — рефакторинг (без релиза)
33+
- `test` — тесты (без релиза)
34+
- `chore` — служебные изменения (без релиза)
35+
36+
**Примеры:**
37+
```
38+
feat(api): add new endpoint for health check
39+
fix(processor): resolve memory leak in Kafka consumer
40+
docs: update installation guide
41+
```
42+
43+
**Breaking change:**
44+
```
45+
feat(api)!: remove deprecated endpoint
46+
47+
BREAKING CHANGE: /v1/legacy endpoint has been removed
48+
```
49+
50+
## Файлы конфигурации
51+
52+
- `.github/workflows/release.yml` — основной release workflow
53+
- `.releaserc.json` — конфигурация semantic-release (плагины, обновление Chart.yaml, package.json)
54+
55+
## Ручной релиз
56+
57+
Для ручного создания релиза создайте тег:
58+
59+
```bash
60+
git tag v1.2.3
61+
git push origin v1.2.3
62+
```
63+
64+
Build workflows соберут артефакты для этого тега. Для автоматического обновления Chart.yaml и package.json используйте conventional commits и merge в main.

mkdocs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ plugins:
88
- search
99
- mermaid2
1010

11+
extra_javascript:
12+
- javascripts/versions.js
13+
1114
theme:
1215
name: material
1316
language: en

0 commit comments

Comments
 (0)