You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2026/10/23 06:15:13 UTC
(doris-website) branch master updated: [i18n](ru) Translate 33 documentation pages (T09 20261023T022355Z-036) (#4474)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new f40fb40655f9 [i18n](ru) Translate 33 documentation pages (T09 20261023T022355Z-036) (#4474)
f40fb40655f9 is described below
commit f40fb40655f9d9179391d6d895d77118505e4a49
Author: Mingyu Chen (Rayner) <mo...@gmail.com>
AuthorDate: Fri Oct 23 07:15:06 2026 +0100
[i18n](ru) Translate 33 documentation pages (T09 20261023T022355Z-036) (#4474)
Translate 33 English documentation pages into Russian with local Codex.
Source: `87417f1fefb604bf8a98d1fea0ace4beaccc4b2c`. Model:
`gpt-6.1-sol`; reasoning effort: `xhigh`.
These are machine translations requiring Russian proofreading. Each
document has its own state shard.
Retry summary: 30/33 generated pages passed on the first attempt; 0
pages copied across versions; 37 total model calls. Prompt rules used:
comments, inline-code, code-blocks, numbers, metadata, headings,
glossary.
| Source | Operation | Model calls | Result |
| --- | --- | ---: | --- |
|
`community/developer-guide/data-source-extension/trino-connector-developer-guide.md`
| Translate | 1 | Local gates passed |
| `community/developer-guide/debug-tool.md` | Translate | 3 | Local
gates passed |
| `community/developer-guide/docker-dev.md` | Translate | 1 | Local
gates passed |
| `community/developer-guide/fe-idea-dev.md` | Translate | 1 | Local
gates passed |
| `community/developer-guide/fe-profiler.md` | Translate | 1 | Local
gates passed |
| `community/developer-guide/fe-vscode-dev.md` | Translate | 2 | Local
gates passed |
| `community/developer-guide/java-format-code.md` | Translate | 1 |
Local gates passed |
| `community/developer-guide/pipeline-tracing.md` | Translate | 1 |
Local gates passed |
| `community/developer-guide/regression-testing.md` | Translate | 2 |
Local gates passed |
| `community/how-to-contribute/community-badges.mdx` | Translate | 1 |
Local gates passed |
| `community/how-to-contribute/contribute-doc.md` | Translate | 1 |
Local gates passed |
| `community/how-to-contribute/docs-format-specification.md` | Translate
| 1 | Local gates passed |
| `community/how-to-contribute/pull-request.md` | Translate | 1 | Local
gates passed |
| `community/how-to-contribute/review-and-ci.md` | Translate | 1 | Local
gates passed |
| `community/join-community.md` | Translate | 1 | Local gates passed |
| `community/release-and-verify/release-complete.md` | Translate | 1 |
Local gates passed |
| `community/release-and-verify/release-doris-connectors.md` | Translate
| 1 | Local gates passed |
| `community/release-and-verify/release-doris-core-with-ai-agent.md` |
Translate | 1 | Local gates passed |
| `community/release-and-verify/release-doris-core.md` | Translate | 1 |
Local gates passed |
| `community/release-and-verify/release-doris-manager.md` | Translate |
1 | Local gates passed |
| `community/release-and-verify/release-doris-sdk.md` | Translate | 1 |
Local gates passed |
| `community/release-and-verify/release-doris-shade.md` | Translate | 1
| Local gates passed |
| `community/release-and-verify/release-prepare.md` | Translate | 1 |
Local gates passed |
| `community/release-and-verify/release-verify.md` | Translate | 1 |
Local gates passed |
| `community/release-and-verify/release-versioning.md` | Translate | 1 |
Local gates passed |
| `community/security.md` | Translate | 1 | Local gates passed |
| `community/source-install/compilation-arm.mdx` | Translate | 1 | Local
gates passed |
| `community/source-install/compilation-linux.md` | Translate | 1 |
Local gates passed |
| `community/source-install/compilation-mac.md` | Translate | 1 | Local
gates passed |
| `community/source-install/compilation-win.md` | Translate | 1 | Local
gates passed |
| `community/source-install/compilation-with-docker.md` | Translate | 1
| Local gates passed |
| `community/source-install/compilation-with-ldb-toolchain.md` |
Translate | 1 | Local gates passed |
| `community/team.md` | Translate | 1 | Local gates passed |
Validation:
- scope-ru: passed
- configuration-ru: passed
- state-protection-ru: passed
- syntax-ru: passed
- internal-links-ru: passed
Local checks reuse translation state, protection, Markdown/MDX syntax
and internal-link functions for Russian files.
Copied pages skip content, syntax and link rechecks; only file scope,
state identity and hashes are verified.
Local validation does not build the website or run the CI test suites.
GitHub CI runs after a PR is created.
Failures are fed into the next translation prompt, with at most three
total model attempts per page.
The third translation is retained when local checks still fail, as
requested; this does not waive GitHub CI.
Retained warnings:
None.
Remaining blocking local checks: none.
This batch is independent of other translation PRs. The runner continues
without waiting for merge.
<!-- russian-local-t09 source=87417f1fefb604bf8a98d1fea0ace4beaccc4b2c
-->
Co-authored-by: morningman <mo...@apache.org>
---
.../trino-connector-developer-guide.md | 234 +++++
.../current/developer-guide/debug-tool.md | 606 +++++++++++++
.../current/developer-guide/docker-dev.md | 211 +++++
.../current/developer-guide/fe-idea-dev.md | 248 ++++++
.../current/developer-guide/fe-profiler.md | 95 ++
.../current/developer-guide/fe-vscode-dev.md | 137 +++
.../current/developer-guide/java-format-code.md | 126 +++
.../current/developer-guide/pipeline-tracing.md | 111 +++
.../current/developer-guide/regression-testing.md | 983 +++++++++++++++++++++
.../current/how-to-contribute/community-badges.mdx | 926 +++++++++++++++++++
.../current/how-to-contribute/contribute-doc.md | 440 +++++++++
.../how-to-contribute/docs-format-specification.md | 371 ++++++++
.../current/how-to-contribute/pull-request.md | 302 +++++++
.../current/how-to-contribute/review-and-ci.md | 192 ++++
.../current/join-community.md | 75 ++
.../current/release-and-verify/release-complete.md | 238 +++++
.../release-and-verify/release-doris-connectors.md | 241 +++++
.../release-doris-core-with-ai-agent.md | 546 ++++++++++++
.../release-and-verify/release-doris-core.md | 380 ++++++++
.../release-and-verify/release-doris-manager.md | 378 ++++++++
.../release-and-verify/release-doris-sdk.md | 262 ++++++
.../release-and-verify/release-doris-shade.md | 239 +++++
.../current/release-and-verify/release-prepare.md | 410 +++++++++
.../current/release-and-verify/release-verify.md | 208 +++++
.../release-and-verify/release-versioning.md | 106 +++
.../current/security.md | 69 ++
.../current/source-install/compilation-arm.mdx | 712 +++++++++++++++
.../current/source-install/compilation-linux.md | 132 +++
.../current/source-install/compilation-mac.md | 231 +++++
.../current/source-install/compilation-win.md | 112 +++
.../source-install/compilation-with-docker.md | 211 +++++
.../compilation-with-ldb-toolchain.md | 217 +++++
.../current/team.md | 64 ++
.../trino-connector-developer-guide.json | 37 +
.../current/developer-guide/debug-tool.json | 55 ++
.../current/developer-guide/docker-dev.json | 37 +
.../current/developer-guide/fe-idea-dev.json | 37 +
.../current/developer-guide/fe-profiler.json | 37 +
.../current/developer-guide/fe-vscode-dev.json | 58 ++
.../current/developer-guide/java-format-code.json | 37 +
.../current/developer-guide/pipeline-tracing.json | 37 +
.../developer-guide/regression-testing.json | 46 +
.../how-to-contribute/community-badges.json | 37 +
.../current/how-to-contribute/contribute-doc.json | 37 +
.../docs-format-specification.json | 37 +
.../current/how-to-contribute/pull-request.json | 37 +
.../current/how-to-contribute/review-and-ci.json | 37 +
.../ru/pages/community/current/join-community.json | 37 +
.../release-and-verify/release-complete.json | 37 +
.../release-doris-connectors.json | 37 +
.../release-doris-core-with-ai-agent.json | 37 +
.../release-and-verify/release-doris-core.json | 37 +
.../release-and-verify/release-doris-manager.json | 37 +
.../release-and-verify/release-doris-sdk.json | 37 +
.../release-and-verify/release-doris-shade.json | 37 +
.../release-and-verify/release-prepare.json | 37 +
.../current/release-and-verify/release-verify.json | 37 +
.../release-and-verify/release-versioning.json | 37 +
.../state/ru/pages/community/current/security.json | 37 +
.../current/source-install/compilation-arm.json | 37 +
.../current/source-install/compilation-linux.json | 37 +
.../current/source-install/compilation-mac.json | 37 +
.../current/source-install/compilation-win.json | 37 +
.../source-install/compilation-with-docker.json | 37 +
.../compilation-with-ldb-toolchain.json | 37 +
.../state/ru/pages/community/current/team.json | 37 +
66 files changed, 11082 insertions(+)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/data-source-extension/trino-connector-developer-guide.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/data-source-extension/trino-connector-developer-guide.md
new file mode 100644
index 000000000000..d134561c4b34
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/data-source-extension/trino-connector-developer-guide.md
@@ -0,0 +1,234 @@
+---
+title: Руководство разработчика по интеграции Trino Connector
+language: ru
+description: "Как интегрировать Trino Connector с Apache Doris: компиляция, настройка и примеры для Kafka / Hive / MySQL / BigQuery."
+keywords:
+ - Apache Doris Trino Connector
+ - trino-connector Catalog
+ - компиляция плагинов Trino
+ - trino_connector_plugin_dir
+ - Kafka Connector
+ - Hive Connector
+ - MySQL Connector
+ - BigQuery Connector
+ - расширение поддержки источников данных
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Extension development -->
+<!-- Applicable scenario: Data source extension / Catalog integration -->
+
+# Руководство разработчика по интеграции Trino Connector {#trino-connector-integration-developer-guide}
+
+Этот документ предназначен для разработчиков, которым необходимо интегрировать плагины Trino Connector с Apache Doris. В нём описано, как скомпилировать плагин Connector, настроить FE / BE, а также создать и использовать Catalog типа `trino-connector`. Основным примером служит Kafka Connector; дополнительно приведены примеры настройки распространённых плагинов, таких как Hive, MySQL и BigQuery.
+
+## Содержание {#contents}
+
+- [Общие сведения](#background): когда использовать фреймворк Trino Connector
+- [Шаг 1 - Компиляция плагина Connector](#step-1---compile-the-connector-plugin): на примере Kafka
+- [Шаг 2 - Настройка FE / BE](#step-2---configure-fe--be): каталог плагинов и отложенная загрузка
+- [Шаг 3 - Создание и использование Catalog](#step-3---create-and-use-the-catalog): `CREATE CATALOG` и сопоставление свойств
+- [Примеры настройки распространённых плагинов Connector](#common-connector-configuration-examples): Hive / MySQL / Kafka / BigQuery
+- [Частые вопросы и типичные ошибки](#faq-and-common-errors)
+
+---
+
+## Общие сведения {#background}
+
+<!-- Knowledge type: Architecture decision -->
+
+Начиная с версии 3.0, Doris поддерживает интеграцию с плагинами Trino Connector. Благодаря богатой экосистеме плагинов Trino Connector и поддержке Catalog типа `trino-connector` Doris может подключаться к большему числу источников данных.
+
+| Сценарий | Рекомендуемый подход |
+|------|----------|
+| Популярные источники данных, такие как Hive, Iceberg, Hudi, Paimon, JDBC | В первую очередь используйте **встроенный Catalog** Doris: он обеспечивает более высокую производительность, стабильность и совместимость |
+| Другие источники данных, с которыми Doris пока не интегрирован | Используйте **фреймворк совместимости с Trino Connector**, чтобы быстро подключаться к дополнительным источникам данных |
+
+> Примечание: Trino — программное обеспечение с открытым исходным кодом под лицензией Apache License 2.0, предоставляемое [Trino Software Foundation](https://trino.io/foundation). Дополнительная информация доступна на [официальном сайте Trino](https://trino.io/docs/current/).
+
+---
+
+## Шаг 1 - Компиляция плагина Connector {#step-1---compile-the-connector-plugin}
+
+<!-- Knowledge type: Procedure -->
+
+Trino не предоставляет официальных скомпилированных плагинов Connector, поэтому необходимые плагины Connector нужно скомпилировать самостоятельно.
+
+> Примечание: сейчас Doris использует версию 435 пакета `trino-main`, поэтому рекомендуется компилировать версию 435 плагина Connector. У плагинов Connector других версий могут возникнуть проблемы совместимости. Если вы столкнётесь с проблемами, сообщите о них сообществу Apache Doris.
+
+Рассмотрим плагин Kafka:
+
+```bash
+# 1. Clone the Trino source code
+git clone https://github.com/trinodb/trino.git
+
+# 2. Check out version 435
+git checkout 435
+
+# 3. Enter the Kafka plugin source directory
+cd trino/plugin/trino-kafka
+
+# 4. Compile the Kafka plugin
+mvn clean install -DskipTests
+```
+
+После компиляции в `target/trino-kafka-435` будут находиться файлы плагина; этот каталог создаётся внутри `trino/plugin/trino-kafka/`.
+
+> Примечание: каждый плагин Connector представляет собой **подкаталог**, а не отдельный jar-файл.
+
+---
+
+## Шаг 2 - Настройка FE / BE {#step-2---configure-fe--be}
+
+<!-- Knowledge type: Configuration parameters -->
+
+После подготовки плагина Kafka Connector необходимо указать каталог плагинов в `fe.conf` и `be.conf`, чтобы Doris мог найти плагин.
+
+Если подготовленный на предыдущем шаге каталог `trino-kafka-435` размещён в `/path/to/connectors`, настройте параметры следующим образом:
+
+| Файл | Параметр конфигурации | Значение по умолчанию |
+|------|--------|--------|
+| `fe.conf` | `trino_connector_plugin_dir=/path/to/connectors` | `${Doris_HOME}/fe/connectors` |
+| `be.conf` | `trino_connector_plugin_dir=/path/to/connectors` | `${Doris_HOME}/be/connectors` |
+
+> **Отложенная загрузка**: Doris загружает плагины Trino Connector по мере необходимости. При первом использовании Catalog типа `trino-connector` перезапускать узлы FE / BE **не требуется**: Doris загрузит плагин автоматически. Однако плагины загружаются только один раз, поэтому **после изменения содержимого каталога плагинов необходимо перезапустить узлы FE / BE**, чтобы изменения вступили в силу.
+
+---
+
+## Шаг 3 - Создание и использование Catalog {#step-3---create-and-use-the-catalog}
+
+<!-- Knowledge type: Procedure -->
+
+### 3.1 Создание Catalog Trino-Connector {#31-create-a-trino-connector-catalog}
+
+```sql
+create catalog kafka_tpch properties (
+ "type"="trino-connector",
+ -- The following four properties come from Trino and match the properties in Trino's etc/catalog/kafka.properties, but each must be prefixed with "trino."
+ "trino.connector.name"="kafka",
+ "trino.kafka.table-names"="tpch.customer,tpch.orders,tpch.lineitem,tpch.part,tpch.partsupp,tpch.supplier,tpch.nation,tpch.region",
+ "trino.kafka.nodes"="localhost:9092",
+ "trino.kafka.table-description-dir" = "/mnt/datadisk1/fangtiewei"
+);
+```
+
+Описание свойств:
+
+| Свойство | Описание |
+|------|------|
+| `type` | Тип Catalog. Необходимо задать значение `trino-connector` |
+| `trino.connector.name` | Имя Trino Connector, например `kafka` |
+| `trino.kafka.table-names` и другие | Эти свойства взяты из Trino, ко всем добавлен префикс `trino.`. См. [Kafka Connector](https://trino.io/docs/current/connector/kafka.html#configuration) |
+
+Для разных плагинов Connector требуются разные свойства. См. раздел [Connectors](https://trino.io/docs/current/connector.html#connector--page-root) в официальной документации Trino.
+
+### 3.2 Использование Catalog {#32-use-the-catalog}
+
+После создания Catalog Trino-Connector работа с ним ничем не отличается от работы с любым другим Catalog. Переключитесь на него командой `switch kafka_tpch` и выполните запрос к соответствующему источнику данных:
+
+```sql
+switch kafka_tpch;
+show databases;
+select * from tpch.customer limit 10;
+```
+
+---
+
+## Примеры настройки распространённых плагинов Connector {#common-connector-configuration-examples}
+
+### Hive {#hive}
+
+```sql
+create catalog emr_hive properties (
+ "type"="trino-connector",
+ "trino.connector.name"="hive",
+ "trino.hive.metastore.uri"="thrift://ip:port",
+ "trino.hive.config.resources"="/path/to/core-site.xml,/path/to/hdfs-site.xml"
+);
+```
+
+> Примечания для плагина Hive:
+> - Необходимо указать пользователя Hadoop в параметрах JVM: `-DHADOOP_USER_NAME=user`. Его можно добавить в конец параметра `JAVA_OPTS_FOR_JDK_17` в `fe.conf` / `be.conf`, например `JAVA_OPTS_FOR_JDK_17="...-DHADOOP_USER_NAME=user"`.
+
+### MySQL {#mysql}
+
+```sql
+create catalog trino_mysql properties (
+ "type"="trino-connector",
+ "trino.connector.name"="mysql",
+ "trino.connection-url" = "jdbc:mysql://ip:port",
+ "trino.connection-user" = "user",
+ "trino.connection-password" = "password"
+);
+```
+
+> Примечания для плагина MySQL:
+> - Если возникает ошибка `Unknown or incorrect time zone: 'Asia/Shanghai'`, добавьте `-Duser.timezone=Etc/GMT-8` к параметрам запуска JVM. Его можно добавить в конец параметра `JAVA_OPTS_FOR_JDK_17` в `fe.conf` / `be.conf`.
+
+### Kafka {#kafka}
+
+```sql
+create catalog kafka properties (
+ "type"="trino-connector",
+ "trino.connector.name"="kafka",
+ "trino.kafka.nodes"="localhost:9092",
+ "trino.kafka.table-description-supplier"="CONFLUENT",
+ "trino.kafka.confluent-schema-registry-url"="http://localhost:8081",
+ "trino.kafka.hide-internal-columns" = "false"
+);
+```
+
+### BigQuery {#bigquery}
+
+```sql
+create catalog bigquery_catalog properties (
+ "type"="trino-connector",
+ "trino.connector.name"="bigquery",
+ "trino.bigquery.project-id"="steam-circlet-388406",
+ "trino.bigquery.credentials-file"="/path/to/application_default_credentials.json"
+);
+```
+
+---
+
+## Частые вопросы и типичные ошибки {#faq-and-common-errors}
+
+<!-- Knowledge type: Troubleshooting -->
+
+**Вопрос: я изменил плагин в `/path/to/connectors`. Почему Doris не применяет изменения?**
+
+Ответ: Doris использует отложенную загрузку, но плагины загружаются только один раз. После изменения плагина необходимо перезапустить узлы FE / BE.
+
+**Вопрос: что делать, если при запуске появляется ошибка несовместимости версии плагина?**
+
+Ответ: убедитесь, что перед компиляцией вы переключились на ветку Trino `435`. Сейчас Doris использует версию 435 пакета `trino-main`, и с другими версиями могут возникнуть проблемы совместимости.
+
+**Вопрос: что делать, если запросы через плагин Hive вызывают ошибки прав доступа или не могут получить доступ к HDFS?**
+
+Ответ: проверьте, указан ли в `JAVA_OPTS_FOR_JDK_17` параметр `-DHADOOP_USER_NAME=user` и доступны ли для чтения файлы `core-site.xml` / `hdfs-site.xml`, на которые ссылается `trino.hive.config.resources`.
+
+**Вопрос: что делать, если плагин MySQL сообщает об ошибке `Unknown or incorrect time zone: 'Asia/Shanghai'`?**
+
+Ответ: добавьте `-Duser.timezone=Etc/GMT-8` в конец `JAVA_OPTS_FOR_JDK_17`.
+
+**Вопрос: стоит ли использовать Trino Connector для Hive, Iceberg, Hudi и подобных источников данных?**
+
+Ответ: не рекомендуется. Для этих источников данных встроенный Catalog Doris обеспечивает более высокую производительность, стабильность и совместимость. Фреймворк Trino Connector предназначен для подключения источников данных, с которыми Doris пока не интегрирован.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/debug-tool.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/debug-tool.md
new file mode 100644
index 000000000000..9564711fdfd0
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/debug-tool.md
@@ -0,0 +1,606 @@
+---
+title: Инструменты отладки FE/BE
+language: ru
+description: "Основные инструменты отладки FE/BE в Apache Doris: мониторинг JVM, анализ памяти и методы отладки BE."
+keywords:
+ - Apache Doris
+ - отладка FE
+ - отладка BE
+ - jmap
+ - jstat
+ - jstack
+ - Jemalloc
+ - TCMalloc
+ - Heap Profile
+ - ASAN
+ - LSAN
+ - perf
+ - FlameGraph
+ - утечка памяти
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Инструменты отладки FE/BE {#febe-debug-tools}
+
+<!-- Knowledge type: Tool usage -->
+<!-- Applicable scenarios: Troubleshooting / Performance tuning -->
+
+При разработке и эксплуатации Apache Doris часто возникает необходимость отлаживать процессы FE и BE. В этом документе описаны основные инструменты для мониторинга JVM, анализа памяти кучи, построения флейм-графов CPU и проверки корректности работы с памятью.
+
+> Примечание: исполняемый файл BE `doris_be`, упоминаемый в этом документе, в более ранних версиях назывался `palo_be`.
+
+## Краткий справочник инструментов {#tool-quick-reference}
+
+| Категория | Инструмент | Применимый процесс | Основное назначение |
+|------|------|---------|---------|
+| Мониторинг JVM | `jmap` / `jstat` / `jstack` | FE | Анализ памяти объектов, GC и стеков потоков |
+| Heap Profile | Jemalloc + `jeprof` | BE | Запись выделений памяти в куче в реальном времени или периодически |
+| Heap Profile | TCMalloc + `pprof` | BE (более ранние версии) | Выборочное профилирование памяти кучи и удалённый анализ |
+| Корректность работы с памятью | LSAN / ASAN | BE | Обнаружение утечек памяти и недопустимых обращений |
+| Анализ CPU | `pprof` / `perf + FlameGraph` | BE | Анализ потребления CPU на уровне функций и построение флейм-графов |
+
+## Отладка FE {#fe-debugging}
+
+FE представляет собой процесс Java, поэтому для его отладки можно использовать команды из JDK.
+
+### 1. Просмотр подробных сведений о текущем использовании памяти {#1-show-current-memory-usage-details}
+
+```bash
+jmap -histo:live pid > 1.jmp
+```
+
+Замените `pid` идентификатором процесса FE. Эта команда выводит отсортированный список объёмов памяти, занимаемых живыми объектами. Общий объём использования памяти указан в конце файла.
+
+Пример вывода:
+
+```text
+ num #instances #bytes class name
+----------------------------------------------
+ 1: 33528 10822024 [B
+ 2: 80106 8662200 [C
+ 3: 143 4688112 [Ljava.util.concurrent.ForkJoinTask;
+ 4: 80563 1933512 java.lang.String
+ 5: 15295 1714968 java.lang.Class
+ 6: 45546 1457472 java.util.concurrent.ConcurrentHashMap$Node
+ 7: 15483 1057416 [Ljava.lang.Object;
+```
+
+> Примечание: передача параметра `:live` запускает FullGC, поэтому используйте его с осторожностью в рабочей среде.
+
+### 2. Проверка использования памяти JVM {#2-inspect-jvm-memory-usage}
+
+```bash
+jstat -gcutil pid 1000 1000
+```
+
+Замените `pid` идентификатором процесса FE. Эта команда проверяет использование памяти в каждой области JVM раз в секунду.
+
+Пример вывода:
+
+```text
+ S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
+ 0.00 0.00 22.61 3.03 95.74 92.77 68 1.249 5 0.794 2.043
+ 0.00 0.00 22.61 3.03 95.74 92.77 68 1.249 5 0.794 2.043
+ 0.00 0.00 22.92 3.03 95.74 92.77 68 1.249 5 0.794 2.043
+```
+
+Следите за процентом заполнения поколения Old (O). При слишком высоком значении возможны OOM или FullGC.
+
+### 3. Вывод стеков потоков FE {#3-print-fe-thread-stacks}
+
+```bash
+jstack -l pid > 1.js
+```
+
+Замените `pid` идентификатором процесса FE. Параметр `-l` также включает проверку на взаимные блокировки. С помощью этой команды можно исследовать блокировки потоков FE, взаимные блокировки, функции с высокой нагрузкой и подобные проблемы.
+
+## Отладка памяти BE {#be-memory-debugging}
+
+При отладке памяти BE основное внимание уделяется двум категориям проблем:
+
+1. **Обоснованность использования памяти**: чрезмерное потребление может указывать на утечку памяти или её неправильное использование.
+2. **Корректность обращений к памяти**: наличие обращений за границы выделенной области, обращений к неинициализированной памяти и других подобных ошибок.
+
+### Doris Debug Tools {#doris-debug-tools}
+
+[Doris Debug Tools](https://github.com/morningman/doris-debug-tools) предоставляет готовый набор инструментов для построения флейм-графов CPU и анализа памяти. Страница загрузки: [Выпуски](https://github.com/morningman/doris-debug-tools/releases).
+
+> Примечание: это неофициальный инструмент, предназначенный только для отладки при разработке.
+
+### Heap Profile в Jemalloc {#jemalloc-heap-profile}
+
+> Примечание: начиная с версии 1.2.2, Apache Doris использует Jemalloc в качестве аллокатора памяти по умолчанию.
+
+Принципы работы Heap Profile описаны в статье [Объяснение принципов профилирования кучи](https://cn.pingcap.com/blog/an-explanation-of-the-heap-profiling-principle/). Обратите внимание: Heap Profile учитывает виртуальную память.
+
+Jemalloc поддерживает создание Heap Dump как в реальном времени, так и периодически. Полученный Heap Profile затем анализируется с помощью инструмента `jeprof`.
+
+#### 1. Heap Dump в реальном времени (для анализа используемой памяти) {#1-real-time-heap-dump-for-analyzing-live-memory}
+
+Порядок действий:
+
+1. Измените `JEMALLOC_CONF` в `be.conf`:
+
+ - Замените `prof:false` на `prof:true`
+ - Замените `prof_active:false` на `prof_active:true`
+
+2. Перезапустите Doris BE.
+
+3. Вызовите HTTP-интерфейс на машине BE, чтобы создать файл Heap Profile:
+
+ ```bash
+ curl http://be_host:be_webport/jeheap/dump
+ ```
+
+Особенности версий:
+
+| Версия Doris | Поведение |
+|-----------|------|
+| 2.1.8 / 3.0.4 и новее | `prof` в `JEMALLOC_CONF` по умолчанию имеет значение `true`; изменения не требуются |
+| До 2.1.8 / 3.0.4 | В `JEMALLOC_CONF` нет параметра `prof_active`; достаточно заменить `prof:false` на `prof:true` |
+
+Основные параметры:
+
+| Параметр | Описание | Значение по умолчанию |
+|--------|------|--------|
+| `jeprofile_dir` | Каталог для сохранения Heap Profile | `${DORIS_HOME}/log` |
+| `lg_prof_sample` | Интервал выборки (`2^N` байт) | `19` (то есть 512KB) |
+
+Уменьшение `lg_prof_sample` позволяет Heap Profile точнее отражать фактическое использование памяти, но увеличивает накладные расходы. При выборке по умолчанию учитывается лишь около 10% памяти, а влияние на производительность обычно составляет менее 10%.
+
+> Рекомендация по производительности: при тестировании производительности оставляйте `prof:false`, чтобы избежать накладных расходов на Heap Dump.
+
+#### 2. Периодический Heap Dump (для длительного наблюдения за памятью) {#2-periodic-heap-dump-for-long-term-memory-observation}
+
+Замените `prof:false` на `prof:true` в параметре `JEMALLOC_CONF` файла `be.conf`. По умолчанию файлы Heap Profile сохраняются в `${DORIS_HOME}/log`, а их имена начинаются с префикса `JEMALLOC_PROF_PRFIX` (по умолчанию `jemalloc_heap_profile_`).
+
+> Примечание: в версиях Doris до 2.1.6 значение `JEMALLOC_PROF_PRFIX` пустое, поэтому для него нужно задать любое значение в качестве имени файла профиля.
+
+Условия создания дампа:
+
+| Условие | Параметр | Описание |
+|---------|------|------|
+| Суммарный объём выделенной памяти достигает порога | `lg_prof_interval=34` | Дамп создаётся на каждые 16GB (`2^34 B`) суммарно выделенной памяти; до версии 2.1.6 значение по умолчанию было `32` |
+| Использование памяти достигает нового максимума | `prof_gdump=true` | После изменения перезапустите BE |
+| Завершение программы и обнаружение утечек | `prof_leak=true`, `prof_final=true` | После изменения перезапустите BE |
+| Запись накопленного значения (прироста) | `prof_accum=true` | Для отображения накопленного значения используйте `jeprof --alloc_space` |
+
+#### 3. Анализ Heap Profile с помощью jeprof {#3-parse-heap-profile-with-jeprof}
+
+Для анализа сохранённого Heap Profile используйте `be/bin/jeprof`. Если процесс занимает большой объём памяти, анализ может занять несколько минут.
+
+Если исполняемый файл `jeprof` отсутствует в каталоге `be/bin`, можно упаковать и загрузить на сервер `jeprof` из каталога `doris/tools`.
+
+> Примечания:
+> - Требуется `addr2line` версии 2.35.2 или новее. Подробнее см. QA-1 ниже.
+> - По возможности создавайте Heap Dump и выполняйте анализ с помощью `jeprof` на той же машине, где работает Doris BE. Подробнее см. QA-2 ниже.
+
+**(1) Анализ одного файла Heap Profile**
+
+```bash
+jeprof --dot ${DORIS_HOME}/lib/doris_be ${DORIS_HOME}/log/profile_file
+```
+
+Вставьте текстовый вывод терминала на [сайт для визуализации dot](http://www.webgraphviz.com/), чтобы построить граф связей выделения памяти.
+
+Если сервер позволяет передавать файлы, можно сразу создать PDF:
+
+```bash
+yum install ghostscript graphviz
+jeprof --pdf ${DORIS_HOME}/lib/doris_be ${DORIS_HOME}/log/profile_file > result.pdf
+```
+
+После установки [graphviz](http://www.graphviz.org/) инструмент `pprof` сможет выводить данные в более удобных для просмотра форматах, например SVG и PDF.
+
+**(2) Анализ различий между двумя файлами Heap Profile**
+
+```bash
+jeprof --dot ${DORIS_HOME}/lib/doris_be --base=${DORIS_HOME}/log/profile_file ${DORIS_HOME}/log/profile_file2
+```
+
+Сравнивая Heap Profile, полученные в более ранний и более поздний моменты времени, можно определить, где за этот промежуток была дополнительно выделена память.
+
+#### 4. Часто задаваемые вопросы (QA) {#4-frequently-asked-questions-qa}
+
+**QA-1: При запуске `jeprof` возникает множество ошибок `addr2line: Dwarf Error: found dwarf version xxx, this reader only handles version xxx`**
+
+Причина: начиная с GCC 11 по умолчанию используется DWARF-v5, для которого требуется Binutils 2.35.2 или новее. В Doris LDB-toolchain используется GCC 11. См. [Изменения в GCC 11](https://gcc.gnu.org/gcc-11/changes.html).
+
+Решение: обновите `addr2line` до версии 2.35.2.
+
+```bash
+# Download the addr2line source code
+wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2
+
+# Install dependencies (if needed)
+yum install make gcc gcc-c++ binutils
+
+# Compile & install addr2line
+tar -xvf binutils-2.35.tar.bz2
+cd binutils-2.35
+./configure --prefix=/usr/local
+make
+make install
+
+# Verify
+addr2line -h
+
+# Replace addr2line
+chmod +x addr2line
+mv /usr/bin/addr2line /usr/bin/addr2line.bak
+mv /bin/addr2line /bin/addr2line.bak
+cp addr2line /bin/addr2line
+cp addr2line /usr/bin/addr2line
+hash -r
+```
+
+> Примечание: не используйте `addr2line 2.3.9`. Эта версия может быть несовместимой и вызывать непрерывный рост потребления памяти.
+
+**QA-2: При запуске `jeprof` выдаётся ошибка `addr2line: DWARF error: invalid or unhandled FORM value: 0x25`, а в стеке вместо имён функций отображаются адреса памяти**
+
+Причина: обычно это происходит, когда Heap Dump и `jeprof` запускаются на разных серверах, из-за чего `jeprof` не может разобрать таблицу символов.
+
+Решения:
+
+- По возможности создавайте Heap Dump и выполняйте анализ с помощью `jeprof` на одной машине.
+- Либо проверьте версию ядра Linux на машине, где работает Doris BE, скачайте `be/bin/doris_be` и файл Heap Profile на машину с той же версией ядра и запустите `jeprof` там.
+
+**QA-3: Даже после анализа на той же машине, где работает Doris BE, в стеке по-прежнему отображаются адреса памяти**
+
+Для ручного анализа Heap Profile используйте приведённый ниже скрипт. Измените следующие переменные:
+
+- `heap`: имя файла Heap Profile.
+- `bin`: имя исполняемого файла `be/bin/doris_be`.
+- `llvm_symbolizer`: путь к анализатору таблицы символов llvm, желательно той же версии, которая использовалась при компиляции исполняемого файла `be/bin/doris_be`.
+
+```bash
+#!/bin/bash
+## @brief
+## @author zhoufei
+## @email gavineaglechou@gmail.com
+## @date 2024-02-24-Sat
+
+# 1. jeprof --dot ${bin} ${heap} > heap.dot to generate calling profile
+# 2. find base addr and symbol
+# 3. get addr to symble table with llvm-symbolizer
+# 4. replace the addr with symbol
+
+# heap file name
+heap=jeheap_dump.1708694081.3443.945778264.heap
+# binary name
+bin=doris_be_aws.3.0.5
+# path to llvm symbolizer
+llvm_symbolizer=$HOME/opt/ldb-toolchain-16/bin/llvm-symbolizer
+# output file name
+out=out.dot
+vaddr_baddr_symbol=vaddr_baddr_symbol.txt
+program_name=doris_be
+
+jeprof --dot ${bin} ${heap} > ${out}
+
+baseaddr=$(grep ${program_name} ${heap} | head -n 1 | awk -F'-' '{print $1}')
+echo "$baseaddr: ${baseaddr}"
+
+function find_symbol() {
+ local addr="$1"
+ "${llvm_symbolizer}" --inlining --obj=${bin} ${addr} | head -n 1 | awk -F'(' '{print $1}'
+}
+
+if [ -f ${vaddr_baddr_symbol} ]; then
+ cat ${vaddr_baddr_symbol} | while read vaddr baddr; do
+ symbol=$(find_symbol ${baddr})
+ echo "${vaddr} ${baddr} ${symbol}"
+ sed -ri.orig "s/${vaddr}/${symbol}/g" ${out}
+ done
+else # recalculate the addr and
+ grep -oP '0x(\d|[a-f])+' ${out} | xargs -I {} python -c "print('{}', '0x{:x}'.format({} - 0x${baseaddr}))" \
+ | while read vaddr baddr; do
+ symbol=$(find_symbol ${baddr})
+ echo "${vaddr} ${baddr} ${symbol}"
+ sed -ri.orig "s/${vaddr}/${symbol}/g" ${out}
+ done | tee ${vaddr_baddr_symbol}
+fi
+
+# vim: et tw=80 ts=2 sw=2 cc=80:
+```
+
+**QA-4: Ни один из описанных выше способов не помогает**
+
+- Попробуйте перекомпилировать исполняемый файл `be/bin/doris_be` на машине, где работает Doris BE, чтобы компиляция, выполнение и анализ с помощью `jeprof` происходили на одной машине.
+- Если это не помогло, попробуйте собрать BE с TCMalloc командой `USE_JEMALLOC=OFF ./build.sh --be`, а затем проанализируйте память по инструкциям из раздела о Heap Profile в TCMalloc ниже.
+
+### Heap Profile в TCMalloc {#tcmalloc-heap-profile}
+
+> Примечание: Apache Doris 1.2.1 и более ранние версии используют TCMalloc; начиная с 1.2.2 по умолчанию используется Jemalloc. Чтобы вернуться к TCMalloc, выполните сборку командой `USE_JEMALLOC=OFF sh build.sh --be`.
+
+При использовании TCMalloc большие выделения памяти приводят к выводу стека в `be.out` в следующем виде:
+
+```text
+tcmalloc: large alloc 1396277248 bytes == 0x3f3488000 @ 0x2af6f63 0x2c4095b 0x134d278 0x134bdcb 0x133d105 0x133d1d0 0x19930ed
+```
+
+Это означает, что BE попытался выделить `1396277248 bytes` памяти по этому стеку вызовов. Используйте `addr2line`, чтобы восстановить читаемый стек:
+
+```bash
+addr2line -e lib/doris_be 0x2af6f63 0x2c4095b 0x134d278 0x134bdcb 0x133d105 0x133d1d0 0x19930ed
+```
+
+Пример вывода:
+
+```text
+/home/ssd0/zc/palo/doris/core/thirdparty/src/gperftools-gperftools-2.7/src/tcmalloc.cc:1335
+/home/ssd0/zc/palo/doris/core/thirdparty/src/gperftools-gperftools-2.7/src/tcmalloc.cc:1357
+/home/disk0/baidu-doris/baidu/bdg/doris-baidu/core/be/src/exec/hash_table.cpp:267
+/home/disk0/baidu-doris/baidu/bdg/doris-baidu/core/be/src/exec/hash_table.hpp:86
+/home/disk0/baidu-doris/baidu/bdg/doris-baidu/core/be/src/exec/hash_join_node.cpp:239
+/home/disk0/baidu-doris/baidu/bdg/doris-baidu/core/be/src/exec/hash_join_node.cpp:213
+thread.cpp:?
+```
+
+Когда множество небольших выделений накапливается и увеличивает общее потребление памяти, определить источник проблемы по одной строке журнала невозможно. В этом случае включите функцию [HEAP PROFILE](https://gperftools.github.io/gperftools/heapprofile.html) в TCMalloc, задав переменную окружения `HEAPPROFILE` перед запуском BE:
+
+```bash
+export TCMALLOC_SAMPLE_PARAMETER=64000 HEAP_PROFILE_ALLOCATION_INTERVAL=-1 HEAP_PROFILE_INUSE_INTERVAL=-1 HEAP_PROFILE_TIME_INTERVAL=5 HEAPPROFILE=/tmp/doris_be.hprof
+./bin/start_be.sh --daemon
+```
+
+> Примечание: `HEAPPROFILE` должен содержать абсолютный путь, а указанный каталог должен уже существовать.
+
+Проанализируйте результат с помощью `pprof`:
+
+```bash
+pprof --text lib/doris_be /tmp/doris_be.hprof.0012.heap | head -30
+```
+
+Пример вывода:
+
+```text
+Using local file lib/doris_be.
+Using local file /tmp/doris_be.hprof.0012.heap.
+Total: 668.6 MB
+ 610.6 91.3% 91.3% 610.6 91.3% doris::SystemAllocator::allocate_via_malloc (inline)
+ 18.1 2.7% 94.0% 18.1 2.7% _objalloc_alloc
+ 5.6 0.8% 94.9% 63.4 9.5% doris::RowBatch::RowBatch
+ 5.1 0.8% 95.6% 7.1 1.1% butil::ResourcePool::add_block (inline)
+ 3.7 0.5% 96.2% 3.7 0.5% butil::iobuf::create_block (inline)
+ 3.4 0.5% 96.7% 3.4 0.5% butil::FlatMap::init
+ 3.2 0.5% 97.2% 5.2 0.8% butil::ObjectPool::add_block (inline)
+ 2.6 0.4% 97.6% 2.6 0.4% __gnu_cxx::new_allocator::allocate (inline)
+ 2.0 0.3% 97.9% 2.0 0.3% butil::ObjectPool::add_block_group (inline)
+ 2.0 0.3% 98.2% 2.0 0.3% butil::ResourcePool::add_block_group (inline)
+ 1.7 0.3% 98.4% 1.7 0.3% doris::SegmentReader::_load_index
+```
+
+Значение столбцов:
+
+| Столбец | Значение |
+|----|------|
+| Столбец 1 | Память, выделенная непосредственно функцией (MB) |
+| Столбец 2 | Процентная доля для столбца 1 |
+| Столбец 3 | Накопленное значение столбца 2 |
+| Столбец 4 | Общий объём памяти, используемой функцией и всеми вызываемыми ею функциями (MB) |
+| Столбец 5 | Процентная доля для столбца 4 |
+
+Создайте граф вызовов в формате SVG:
+
+```bash
+pprof --svg lib/doris_be /tmp/doris_be.hprof.0012.heap > heap.svg
+```
+
+> Рекомендация по производительности: включение этой возможности влияет на производительность программы. Используйте её с осторожностью на рабочих экземплярах.
+
+#### Удалённый сервер pprof {#pprof-remote-server}
+
+`HEAP PROFILE` позволяет получить полную информацию об использовании памяти, но имеет следующие ограничения:
+
+1. Требуется перезапуск BE.
+2. Профилирование должно оставаться включённым, что постоянно влияет на производительность процесса.
+
+Поэтому в Doris BE встроена поддержка [отладки через удалённый сервер](https://gperftools.github.io/gperftools/pprof_remote_servers.html) GPerftools, которая позволяет динамически собирать сведения о приросте памяти без перезапуска BE:
+
+```bash
+pprof --text --seconds=60 http://be_host:be_webport/pprof/heap
+```
+
+Пример вывода:
+
+```text
+Total: 1296.4 MB
+ 484.9 37.4% 37.4% 484.9 37.4% doris::StorageByteBuffer::create
+ 272.2 21.0% 58.4% 273.3 21.1% doris::RowBlock::init
+ 157.5 12.1% 70.5% 157.5 12.1% doris::RowBatch::RowBatch
+ 90.7 7.0% 77.5% 90.7 7.0% doris::SystemAllocator::allocate_via_malloc
+ 66.6 5.1% 82.7% 66.6 5.1% doris::IntegerColumnReader::init
+ 47.9 3.7% 86.4% 47.9 3.7% __gnu_cxx::new_allocator::allocate
+ 20.8 1.6% 88.0% 35.4 2.7% doris::SegmentReader::_load_index
+ 12.7 1.0% 89.0% 12.7 1.0% doris::DecimalColumnReader::init
+ 12.7 1.0% 89.9% 12.7 1.0% doris::LargeIntColumnReader::init
+ 12.7 1.0% 90.9% 12.7 1.0% doris::StringColumnDirectReader::init
+ 12.3 0.9% 91.9% 12.3 0.9% std::__cxx11::basic_string::_M_mutate
+ 10.4 0.8% 92.7% 10.4 0.8% doris::VectorizedRowBatch::VectorizedRowBatch
+ 10.0 0.8% 93.4% 10.0 0.8% doris::PlainTextLineReader::PlainTextLineReader
+```
+
+Эта команда собирает статистику только во время своего выполнения, поэтому её влияние на производительность процесса меньше, чем у полного `HEAP PROFILE`.
+
+### LSAN (обнаружение утечек памяти) {#lsan-memory-leak-detection}
+
+[LSAN](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer) встроен в GCC. Чтобы им воспользоваться, достаточно включить его при компиляции. Doris BE уже интегрирует этот инструмент. Команда сборки:
+
+```bash
+BUILD_TYPE=LSAN ./build.sh
+```
+
+При обнаружении утечки памяти её стек выводится в `be.out`. Например, добавьте следующий код с утечкой в функцию `open` класса `StorageEngine`:
+
+```cpp
+char* leak_buf = new char[1024];
+strcpy(leak_buf, "hello world");
+LOG(INFO) << leak_buf;
+```
+
+Вывод `be.out`:
+
+```text
+=================================================================
+==24732==ERROR: LeakSanitizer: detected memory leaks
+
+Direct leak of 1024 byte(s) in 1 object(s) allocated from:
+ #0 0xd10586 in operator new (unsigned long) ../../../../gcc-7.3.0/libsanitizer/lsan/lsan_interceptors.cc:164
+ #1 0xe333a2 in doris::StorageEngine::open(doris::EngineOptions const&, doris::StorageEngine**) /home/ssd0/zc/palo/doris/core/be/src/olap/storage_engine.cpp:104
+ #2 0xd3cc96 in main /home/ssd0/zc/palo/doris/core/be/src/service/doris_main.cpp:159
+ #3 0x7f573b5eebd4 in __libc_start_main (/opt/compiler/gcc-4.8.2/lib64/libc.so.6+0x21bd4)
+
+SUMMARY: LeakSanitizer: 1024 byte(s) leaked in 1 allocation(s).
+```
+
+> Рекомендация по производительности: включение LSAN влияет на производительность программы. Используйте его с осторожностью на рабочих экземплярах.
+
+> Примечание: при включении LSAN TCMalloc автоматически отключается.
+
+### ASAN (проверка корректности адресов) {#asan-address-legality-detection}
+
+[ASAN](https://github.com/google/sanitizers/wiki/AddressSanitizer) также встроен в GCC и используется для обнаружения обращений за границы выделенной памяти, обращений по недопустимым адресам и подобных ошибок. Команда сборки:
+
+```bash
+BUILD_TYPE=ASAN ./build.sh
+```
+
+Когда ASAN обнаруживает недопустимое обращение к памяти, он немедленно завершает программу и выводит стек в `be.out`. Например, добавьте следующий код с недопустимым обращением в функцию `open` класса `StorageEngine`:
+
+```cpp
+char* invalid_buf = new char[1024];
+for (int i = 0; i < 1025; ++i) {
+ invalid_buf[i] = i;
+}
+LOG(INFO) << invalid_buf;
+```
+
+Вывод `be.out`:
+
+```text
+=================================================================
+==23284==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x61900008bf80 at pc 0x00000129f56a bp 0x7fff546eed90 sp 0x7fff546eed88
+WRITE of size 1 at 0x61900008bf80 thread T0
+ #0 0x129f569 in doris::StorageEngine::open(doris::EngineOptions const&, doris::StorageEngine**) /home/ssd0/zc/palo/doris/core/be/src/olap/storage_engine.cpp:106
+ #1 0xe2c1e3 in main /home/ssd0/zc/palo/doris/core/be/src/service/doris_main.cpp:159
+ #2 0x7fa5580fbbd4 in __libc_start_main (/opt/compiler/gcc-4.8.2/lib64/libc.so.6+0x21bd4)
+ #3 0xd30794 (/home/ssd0/zc/palo/doris/core/output3/be/lib/doris_be+0xd30794)
+
+0x61900008bf80 is located 0 bytes to the right of 1024-byte region [0x61900008bb80,0x61900008bf80)
+allocated by thread T0 here:
+ #0 0xdeb040 in operator new[](unsigned long) ../../../../gcc-7.3.0/libsanitizer/asan/asan_new_delete.cc:82
+ #1 0x129f50d in doris::StorageEngine::open(doris::EngineOptions const&, doris::StorageEngine**) /home/ssd0/zc/palo/doris/core/be/src/olap/storage_engine.cpp:104
+ #2 0xe2c1e3 in main /home/ssd0/zc/palo/doris/core/be/src/service/doris_main.cpp:159
+ #3 0x7fa5580fbbd4 in __libc_start_main (/opt/compiler/gcc-4.8.2/lib64/libc.so.6+0x21bd4)
+
+SUMMARY: AddressSanitizer: heap-buffer-overflow /home/ssd0/zc/palo/doris/core/be/src/olap/storage_engine.cpp:106 in doris::StorageEngine::open(doris::EngineOptions const&, doris::StorageEngine**)
+```
+
+Из вывода можно узнать адрес недопустимого обращения `0x61900008bf80`, выделенную область `[0x61900008bb80,0x61900008bf80)` и стек её выделения.
+
+> Рекомендация по производительности: включение ASAN влияет на производительность программы. Используйте его с осторожностью на рабочих экземплярах.
+
+> Примечание: при включении ASAN TCMalloc автоматически отключается.
+
+Если стек, выведенный в `be.out`, не содержит имён функций, используйте скрипт [asan_symbolize](https://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/asan/scripts/asan_symbolize.py) для ручного разбора:
+
+```bash
+cat be.out | python asan_symbolize.py | c++filt
+```
+
+## Отладка использования CPU в BE {#be-cpu-debugging}
+
+Если значение CPU Idle длительное время остаётся низким, CPU становится основным ограничением производительности. Doris BE предоставляет несколько способов анализа использования CPU.
+
+### Сравнение инструментов анализа CPU {#comparison-of-cpu-analysis-tools}
+
+| Инструмент | Требуется вход на физическую машину | Метод сбора данных | Результат |
+|------|----------------|---------|------|
+| Doris Debug Tools | Нет (готовый набор инструментов) | Удалённое получение данных | Флейм-граф |
+| `pprof` + GPerf REST | Нет | Сбор данных в течение заданного времени | SVG/PDF |
+| `perf` + FlameGraph | Да | Сбор данных по событиям | Флейм-граф |
+
+### Doris Debug Tools (анализ CPU) {#doris-debug-tools-cpu-analysis}
+
+[Doris Debug Tools](https://github.com/morningman/doris-debug-tools) предоставляет готовый набор инструментов для построения флейм-графов CPU и анализа памяти. Страница загрузки: [Выпуски](https://github.com/morningman/doris-debug-tools/releases).
+
+> Примечание: это неофициальный инструмент, предназначенный только для отладки при разработке.
+
+### pprof (удалённый сбор данных через REST) {#pprof-remote-rest-sampling}
+
+[pprof](https://github.com/google/pprof) происходит из gperftools и позволяет преобразовывать вывод gperftools в удобные для чтения форматы, такие как PDF, SVG и Text. Doris BE совместим с интерфейсом GPerf REST:
+
+```bash
+pprof --svg --seconds=60 http://be_host:be_webport/pprof/profile > be.svg
+```
+
+Эта команда создаёт граф потребления CPU процессом BE за 60 секунд:
+
+
+
+### perf + FlameGraph {#perf--flamegraph}
+
+Это более универсальный подход к анализу CPU. В отличие от `pprof`, он требует входа на анализируемую физическую машину; при этом `pprof` выполняет только сбор данных в течение заданного времени, а `perf` может собирать стеки по различным событиям.
+
+Ссылки на инструменты:
+
+| Инструмент | Ссылка |
+|------|------|
+| `perf` | [Главная страница perf](https://perf.wiki.kernel.org/index.php/Main_Page), [примеры использования](http://www.brendangregg.com/perf.html) |
+| FlameGraph | [Репозиторий на GitHub](https://github.com/brendangregg/FlameGraph) |
+
+Порядок действий:
+
+1. Соберите данные об использовании CPU процессом BE за 60 секунд:
+
+ ```bash
+ perf record -g -p be_pid -- sleep 60
+ ```
+
+2. Просмотрите собранный отчёт:
+
+ ```bash
+ perf report
+ ```
+
+ Пример результата анализа:
+
+ 
+
+3. Используйте FlameGraph для построения флейм-графа:
+
+ ```bash
+ perf script | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > be.svg
+ ```
+
+ Пример результата:
+
+ 
+
+## Устранение неполадок {#troubleshooting}
+
+| Симптом | Возможная причина | Действие |
+|------|---------|---------|
+| `addr2line: Dwarf Error` | DWARF-v5 несовместим со старыми версиями binutils | Обновите `addr2line` до 2.35.2+. Подробнее см. QA-1 |
+| В выводе `jeprof` отображаются только адреса памяти | Heap Dump и анализ выполняются на разных машинах либо таблица символов не соответствует исполняемому файлу | Выполняйте анализ на той же машине или используйте одинаковые версии ядра. Подробнее см. QA-2/QA-3 |
+| Частые FullGC; заполнение поколения Old близко к 100% | Недостаточный размер кучи JVM процесса FE либо утечка крупных объектов | Проведите анализ с помощью `jmap -histo:live` и `jstat -gcutil` |
+| Производительность снижается после запуска BE | Heap Profile / ASAN / LSAN включены по ошибке | Отключите соответствующие параметры; используйте их только для отладки |
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/docker-dev.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/docker-dev.md
new file mode 100644
index 000000000000..4191241c0be0
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/docker-dev.md
@@ -0,0 +1,211 @@
+---
+title: Быстрое создание среды разработки Doris с помощью Docker
+language: ru
+description: Быстро настройте среду разработки Apache Doris с помощью Docker, используя пример Dockerfile и настройку VSCode Remote.
+keywords:
+ - Apache Doris
+ - Docker
+ - среда разработки
+ - Dockerfile
+ - VSCode Remote
+ - SYS_PTRACE
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Быстрое создание среды разработки Doris с помощью Docker {#quick-doris-development-environment-with-docker}
+
+В этой статье описано, как с помощью Docker создать образ для разработки Doris, скомпилировать и запустить FE/BE, а также использовать VSCode Remote для разработки и отладки.
+
+<!-- Knowledge type: Procedure -->
+<!-- Use case: IDE configuration / Containerized development environment -->
+
+## Подробная документация по теме {#related-detailed-documents}
+
+- [Компиляция с использованием образа Docker для разработки](/community/source-install/compilation-with-docker)
+- [Развёртывание](/docs/dev/install/deploy-manually/integrated-storage-compute-deploy-manually)
+- [Разработка и отладка BE в VSCode](./be-vscode-dev)
+
+## 1. Подготовка среды {#1-environment-preparation}
+
+| Компонент | Описание |
+| ------------- | --------------------------------- |
+| Docker | Установлен и запущен |
+| VSCode | Последняя стабильная версия |
+| Плагин Remote | VSCode Remote - Containers / SSH |
+
+## 2. Сборка образа {#2-build-the-image}
+
+### 2.1 Создание Dockerfile {#21-create-the-dockerfile}
+
+Создайте `Dockerfile` в рабочем каталоге. В VSCode можно использовать Ctrl+D для замены следующих заполнителей:
+
+| Заполнитель | Значение |
+| ------------------------------- | --------------------------------- |
+| `<!!! your user !!!>` | Имя пользователя, создаваемого в контейнере |
+| `<!!! your user password !!!>` | Пароль этого пользователя |
+| `<!!! root password !!!>` | Пароль пользователя root |
+| `<!!! your git email !!!>` | Электронная почта для настройки git |
+| `<!!! your git username !!!>` | Имя пользователя для настройки git |
+
+```dockerfile
+FROM apache/incubator-doris:build-env-latest
+
+USER root
+WORKDIR /root
+RUN echo '<!!! root password !!!>' | passwd root --stdin
+
+RUN yum install -y vim net-tools man wget git mysql lsof bash-completion \
+ && cp /var/local/thirdparty/installed/bin/thrift /usr/bin
+
+# For better safety, create a user instead of using root
+RUN yum install -y sudo \
+ && useradd -ms /bin/bash <!!! your user !!!> && echo <!!! your user password !!!> | passwd <!!! your user !!!> --stdin \
+ && usermod -a -G wheel <!!! your user !!!>
+
+USER <!!! your user !!!>
+WORKDIR /home/<!!! your user !!!>
+RUN git config --global color.ui true \
+ && git config --global user.email "<!!! your git email !!!>" \
+ && git config --global user.name "<!!! your git username !!!>"
+
+# Optionally install zsh and oh my zsh for easier use; remove if not needed
+USER root
+RUN yum install -y zsh \
+ && chsh -s /bin/zsh <!!! your user !!!>
+USER <!!! your user !!!>
+RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh \
+ && git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \
+ && git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
+```
+
+### 2.2 Сборка образа {#22-build-the-image}
+
+```shell
+docker build -t doris .
+```
+
+### 2.3 Запуск образа {#23-run-the-image}
+
+<!-- Knowledge type: Configuration parameters -->
+
+Сведения о параметрах монтирования см. в разделе [Примечания по монтированию при компиляции с Docker](../source-install/compilation-with-docker). Рекомендуется запускать образ, монтируя локальный каталог с исходным кодом Doris.
+
+:::caution Пользователям Windows
+В Windows при монтировании возникают проблемы с доступом между файловыми системами. Настройте монтирование с учётом особенностей вашей среды.
+:::
+
+Параметр `--cap-add SYS_PTRACE` позволяет использовать ptrace внутри Docker, что необходимо для работы с ptrace и удалённой отладки с помощью GDB:
+
+```shell
+docker run -it --cap-add SYS_PTRACE doris:latest /bin/bash
+```
+
+| Параметр | Назначение |
+| --------------------- | ------------------------------------------------ |
+| `--cap-add SYS_PTRACE` | Разрешает вызов ptrace внутри контейнера (требуется для GDB) |
+| `-it` | Интерактивный TTY |
+| `-v <local>:<container>` | Монтирует локальный каталог с исходным кодом (при необходимости) |
+
+### 2.4 Настройка zsh (необязательно) {#24-configure-zsh-optional}
+
+Если вы установили zsh, замените строку плагинов в `~/.zshrc`:
+
+```bash
+plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
+```
+
+### 2.5 Получение исходного кода Doris {#25-pull-the-doris-source-code}
+
+```shell
+su <your user>
+mkdir code && cd code
+git clone https://github.com/apache/doris.git
+cd doris
+git submodule update --init --recursive
+```
+
+## 3. Компиляция {#3-compile}
+
+:::caution Первая компиляция
+При первой компиляции используйте следующую команду для принудительной сборки с очисткой:
+
+```shell
+sh build.sh --clean --be --fe --ui
+```
+
+В образе `build-env-for-0.15.0` версия thrift обновлена (с 0.9 до 0.13), поэтому необходимо использовать `--clean`, чтобы принудительно сгенерировать файлы кода новой версией thrift. Иначе возникнет несовместимость кода.
+:::
+
+После этого компилируйте Doris обычным способом:
+
+```shell
+sh build.sh
+```
+
+## 4. Запуск {#4-run}
+
+### 4.1 Подготовка каталога метаданных {#41-prepare-the-metadata-directory}
+
+Вручную создайте каталог `meta_dir` для хранения метаданных. Значение по умолчанию: `${DORIS_HOME}/doris-meta`:
+
+```shell
+mkdir meta_dir
+```
+
+### 4.2 Запуск FE {#42-start-fe}
+
+```shell
+cd output/fe
+sh bin/start_fe.sh --daemon
+```
+
+### 4.3 Запуск BE {#43-start-be}
+
+```shell
+cd output/be
+sh bin/start_be.sh --daemon
+```
+
+### 4.4 Подключение с помощью mysql-client {#44-connect-with-mysql-client}
+
+```shell
+mysql -h 127.0.0.1 -P 9030 -u root
+```
+
+## 5. Часто задаваемые вопросы {#5-faq}
+
+<!-- Knowledge type: Troubleshooting -->
+
+### Вопрос 1: GDB сообщает об ошибке `ptrace: Operation not permitted` {#q1-gdb-reports-ptrace-operation-not-permitted}
+
+Контейнер был запущен без параметра `--cap-add SYS_PTRACE`. Перезапустите контейнер, добавив этот параметр.
+
+### Вопрос 2: При компиляции возникает ошибка несоответствия версии thrift {#q2-compilation-reports-thrift-version-mismatch}
+
+При первой компиляции не был указан параметр `--clean`. Выполните очистку и повторную компиляцию с помощью команды из раздела 3.
+
+### Вопрос 3: FE / BE завершает работу сразу после запуска {#q3-fe--be-exits-immediately-after-starting}
+
+Проверьте, созданы ли каталоги `meta_dir` и `storage_root_path`, свободны ли порты и охватывает ли `priority_networks` IP контейнера.
+
+### Вопрос 4: Не удаётся подключиться к процессу для отладки в контейнере VSCode Remote {#q4-vscode-remote-container-cannot-attach-to-a-process-for-debugging}
+
+Не добавлена возможность `SYS_PTRACE`, либо в плагине VSCode C/C++ не указан подходящий `miDebuggerPath`.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-idea-dev.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-idea-dev.md
new file mode 100644
index 000000000000..e22fd7a361d8
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-idea-dev.md
@@ -0,0 +1,248 @@
+---
+title: Настройка среды разработки FE в IntelliJ IDEA
+language: ru
+description: Настройка среды разработки и отладки Apache Doris FE в IntelliJ IDEA на Linux, macOS и Windows.
+keywords:
+ - IntelliJ IDEA
+ - Apache Doris FE
+ - среда разработки FE
+ - отладка FE
+ - Thrift
+ - generated-source
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Настройка среды разработки FE в IntelliJ IDEA {#setting-up-the-fe-development-environment-with-intellij-idea}
+
+В этом документе описана настройка среды разработки и отладки Doris FE (Frontend) в IntelliJ IDEA на Linux, macOS и Windows.
+
+<!-- Knowledge type: Procedure -->
+<!-- Applies to: IDE configuration / Debugging setup -->
+
+## 1. Подготовка окружения {#1-environment-preparation}
+
+Требования: JDK 1.8+, IntelliJ IDEA.
+
+### 1.1 Получение исходного кода {#11-pull-the-source-code}
+
+Загрузите исходный код Doris из GitHub на локальный компьютер:
+
+```bash
+git clone https://github.com/apache/doris.git
+```
+
+:::tip Примечание для пользователей macOS
+**При открытии проекта в IDEA рекомендуется открывать непосредственно подкаталог `fe` в дереве исходного кода, а не корневой каталог всего репозитория Doris.** Это позволит избежать последующих конфликтов с CLion (в котором открывается каталог `be`).
+:::
+
+### 1.2 Установка Thrift {#12-install-thrift}
+
+Если вы занимаетесь только разработкой FE и не собирали полностью `thirdparty`, необходимо отдельно установить Thrift и скопировать его либо создать символическую ссылку на него в каталоге `thirdparty/installed/bin`.
+
+| Версия Doris | Соответствующая версия Thrift |
+| ------------- | ----------------------- |
+| 0.15 ~ 1.2 | 0.13.0 |
+| 1.2+ | 0.16.0 |
+
+Далее в качестве примера используется 0.16.0; для 0.13.0 порядок действий такой же.
+
+#### macOS {#macos}
+
+```bash
+brew tap homebrew/core --force
+brew tap-new $USER/local-tap
+brew extract --version='0.16.0' thrift $USER/local-tap
+brew install thrift@0.16.0
+```
+
+Если загрузка не удалась, можно отредактировать файл:
+
+`/usr/local/Homebrew/Library/Taps/$USER/homebrew-local-tap/Formula/thrift@0.16.0.rb`
+
+Замените:
+
+`url "https://www.apache.org/dyn/closer.lua?path=thrift/0.16.0/thrift-0.16.0.tar.gz"`
+
+на:
+
+`url "https://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz"`
+
+Дополнительная информация: <https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c>
+
+#### Linux {#linux}
+
+```bash
+wget https://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz
+yum install -y autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c++
+tar zxvf thrift-0.16.0.tar.gz
+cd thrift-0.16.0
+./configure --without-tests
+make
+make install
+```
+
+После установки проверьте версию:
+
+```bash
+thrift --version
+```
+
+#### Windows {#windows}
+
+1. Загрузите файл: <http://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.exe>
+2. Скопируйте его в `./thirdparty/installed/bin`
+
+> Если вы уже выполнили полную сборку Doris, повторная установка Thrift не требуется. Можно напрямую использовать `$DORIS_HOME/thirdparty/installed/bin/thrift`.
+
+## 2. Генерация кода {#2-generate-code}
+
+### Linux / macOS {#linux--macos}
+
+Выполните следующую команду в корневом каталоге исходного кода:
+
+```bash
+sh generated-source.sh
+```
+
+Дождитесь появления сообщения `Done`.
+
+> В версиях 1.2 и более ранних используется команда `cd fe && mvn generate-sources`. При возникновении ошибки выполните `cd fe && mvn clean install -DskipTests`.
+
+Соответствующую команду Maven можно также выполнить в интерфейсе IDEA:
+
+
+
+### Windows {#windows-1}
+
+В Windows выполнение `make` или скриптов оболочки может быть недоступно. Используйте один из следующих способов:
+
+- Скопируйте сгенерированный каталог `fe/fe-core/target/generated-sources` с компьютера под управлением Linux в соответствующее расположение в Windows.
+- Смонтируйте локальный каталог в Docker и выполните генерацию кода внутри Docker (см. [Сборка из исходного кода](../source-install/compilation-with-docker)).
+
+## 3. Генерация справочной документации {#3-generate-the-help-documentation}
+
+Если справочная документация ещё не сгенерирована, выполните:
+
+```bash
+cd doris/docs
+sh build_help_zip.sh
+cp build/help-resource.zip ../fe/fe-core/target/classes
+```
+
+## 4. Настройка отладки в IDEA {#4-configure-debugging-in-idea}
+
+### 4.1 Импорт проекта {#41-import-the-project}
+
+Импортируйте проект `fe` в IDEA.
+
+### 4.2 Подготовка каталогов {#42-prepare-the-directories}
+
+В каталоге `fe` создайте необходимые для отладки каталоги (в новых версиях этот каталог может уже существовать):
+
+
+
+### 4.3 Сборка UI (необязательно) {#43-build-the-ui-optional}
+
+Соберите проект `ui` и скопируйте файлы из каталога `ui/dist/` в `webroot`. Этот шаг можно пропустить, если вам не нужен доступ к интерфейсу Doris.
+
+### 4.4 Настройка fe.conf {#44-configure-feconf}
+
+Ниже приведён пример конфигурации `conf/fe.conf`, которую можно изменить в соответствии с вашими потребностями:
+
+```bash
+LOG_DIR = ${DORIS_HOME}/log
+
+DATE = `date +%Y%m%d-%H%M%S`
+JAVA_OPTS="-Xmx2048m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"
+
+# For jdk 9+, this JAVA_OPTS will be used as default JVM options
+JAVA_OPTS_FOR_JDK_9="-Xmx4096m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time"
+
+sys_log_level = INFO
+
+http_port = 8030
+rpc_port = 9020
+query_port = 9030
+arrow_flight_sql_port = -1
+edit_log_port = 9010
+
+# priority_networks = 10.10.10.0/24;192.168.0.0/16
+```
+
+:::tip Запуск BE в Docker на macOS
+Если вы запускаете BE на macOS через Docker for Mac, учтите, что `docker for Mac` не поддерживает режим Host, поэтому порты BE необходимо опубликовать с помощью `-p`. Кроме того, параметр `priority_networks` в `fe.conf` должен указывать IP-адрес, доступный из контейнера (например, IP-адрес интерфейса Wi-Fi).
+:::
+
+### 4.5 Настройка переменных окружения для запуска в IDEA {#45-set-the-idea-run-environment-variables}
+
+Задайте переменные окружения для запуска в IDEA:
+
+
+
+<!-- Knowledge type: Configuration parameters -->
+
+Пример конфигурации для macOS (переменная окружения `DORIS_HOME` указывает на каталог среды выполнения Doris, который вы скопировали):
+
+| Переменная окружения | Пример значения | Описание |
+| -------------------- | ----------------------------- | ------------------------------------------ |
+| `JAVA_OPTS` | `-Xmx8092m` | Параметры кучи JVM |
+| `LOG_DIR` | `~/DorisDev/doris-run/fe/log` | Каталог журналов FE |
+| `PID_DIR` | `~/DorisDev/doris-run/fe/log` | Каталог файлов PID |
+| `DORIS_HOME` | `~/DorisDev/doris-run/fe` | Каталог среды выполнения FE (не каталог исходного кода) |
+
+```bash
+JAVA_OPTS=-Xmx8092m
+LOG_DIR=~/DorisDev/doris-run/fe/log
+PID_DIR=~/DorisDev/doris-run/fe/log
+DORIS_HOME=~/DorisDev/doris-run/fe
+```
+
+
+
+### 4.6 Настройка дополнительных параметров {#46-configure-modify-options}
+
+Поскольку некоторые зависимости имеют область действия `provided`, в IDEA требуется специальная настройка: в окне `Run/Debug Configurations` нажмите `Modify options` справа и установите флажок `Add dependencies with "provided" scope to classpath`.
+
+
+
+## 5. Запуск FE {#5-start-fe}
+
+Нажмите `Run` или `Debug`. IDEA начнёт компиляцию, после завершения которой запустится FE.
+
+
+
+Теперь можно приступать к разработке и отладке FE.
+
+## 6. Часто задаваемые вопросы (FAQ) {#6-frequently-asked-questions-faq}
+
+<!-- Knowledge type: Troubleshooting -->
+
+### Вопрос 1: При запуске возникает `ClassNotFoundException` или не удаётся найти некоторые зависимости {#q1-startup-throws-classnotfoundexception-or-some-dependencies-cannot-be-found}
+
+Флажок `Add dependencies with "provided" scope to classpath` не был установлен в `Run/Debug Configurations`. Решение см. в [разделе 4.6](#46-configure-modify-options).
+
+### Вопрос 2: `generated-source.sh` сообщает о несовпадении версии Thrift {#q2-generated-sourcesh-reports-thrift-version-mismatch}
+
+Версия `thirdparty/installed/bin/thrift` не соответствует вашей версии Doris. Переустановите Thrift согласно таблице соответствия версий в [разделе 1.2](#12-install-thrift).
+
+### Вопрос 3: После запуска FE недоступен для BE или клиентов {#q3-fe-cannot-be-accessed-by-be-or-clients-after-startup}
+
+Проверьте, задана ли для `priority_networks` в `fe.conf` подсеть, доступная с локального компьютера или из контейнера. Если BE запущен в Docker на macOS, см. примечание в разделе 4.4.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-profiler.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-profiler.md
new file mode 100644
index 000000000000..232722434505
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-profiler.md
@@ -0,0 +1,95 @@
+---
+title: Построение флейм-графиков с помощью FE Profiler
+language: ru
+description: Используйте async-profiler для построения флейм-графиков Apache Doris FE и выявления узких мест в производительности.
+keywords:
+ - Apache Doris
+ - FE Profiler
+ - async-profiler
+ - флейм-график
+ - profile_fe.sh
+ - узкое место в производительности FE
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Построение флейм-графиков с помощью FE Profiler {#generate-flame-graphs-with-fe-profiler}
+
+<!-- Knowledge type: Tool usage -->
+<!-- Applicable scenarios: Performance tuning / Troubleshooting -->
+
+## Введение {#introduction}
+
+В Apache Doris 2.1.4 и более поздних версиях в каталоге развертывания FE `${DORIS_FE_HOME}/bin` поставляется скрипт `profile_fe.sh`. Скрипт использует [async-profiler](https://github.com/async-profiler/async-profiler) для построения флейм-графика FE, который помогает выявить узкие места в производительности FE.
+
+### Поддерживаемые системы {#system-support}
+
+| Система | Поддерживается |
+|--------|-----------|
+| Linux | Да |
+| macOS | Да |
+| Windows | Пока нет |
+
+## Порядок использования {#usage-steps}
+
+### 1. Запустите profile_fe.sh {#1-run-profile_fesh}
+
+```shell
+# Profile the FE for 10 seconds by default and generate a flame graph
+${DORIS_FE_HOME}/bin/profile_fe.sh
+
+# Profile the FE for 30 seconds and generate a flame graph
+PROFILE_SECONDS=30 ${DORIS_FE_HOME}/bin/profile_fe.sh
+```
+
+| Переменная окружения | Значение | По умолчанию |
+|----------------------|---------|---------|
+| `PROFILE_SECONDS` | Длительность сбора данных async-profiler (в секундах) | `10` |
+
+### 2. Запустите нагрузку {#2-trigger-the-workload}
+
+После запуска команды async-profiler собирает данные в течение указанного времени. В этот период многократно отправляйте целевые запросы в FE, чтобы async-profiler мог зафиксировать кадры стека для нужных путей выполнения кода.
+
+### 3. Просмотрите флейм-график {#3-view-the-flame-graph}
+
+После завершения сбора данных скрипт создает HTML-файл с флейм-графиком в каталоге `${DORIS_FE_HOME}/log`. Узкие места в производительности FE обычно выглядят как «плато» (низкие и широкие участки). Оптимизируйте код, соответствующий этим кадрам стека.
+
+Пример флейм-графика:
+
+
+
+## Использование async-profiler в старых версиях FE {#using-async-profiler-on-older-fe-versions}
+
+Для версий Doris, предшествующих 2.1.4, вручную скачайте следующие два файла:
+
+1. Скачайте [ap-loader-all-3.0-8.jar](https://repo1.maven.org/maven2/me/bechberger/ap-loader-all/3.0-8/ap-loader-all-3.0-8.jar) в каталог `${DORIS_FE_HOME}/lib`.
+2. Скачайте [profile_fe.sh](https://raw.githubusercontent.com/apache/doris/master/bin/profile_fe.sh) в каталог `${DORIS_FE_HOME}/bin`.
+3. Запустите `profile_fe.sh`, чтобы построить флейм-график.
+
+## Часто задаваемые вопросы {#faq}
+
+**Вопрос: На флейм-графике нет кадров стека целевой функции за период сбора данных.**
+
+Обычно это означает, что во время сбора данных не выполнялся соответствующий путь обработки запроса. Пока работает `profile_fe.sh`, многократно отправляйте целевой SQL вручную или с помощью скрипта либо увеличьте длительность сбора данных с помощью `PROFILE_SECONDS=30`.
+
+**Вопрос: Как выбрать между FE Profiler и [Arthas](./arthas)?**
+
+- `profile_fe.sh`: подход на основе скрипта с фиксированной длительностью сбора данных, подходящий для быстрого разового построения флейм-графика.
+- Arthas: интерактивный терминал, поддерживающий `trace`, `watch` и другие средства более подробного наблюдения за работой программы во время выполнения; подходит для углубленного анализа.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-vscode-dev.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-vscode-dev.md
new file mode 100644
index 000000000000..a252043f701a
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/fe-vscode-dev.md
@@ -0,0 +1,137 @@
+---
+title: Настройка среды разработки FE - Visual Studio Code (VSCode)
+language: ru
+description: Настройка среды разработки Apache Doris FE в VSCode, включая настройку расширения Java, переключение JDK и удалённую отладку.
+keywords:
+ - VSCode
+ - Apache Doris FE
+ - среда разработки FE
+ - расширение Java
+ - удалённая отладка
+ - JDWP
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Настройка среды разработки FE в VSCode {#set-up-an-fe-development-environment-with-vscode}
+
+В этом документе описано, как с помощью VSCode настроить среду разработки Doris FE на компьютере разработчика, в WSL или в Docker. Разработчики, предпочитающие VSCode, могут использовать расширения Remote для удалённой разработки и отладки.
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenarios: IDE configuration / Debugging setup -->
+
+## 1. Предварительные требования {#1-prerequisites}
+
+| Компонент | Требования к версии | Назначение |
+| ----------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------- |
+| JDK | 11+ (требуется расширению Java); для компиляции можно использовать JDK 8 | Установите обе версии и переключайтесь между ними в настройках |
+| VSCode | Последний стабильный выпуск | Редактор |
+| Extension Pack for Java | Последняя версия | Поддержка языка Java |
+| Расширения Remote | Remote - SSH / Remote - WSL / Remote - Containers | Удалённая разработка |
+
+Рекомендуется установить [JDK 11](https://github.com/adoptium/temurin11-binaries/releases/) и JDK 8 отдельно в выделенный каталог, например `~/lib`, для использования расширениями IDE и компиляции исходного кода соответственно.
+
+## 2. Клонирование и открытие исходного кода {#2-clone-and-open-the-source-code}
+
+1. Загрузите исходный код с GitHub:
+
+ ```bash
+ git clone https://github.com/apache/doris.git
+ ```
+
+2. Откройте в VSCode каталог `fe` в дереве исходного кода (а не корневой каталог всего репозитория).
+
+## 3. Настройка VSCode {#3-configure-vscode}
+
+Создайте файл `settings.json` в каталоге `fe/.vscode/` и настройте среду выполнения Java и путь к Maven.
+
+<!-- Knowledge type: Configuration parameters -->
+
+| Параметр настройки | Описание |
+| ------------------------------- | ------------------------------------------------------------------------ |
+| `java.configuration.runtimes` | Регистрирует список доступных JDK, которые расширение Java использует для отдельных проектов |
+| `java.jdt.ls.java.home` | Указывает каталог JDK 11+, используемый самим расширением `vscode-java` |
+| `maven.executable.path` | Указывает путь к локальному исполняемому файлу Maven, используемому расширением `maven-language-server` |
+
+Пример:
+
+```json
+{
+ "java.configuration.runtimes": [
+ {
+ "name": "JavaSE-1.8",
+ "path": "/!!!path!!!/jdk-1.8.0_191"
+ },
+ {
+ "name": "JavaSE-11",
+ "path": "/!!!path!!!/jdk-11.0.14.1+1",
+ "default": true
+ }
+ ],
+ "java.jdt.ls.java.home": "/!!!path!!!/jdk-11.0.14.1+1",
+ "maven.executable.path": "/!!!path!!!/maven/bin/mvn"
+}
+```
+
+## 4. Компиляция FE {#4-compile-fe}
+
+Полная процедура компиляции описана в следующих документах:
+
+- [Компиляция с помощью LDB Toolchain](/community/source-install/compilation-with-ldb-toolchain)
+- [Компиляция с использованием образа Docker для разработки](/community/source-install/compilation-with-docker)
+
+## 5. Настройка удалённой отладки {#5-configure-remote-debugging}
+
+<!-- Knowledge type: Configuration parameters -->
+
+Для удалённой отладки FE из VSCode добавьте параметры JDWP при запуске FE:
+
+```shell
+-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+```
+
+Для этого отредактируйте `doris/output/fe/bin/start_fe.sh` и добавьте указанные выше параметры после `$JAVA $final_java_opt`.
+
+| Параметр JDWP | Значение | Описание |
+| ---------------- | ----------------- | ------------------------------------------------- |
+| `transport` | `dt_socket` | Использовать транспорт Socket |
+| `server` | `y` | Запустить сервер отладки и ожидать подключения отладчика |
+| `suspend` | `n` | Не приостанавливать выполнение при запуске; работать в обычном режиме |
+| `address` | `5005` | Порт прослушивания; можно изменить |
+
+После запуска FE используйте расширение Java Debug в VSCode, чтобы **подключиться** к `host:5005` и выполнять отладку с точками останова.
+
+## 6. Часто задаваемые вопросы (FAQ) {#6-frequently-asked-questions-faq}
+
+<!-- Knowledge type: Troubleshooting -->
+
+### Вопрос 1: Расширение Java сообщает, что версия JDK слишком низкая {#q1-the-java-extension-reports-that-the-jdk-version-is-too-low}
+
+`java.jdt.ls.java.home` должен указывать на JDK 11+. Даже если для компиляции используется JDK 8, самому расширению для работы по-прежнему требуется JDK 11+.
+
+### Вопрос 2: Не удаётся выполнить задачи Maven / команда `mvn` не найдена {#q2-maven-tasks-fail--mvn-is-not-found}
+
+Убедитесь, что `maven.executable.path` указывает на существующий исполняемый файл `mvn`, или добавьте его в системную переменную `PATH`.
+
+### Вопрос 3: Не удаётся подключиться для удалённой отладки {#q3-remote-debugging-cannot-connect}
+
+- Убедитесь, что процесс FE действительно загрузил параметры JDWP (проверьте командную строку с помощью `ps -ef | grep java`).
+- Убедитесь, что порт `address` не заблокирован межсетевым экраном.
+- Если используется `suspend=y`, FE приостановит выполнение в ожидании подключения отладчика. Измените значение на `suspend=n` или подключите отладчик самостоятельно.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/java-format-code.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/java-format-code.md
new file mode 100644
index 000000000000..e3d0fa095953
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/java-format-code.md
@@ -0,0 +1,126 @@
+---
+title: Правила форматирования кода Java
+language: ru
+description: "Правила форматирования кода Java в Apache Doris: порядок импорта, Checkstyle и настройка IDE."
+keywords:
+ - Apache Doris
+ - Форматирование кода Java
+ - Checkstyle
+ - IDEA
+ - VS Code
+ - Порядок импорта
+ - formatter-check
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Правила форматирования кода Java {#java-code-formatting-specification}
+
+<!-- Knowledge type: Code specification -->
+<!-- Applicable scenarios: FE development / Pull Request submission -->
+
+Код Apache Doris на Java (преимущественно модуль FE) обычно форматируется автоматически средствами IDE. В этом документе приведены общие правила форматирования и способы настройки различных IDE. В конвейере CI форматирование кода проверяется с помощью `formatter-check`.
+
+## Правила порядка импорта {#import-order-rules}
+
+<!-- Knowledge type: Code specification -->
+
+Операторы импорта должны быть расположены в следующем порядке групп, разделённых одной пустой строкой:
+
+```text
+org.apache.doris
+<blank line>
+third party package
+<blank line>
+standard java package
+<blank line>
+```
+
+Дополнительные правила:
+
+| Правило | Описание |
+|------|-------------|
+| Запрет на `import *` | Каждый класс необходимо импортировать явно |
+| Запрет на `import static` | Статический импорт не допускается |
+
+## Проверка Checkstyle при компиляции {#checkstyle-check-at-compile-time}
+
+При компиляции с помощью `maven` по умолчанию выполняется проверка `Checkstyle`, что немного замедляет компиляцию. Чтобы пропустить проверку, используйте следующую команду:
+
+```bash
+mvn clean install -DskipTests -Dcheckstyle.skip
+```
+
+В CI проверка форматирования кода через `formatter-check` обязательна. Пропускать локальную проверку следует только при разработке и отладке. Перед отправкой PR убедитесь, что форматирование соответствует требованиям.
+
+## Настройка плагина Checkstyle {#checkstyle-plugin-configuration}
+
+### Настройка Checkstyle в IDEA {#configure-checkstyle-in-idea}
+
+1. Установите плагин `Checkstyle-IDEA` в настройках.
+2. Перейдите в `Tools -> Checkstyle`, найдите `Configuration File` и нажмите `Use a local Checkstyle file`.
+3. Выберите файл `fe/check/checkstyle/checkstyle.xml` в корневом каталоге проекта.
+4. Убедитесь, что используется `Checkstyle` версии 9.3 или выше (рекомендуется последняя версия).
+
+
+
+После настройки можно использовать плагин `Checkstyle-IDEA` для проверки кода с помощью Checkstyle:
+
+
+
+### Настройка Checkstyle в VS Code {#configure-checkstyle-in-vs-code}
+
+1. Установите плагин `Checkstyle for Java`.
+2. Завершите настройку, следуя инструкциям и анимациям в [официальной документации по проверке кода Java](https://code.visualstudio.com/docs/java/java-linting).
+
+## Форматирование кода в IDEA {#idea-code-formatting}
+
+### Настройка автоматического форматирования {#auto-formatting-configuration}
+
+Рекомендуется использовать функцию автоматического форматирования IDEA:
+
+1. Перейдите в `Preferences -> Editor -> Code Style -> Java`.
+2. Нажмите значок настройки, выберите `Import Scheme`, затем `IntelliJ IDEA code style XML`.
+3. Выберите файл `build-support/IntelliJ-code-format.xml` в корневом каталоге проекта.
+
+### Изменение порядка объявлений в коде {#rearrange-code}
+
+Checkstyle проверяет порядок объявлений в коде в соответствии с разделом [Объявления классов и интерфейсов](https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html#1852).
+
+После импорта указанного выше файла `build-support/IntelliJ-code-format.xml` используйте `Code/Rearrange Code` для автоматического упорядочивания объявлений:
+
+
+
+## Автоматическое удаление неиспользуемых импортов {#automatically-remove-unused-imports}
+
+| Цель | Действие |
+|---------|--------|
+| Только удалить неиспользуемые импорты | Сочетание клавиш по умолчанию: `CTRL + ALT + O` |
+| Автоматически удалять и упорядочивать импорты при сохранении | Установите флажок `Preferences -> Editor -> General -> Auto Import -> Optimize Imports on the Fly` |
+
+## Часто задаваемые вопросы {#faq}
+
+**Вопрос: Как устранить ошибку `formatter-check` в CI?**
+
+Запустите проверку локально с помощью IDEA или плагина Checkstyle. Убедитесь, что порядок импорта, правила именования и порядок объявлений соответствуют требованиям в `fe/check/checkstyle/checkstyle.xml`, затем отправьте изменения повторно.
+
+**Вопрос: Влияет ли пропуск локальной проверки Checkstyle на слияние PR?**
+
+Да. В CI по-прежнему запускается `formatter-check`. Локальный параметр `-Dcheckstyle.skip` предназначен только для ускорения сборок при разработке. Итоговый код должен пройти проверку Checkstyle.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/pipeline-tracing.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/pipeline-tracing.md
new file mode 100644
index 000000000000..c9e108328215
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/pipeline-tracing.md
@@ -0,0 +1,111 @@
+---
+title: Pipeline Tracing
+language: ru
+description: Инструмент Pipeline Tracing в Apache Doris записывает трассировки планирования и визуализирует их с помощью Perfetto.
+keywords:
+ - Apache Doris
+ - Pipeline Tracing
+ - Движок выполнения Pipeline
+ - Perfetto
+ - Анализ планирования
+ - Настройка производительности BE
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Pipeline Tracing {#pipeline-tracing}
+
+<!-- Knowledge type: Tool usage -->
+<!-- Applicable scenarios: Performance tuning / Scheduling analysis -->
+
+## Введение {#introduction}
+
+В движке выполнения Pipeline в Apache Doris дерево плана выполнения каждого Instance разбивается на несколько Pipeline Tasks, которые планируются и выполняются собственным планировщиком Pipeline. При большом количестве Pipeline Tasks распределение этих Tasks по потокам и ядрам CPU становится важным фактором, влияющим на производительность выполнения.
+
+Инструмент Pipeline Tracing позволяет наблюдать за процессом планирования для конкретного запроса или за определённый период времени, упрощая анализ производительности и поиск узких мест.
+
+## Порядок использования {#usage-steps}
+
+### 1. Запись данных планирования {#1-record-scheduling-data}
+
+Используйте HTTP-интерфейсы, чтобы включать и отключать запись процесса планирования на BE и настраивать её режим. Эти настройки действуют только на выбранный BE.
+
+| Назначение | HTTP-команда |
+|---------|----------|
+| Отключить запись Pipeline Tracing | `curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=disable` |
+| Создавать отдельную запись для каждого запроса | `curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=perquery` |
+| Создавать запись трассировки за фиксированный период | `curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=periodic` |
+| Задать длительность периода (в секундах) | `curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?dump_interval=60` |
+
+Примеры команд:
+
+```shell
+# Disable Pipeline Tracing recording
+curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=disable
+
+# Produce one record per query
+curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=perquery
+
+# Produce a tracing record over a fixed period
+curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=periodic
+
+# Set the period length to 60 seconds
+curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?dump_interval=60
+```
+
+### 2. Преобразование формата данных {#2-convert-the-data-format}
+
+Записанные данные сохраняются в каталоге `log/tracing` соответствующего BE. Используйте скрипт преобразования из `doris/tools/pipeline-tracing/`, чтобы преобразовать исходные данные в формат JSON, который может загрузить Perfetto:
+
+```shell
+cd doris/tools/pipeline-tracing/
+python3 origin-to-show.py -s <SOURCE_FILE> -d <DEST>.json
+```
+
+Параметры:
+
+| Параметр | Значение |
+|------|------|
+| `-s <SOURCE_FILE>` | Путь к исходному файлу трассировки, созданному BE |
+| `-d <DEST>.json` | Путь к выходному файлу JSON для визуализации |
+
+Более подробные инструкции см. в файле `README.md` в этом каталоге.
+
+### 3. Визуализация в Perfetto {#3-visualize-in-perfetto}
+
+1. Откройте [Perfetto](https://ui.perfetto.dev/).
+2. Нажмите `Open trace file` и выберите файл JSON, созданный на предыдущем шаге.
+3. Просмотрите результат планирования:
+
+ 
+
+ Perfetto также позволяет увидеть, как одна и та же Task планируется на разных ядрах CPU:
+
+ 
+
+## Часто задаваемые вопросы {#faq}
+
+**В: Где находятся файлы трассировки?**
+
+Они находятся в каталоге `log/tracing` соответствующего BE. Имя файла содержит временную метку и информацию о запросе.
+
+**В: Влияет ли включение Pipeline Tracing на производительность?**
+
+Запись трассировки создаёт некоторые накладные расходы. Включайте её только на время анализа планирования и отключайте с помощью `type=disable` после завершения анализа.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/regression-testing.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/regression-testing.md
new file mode 100644
index 000000000000..74901d12fd1a
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/developer-guide/regression-testing.md
@@ -0,0 +1,983 @@
+---
+title: Фреймворк регрессионного тестирования
+language: ru
+description: Введение во фреймворк регрессионного тестирования Apache Doris и руководство по написанию тестовых сценариев, охватывающее Suite, Action, тесты e2e внешних источников данных и интеграцию с CI.
+keywords:
+ - регрессионное тестирование Apache Doris
+ - регрессионный тест
+ - Suite Action
+ - тестовый сценарий на Groovy
+ - фреймворк тестирования Doris
+ - run-regression-test.sh
+ - внешние источники данных Docker Compose
+ - интеграция с TeamCity
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Developer guide / Testing framework -->
+<!-- Applicable scenario: Kernel development / Submitting PRs / Writing regression cases -->
+
+# Фреймворк регрессионного тестирования {#regression-testing-framework}
+
+Этот документ предназначен для разработчиков, которым нужно писать или запускать регрессионные тесты Apache Doris. В нём описаны основные понятия, структура каталогов и конфигурация фреймворка тестирования, а также встроенные действия Action и использование тестов e2e внешних источников данных.
+
+## Содержание {#contents}
+
+- [Быстрый старт](#quick-start): запуск первого тестового сценария за 5 шагов
+- [Основные понятия](#core-concepts): три абстракции Suite / Group / Action
+- [Структура каталогов фреймворка](#framework-directory-structure): организация исходного кода и файлов данных
+- [Файл конфигурации по умолчанию](#default-configuration-file): основные поля в `regression-conf.groovy`
+- [Написание тестовых сценариев](#writing-test-cases): примеры действий sql / qt / test / explain / streamLoad и других
+- [Использование скрипта запуска](#launch-script-usage): распространённые команды для `run-regression-test.sh`
+- [Автоматическое создание файлов `.out`](#auto-generating-out-files): создание файлов для проверки результатов с помощью `-genOut` / `-forceGenOut`
+- [Механизм плагинов Suite](#suite-plugin-mechanism): расширение Suite с помощью скриптов на Groovy
+- [Интеграция с CI/CD](#cicd-integration): служебные сообщения TeamCity Service Message
+- [Тесты e2e внешних источников данных](#external-data-source-e2e-tests): MySQL / PostgreSQL / Hive / Iceberg / Hudi / Trino и другие
+
+---
+
+## Быстрый старт {#quick-start}
+
+<!-- Knowledge type: Procedure -->
+
+1. Заранее установите кластер Doris (FE + BE).
+2. Отредактируйте `${DORIS_HOME}/regression-test/conf/regression-conf.groovy` и укажите параметры подключения, такие как URL JDBC и имя пользователя.
+3. Создайте файл тестового сценария на Groovy в каталоге `regression-test/suites/<group>/`.
+4. Если сценарий содержит действие `qt`, создайте соответствующий TSV-файл `.out` в каталоге `regression-test/data/<group>/` для проверки результатов.
+5. Запустите тесты:
+
+ ```bash
+ # Run all cases
+ ${DORIS_HOME}/run-regression-test.sh
+
+ # Run a specific case
+ ${DORIS_HOME}/run-regression-test.sh --run <suiteName>
+ ```
+
+Дополнительные параметры запуска приведены в разделе [Использование скрипта запуска](#launch-script-usage).
+
+---
+
+## Основные понятия {#core-concepts}
+
+| Понятие | Значение |
+|------|------|
+| `Suite` | Тестовый сценарий. В настоящее время в качестве имени Suite используется имя файла. |
+| `Group` | Группа тестов, соответствующая каталогу, к которому относится тестовый сценарий. |
+| `Action` | Конкретное действие при тестировании, предоставляемое фреймворком, например `sql` для выполнения SQL, `test` для проверки результатов и `streamLoad` для загрузки данных. |
+
+---
+
+## Структура каталогов фреймворка {#framework-directory-structure}
+
+Основные файлы и каталоги, которые нужно знать при разработке:
+
+| Путь | Назначение |
+|------|------|
+| `run-regression-test.sh` | Скрипт запуска регрессионных тестов |
+| `regression-conf.groovy` | Файл конфигурации по умолчанию |
+| `data/` | Входные данные и файлы `.out` для проверки результатов |
+| `suites/` | Тестовые сценарии |
+
+Полное дерево каталогов:
+
+```text
+./${DORIS_HOME}
+ |-- run-regression-test.sh Regression test launch script
+ |-- regression-test
+ | |-- plugins Plugins directory
+ | |-- conf
+ | | |-- logback.xml Logging configuration file
+ | | |-- regression-conf.groovy Default configuration file
+ | |
+ | |-- framework Regression test framework source code
+ | |-- data Input and output files for cases
+ | | |-- demo Input and output files for demo cases
+ | | |-- correctness Input and output for correctness tests
+ | | |-- performance Input and output for performance tests
+ | | |-- utils Input and output for other utilities
+ | |
+ | |-- suites Regression test cases
+ | |-- demo Demo cases
+ | |-- correctness Correctness test cases
+ | |-- performance Performance test cases
+ | |-- utils Other utility cases
+ |
+ |-- output
+ |-- regression-test
+ |-- log Regression test logs
+```
+
+---
+
+## Файл конфигурации по умолчанию {#default-configuration-file}
+
+<!-- Knowledge type: Configuration parameters -->
+
+Перед запуском тестов приведите настройки JDBC и FE в соответствие с фактическим окружением. Основные поля `regression-conf.groovy`:
+
+```groovy
+/* ============ Generally, only the section below needs attention ============ */
+// Default DB. If it has not been created, the framework attempts to create it.
+defaultDb = "regression_test"
+
+// JDBC configuration
+jdbcUrl = "jdbc:mysql://127.0.0.1:9030/?"
+jdbcUser = "root"
+jdbcPassword = ""
+
+// FE address configuration, used for stream load
+feHttpAddress = "127.0.0.1:8030"
+feHttpUser = "root"
+feHttpPassword = ""
+
+/* ============ The section below generally does not need to be modified ============ */
+
+// The DORIS_HOME variable is passed in by run-regression-test.sh,
+// that is, java -DDORIS_HOME=./
+
+// Set the directory of regression test cases
+suitePath = "${DORIS_HOME}/regression-test/suites"
+// Set the directory of input and output data
+dataPath = "${DORIS_HOME}/regression-test/data"
+// Set the plugins directory
+pluginPath = "${DORIS_HOME}/regression-test/plugins"
+
+// By default, all groups are loaded. Multiple groups can be separated by half-width commas, for example: "demo,performance"
+// Usually you do not need to modify this in the config file; instead, override it dynamically through run-regression-test.sh --run -g
+testGroups = ""
+// By default, all cases are loaded. You can also override this through run-regression-test.sh --run -s
+testSuites = ""
+// The case directories loaded by default. Override through run-regression-test.sh --run -d
+testDirectories = ""
+
+// Exclude cases in these groups. Override through run-regression-test.sh --run -xg
+excludeGroups = ""
+// Exclude these suites. Override through run-regression-test.sh --run -xs
+excludeSuites = ""
+// Exclude these directories. Override through run-regression-test.sh --run -xd
+excludeDirectories = ""
+
+// Other custom configuration
+customConf1 = "test_custom_conf_value"
+```
+
+---
+
+## Написание тестовых сценариев {#writing-test-cases}
+
+<!-- Knowledge type: Procedure -->
+
+1. Перейдите в каталог `${DORIS_HOME}/regression-test`.
+2. Выберите каталог для сценария в зависимости от цели тестирования: тесты корректности размещайте в `suites/correctness`, а тесты производительности в `suites/performance`.
+3. Создайте новый файл сценария на Groovy и объедините несколько действий Action для реализации логики теста.
+
+Действия Action предоставляют операции тестирования, определяемые с помощью DSL. Ниже описаны распространённые действия.
+
+### Действие sql {#sql-action}
+
+Действие `sql` отправляет SQL и получает результат. При ошибке выполнения запроса оно выбрасывает исключение.
+
+Параметры:
+
+| Параметр | Описание |
+|------|------|
+| `String sql` | Входная строка SQL |
+| Возвращает `List<List<Object>>` | Результат запроса. Для DDL/DML возвращает одну строку и один столбец с единственным значением updateRowCount. |
+
+Следующий пример кода находится в файле `${DORIS_HOME}/regression-test/suites/demo/sql_action.groovy`:
+
+```groovy
+suite("sql_action", "demo") {
+ // execute sql and ignore result
+ sql "show databases"
+
+ // execute sql and get result, outer List denote rows, inner List denote columns in a single row
+ List<List<Object>> tables = sql "show tables"
+
+ // assertXxx() will invoke junit5's Assertions.assertXxx() dynamically
+ assertTrue(tables.size() >= 0) // test rowCount >= 0
+
+ // syntax error
+ try {
+ sql "a b c d e"
+ throw new IllegalStateException("Should be syntax error")
+ } catch (java.sql.SQLException t) {
+ assertTrue(true)
+ }
+
+ def testTable = "test_sql_action1"
+
+ try {
+ sql "DROP TABLE IF EXISTS ${testTable}"
+
+ // multi-line sql
+ def result1 = sql """
+ CREATE TABLE IF NOT EXISTS ${testTable} (
+ id int
+ )
+ DISTRIBUTED BY HASH(id) BUCKETS 1
+ PROPERTIES (
+ "replication_num" = "1"
+ )
+ """
+
+ // DDL/DML return 1 row and 1 column, the only value is update row count
+ assertTrue(result1.size() == 1)
+ assertTrue(result1[0].size() == 1)
+ assertTrue(result1[0][0] == 0, "Create table should update 0 rows")
+
+ def result2 = sql "INSERT INTO test_sql_action1 values(1), (2), (3)"
+ assertTrue(result2.size() == 1)
+ assertTrue(result2[0].size() == 1)
+ assertTrue(result2[0][0] == 3, "Insert should update 3 rows")
+ } finally {
+ /**
+ * try_xxx(args) means:
+ *
+ * try {
+ * return xxx(args)
+ * } catch (Throwable t) {
+ * // do nothing
+ * return null
+ * }
+ */
+ try_sql("DROP TABLE IF EXISTS ${testTable}")
+
+ // you can see the error sql will not throw exception and return
+ try {
+ def errorSqlResult = try_sql("a b c d e f g")
+ assertTrue(errorSqlResult == null)
+ } catch (Throwable t) {
+ assertTrue(false, "Never catch exception")
+ }
+ }
+
+ // order_sql(sqlStr) equals to sql(sqlStr, isOrder=true)
+ // sort result by string dict
+ def list = order_sql """
+ select 2
+ union all
+ select 1
+ union all
+ select null
+ union all
+ select 15
+ union all
+ select 3
+ """
+
+ assertEquals(null, list[0][0])
+ assertEquals(1, list[1][0])
+ assertEquals(15, list[2][0])
+ assertEquals(2, list[3][0])
+ assertEquals(3, list[4][0])
+}
+```
+
+### Действие qt {#qt-action}
+
+Действие `qt` отправляет SQL и сверяет результат с соответствующим TSV-файлом `.out`.
+
+| Параметр | Описание |
+|------|------|
+| `String sql` | Входная строка SQL |
+| Возвращаемое значение | void |
+
+Следующий пример кода находится в файле `${DORIS_HOME}/regression-test/suites/demo/qt_action.groovy`:
+
+```groovy
+suite("qt_action", "demo") {
+ /**
+ * qt_xxx sql equals to quickTest(xxx, sql) witch xxx is tag.
+ * the result will be compare to the relate file: ${DORIS_HOME}/regression_test/data/qt_action.out.
+ *
+ * if you want to generate .out tsv file for real execute result. you can run with -genOut or -forceGenOut option.
+ * e.g
+ * ${DORIS_HOME}/run-regression-test.sh --run qt_action -genOut
+ * ${DORIS_HOME}/run-regression-test.sh --run qt_action -forceGenOut
+ */
+ qt_select "select 1, 'beijing' union all select 2, 'shanghai'"
+
+ qt_select2 "select 2"
+
+ // order result by string dict then compare to .out file.
+ // order_qt_xxx sql equals to quickTest(xxx, sql, true).
+ order_qt_union_all """
+ select 2
+ union all
+ select 1
+ union all
+ select null
+ union all
+ select 15
+ union all
+ select 3
+ """
+}
+```
+
+### Действие test {#test-action}
+
+Действие `test` поддерживает более сложные правила проверки, например проверку количества строк, времени выполнения и наличия исключения.
+
+Доступные параметры:
+
+| Параметр | Описание |
+|------|------|
+| `String sql` | Входная строка SQL |
+| `List<List<Object>> result` | Сравнивает фактический результат запроса с объектом List на равенство |
+| `Iterator<Object> resultIterator` | Сравнивает фактический результат запроса с Iterator на равенство |
+| `String resultFile` | URI файла (локальный относительный путь или путь http(s)), используемого для сравнения с результатом запроса. Формат аналогичен `.out`, но без заголовков блоков и комментариев. |
+| `String exception` | Проверяет, что выброшенное исключение содержит указанные строки |
+| `long rowNum` | Проверяет количество строк результата |
+| `long time` | Проверяет, что время выполнения меньше указанного значения в миллисекундах |
+| `Closure<List<List<Object>>, Throwable, Long, Long> check` | Пользовательская функция обратного вызова для проверки, получающая результат, исключение и время. Если она задана, остальные методы проверки отключаются. |
+
+Следующий пример кода находится в файле `${DORIS_HOME}/regression-test/suites/demo/test_action.groovy`:
+
+```groovy
+suite("test_action", "demo") {
+ test {
+ sql "abcdefg"
+ // check exception message contains
+ exception "errCode = 2, detailMessage = Syntax error"
+ }
+
+ test {
+ sql """
+ select *
+ from (
+ select 1 id
+ union all
+ select 2
+ ) a
+ order by id"""
+
+ // multi check condition
+
+ // check return 2 rows
+ rowNum 2
+ // execute time must <= 5000 millisecond
+ time 5000
+ // check result, must be 2 rows and 1 column, the first row is 1, second is 2
+ result(
+ [[1], [2]]
+ )
+ }
+
+ test {
+ sql "a b c d e f g"
+
+ // other check will not work because already declared a check callback
+ exception "aaaaaaaaa"
+
+ // callback
+ check { result, exception, startTime, endTime ->
+ // assertXxx() will invoke junit5's Assertions.assertXxx() dynamically
+ assertTrue(exception != null)
+ }
+ }
+
+ test {
+ sql """
+ select 2
+ union all
+ select 1
+ union all
+ select null
+ union all
+ select 15
+ union all
+ select 3
+ """
+
+ check { result, ex, startTime, endTime ->
+ // same as order_sql(sqlStr)
+ result = sortRows(result)
+
+ assertEquals(null, result[0][0])
+ assertEquals(1, result[1][0])
+ assertEquals(15, result[2][0])
+ assertEquals(2, result[3][0])
+ assertEquals(3, result[4][0])
+ }
+ }
+
+ // execute sql and order query result, then compare to iterator
+ def selectValues = [1, 2, 3, 4]
+ test {
+ order true
+ sql selectUnionAll(selectValues)
+ resultIterator(selectValues.iterator())
+ }
+
+ // compare to data/demo/test_action.csv
+ test {
+ order true
+ sql selectUnionAll(selectValues)
+
+ // you can set to http://xxx or https://xxx
+ // and compare to http response body
+ resultFile "test_action.csv"
+ }
+}
+```
+
+### Действие explain {#explain-action}
+
+Действие `explain` проверяет, содержит ли строка, возвращаемая `EXPLAIN`, указанные строки.
+
+Доступные параметры:
+
+| Параметр | Описание |
+|------|------|
+| `String sql` | SQL-запрос. Удалите `EXPLAIN` из SQL. |
+| `String contains` | Проверяет, что вывод explain содержит указанные строки. Вызывайте несколько раз, чтобы проверить сразу несколько строк. |
+| `String notContains` | Проверяет, что вывод explain не содержит указанных строк. Можно вызывать несколько раз. |
+| `Closure<String> check` | Пользовательская функция обратного вызова для проверки, получающая возвращённую строку. Если функция проверки задана, остальные методы проверки отключаются. |
+| `Closure<String, Throwable, Long, Long> check` | Пользовательская функция обратного вызова для проверки, дополнительно получающая исключение и время. |
+
+Следующий пример кода находится в файле `${DORIS_HOME}/regression-test/suites/demo/explain_action.groovy`:
+
+```groovy
+suite("explain_action", "demo") {
+ explain {
+ sql("select 100")
+
+ // contains("OUTPUT EXPRS:<slot 0> 100\n") && contains("PARTITION: UNPARTITIONED\n")
+ contains "OUTPUT EXPRS:<slot 0> 100\n"
+ contains "PARTITION: UNPARTITIONED\n"
+ }
+
+ explain {
+ sql("select 100")
+
+ // contains(" 100\n") && !contains("abcdefg") && !("1234567")
+ contains " 100\n"
+ notContains "abcdefg"
+ notContains "1234567"
+ }
+
+ explain {
+ sql("select 100")
+ // simple callback
+ check { explainStr -> explainStr.contains("abcdefg") || explainStr.contains(" 100\n") }
+ }
+
+ explain {
+ sql("a b c d e")
+ // callback with exception and time
+ check { explainStr, exception, startTime, endTime ->
+ // assertXxx() will invoke junit5's Assertions.assertXxx() dynamically
+ assertTrue(exception != null)
+ }
+ }
+}
+```
+
+### Действие streamLoad {#streamload-action}
+
+Действие `streamLoad` загружает данные.
+
+Доступные параметры:
+
+| Параметр | Описание |
+|------|------|
+| `String db` | Имя базы данных. По умолчанию используется `defaultDb` из `regression-conf.groovy`. |
+| `String table` | Имя таблицы |
+| `String file` | Путь к файлу для загрузки. Может быть относительным путём в каталоге `data/` или URL с протоколом http. |
+| `Iterator<List<Object>> inputIterator` | Итератор для загрузки |
+| `String inputText` | Текст для загрузки. Используется редко. |
+| `InputStream inputStream` | Поток байтов для загрузки. Используется редко. |
+| `long time` | Проверяет, что время выполнения меньше указанного значения в миллисекундах |
+| `void set(String key, String value)` | Задаёт заголовок HTTP-запроса Stream Load, например `label` или `columnSeparator` |
+| `Closure<String, Throwable, Long, Long> check` | Пользовательская функция обратного вызова для проверки. Если она задана, остальные проверки отключаются. |
+
+Следующий пример кода находится в файле `${DORIS_HOME}/regression-test/suites/demo/streamLoad_action.groovy`:
+
+```groovy
+suite("streamLoad_action", "demo") {
+
+ def tableName = "test_streamload_action1"
+
+ sql """
+ CREATE TABLE IF NOT EXISTS ${tableName} (
+ id int,
+ name varchar(255)
+ )
+ DISTRIBUTED BY HASH(id) BUCKETS 1
+ PROPERTIES (
+ "replication_num" = "1"
+ )
+ """
+
+ streamLoad {
+ // you can skip declare db, because a default db already specify in ${DORIS_HOME}/conf/regression-conf.groovy
+ // db 'regression_test'
+ table tableName
+
+ // default label is UUID:
+ // set 'label' UUID.randomUUID().toString()
+
+ // default column_separator is specify in doris fe config, usually is '\t'.
+ // this line change to ','
+ set 'column_separator', ','
+
+ // relate to ${DORIS_HOME}/regression-test/data/demo/streamload_input.csv.
+ // also, you can stream load a http stream, e.g. http://xxx/some.csv
+ file 'streamload_input.csv'
+
+ time 10000 // limit inflight 10s
+
+ // stream load action will check result, include Success status, and NumberTotalRows == NumberLoadedRows
+ }
+
+
+ // stream load 100 rows
+ def rowCount = 100
+ // range: [0, rowCount)
+ // or rangeClosed: [0, rowCount]
+ def rowIt = range(0, rowCount)
+ .mapToObj({i -> [i, "a_" + i]}) // change Long to List<Long, String>
+ .iterator()
+
+ streamLoad {
+ table tableName
+ // also, you can upload a memory iterator
+ inputIterator rowIt
+
+ // if declared a check callback, the default check condition will ignore.
+ // So you must check all condition
+ check { result, exception, startTime, endTime ->
+ if (exception != null) {
+ throw exception
+ }
+ log.info("Stream load result: ${result}".toString())
+ def json = parseJson(result)
+ assertEquals("success", json.Status.toLowerCase())
+ assertEquals(json.NumberTotalRows, json.NumberLoadedRows)
+ assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0)
+ }
+ }
+}
+```
+
+### Другие действия {#other-actions}
+
+Примеры действий `thread`, `lazyCheck`, `events`, `connect` и `selectUnionAll` находятся в следующем каталоге:
+
+```text
+${DORIS_HOME}/regression-test/suites/demo
+```
+
+---
+
+## Использование скрипта запуска {#launch-script-usage}
+
+<!-- Knowledge type: Procedure -->
+
+```bash
+# View the script parameter description
+./run-regression-test.sh h
+
+# View the framework parameter description
+./run-regression-test.sh --run -h
+
+# Run all cases
+./run-regression-test.sh
+
+# Delete the framework compilation results and test logs
+./run-regression-test.sh --clean
+
+# Run the case whose suiteName is sql_action. Currently the suiteName equals the file name prefix; this example corresponds to the case file sql_action.groovy
+./run-regression-test.sh --run sql_action
+
+# Run cases whose suiteName contains 'sql'. **Note that single quotes are required.**
+./run-regression-test.sh --run '*sql*'
+
+# Run the demo and performance groups
+./run-regression-test.sh --run -g 'demo,performance'
+
+# Run sql_action under the demo group
+./run-regression-test.sh --run -g demo -s sql_action
+
+# Run sql_action under the demo directory
+./run-regression-test.sh --run -d demo -s sql_action
+
+# Run cases under the demo directory, excluding sql_action
+./run-regression-test.sh --run -d demo -xs sql_action
+
+# Exclude cases under the demo directory
+./run-regression-test.sh --run -xd demo
+
+# Exclude cases under the demo group
+./run-regression-test.sh --run -xg demo
+
+# Custom configuration
+./run-regression-test.sh --run -conf a=b
+
+# Concurrent execution
+./run-regression-test.sh --run -parallel 5 -suiteParallel 10 -actionParallel 20
+```
+
+---
+
+## Автоматическое создание файлов `.out` {#auto-generating-out-files}
+
+```bash
+# Automatically generate the .out file for the sql_action case from the query result. Skip if the .out file already exists.
+./run-regression-test.sh --run sql_action -genOut
+
+# Automatically generate the .out file for the sql_action case from the query result. Overwrite if the .out file already exists.
+./run-regression-test.sh --run sql_action -forceGenOut
+```
+
+---
+
+## Механизм плагинов Suite {#suite-plugin-mechanism}
+
+Если нужно расширить класс Suite без изменения исходного кода, это можно сделать с помощью плагинов. По умолчанию плагины размещаются в каталоге `${DORIS_HOME}/regression-test/plugins`, где можно определять методы расширения с помощью скриптов на Groovy.
+
+Следующий файл `plugin_example.groovy` добавляет в класс Suite функцию `testPlugin` для записи в журнал:
+
+```groovy
+import org.apache.doris.regression.suite.Suite
+
+// register `testPlugin` function to Suite,
+// and invoke in ${DORIS_HOME}/regression-test/suites/demo/test_plugin.groovy
+Suite.metaClass.testPlugin = { String info /* param */ ->
+
+ // which suite invoke current function?
+ Suite suite = delegate as Suite
+
+ // function body
+ suite.getLogger().info("Test plugin: suiteName: ${suite.name}, info: ${info}".toString())
+
+ // optional return value
+ return "OK"
+}
+
+logger.info("Added 'testPlugin' function to Suite")
+```
+
+После регистрации эту функцию можно вызывать из обычных тестовых сценариев. Например, в `${DORIS_HOME}/regression-test/suites/demo/test_plugin.groovy`:
+
+```groovy
+suite("test_plugin", "demo") {
+ // register testPlugin function in ${DORIS_HOME}/regression-test/plugins/plugin_example.groovy
+ def result = testPlugin("message from suite")
+ assertEquals("OK", result)
+}
+```
+
+---
+
+## Интеграция с CI/CD {#cicd-integration}
+
+### TeamCity {#teamcity}
+
+TeamCity распознаёт служебные сообщения Service Messages в stdout. При запуске фреймворка регрессионного тестирования с параметром `--teamcity` фреймворк выводит сообщения TeamCity Service Messages в stdout. TeamCity автоматически считывает этот журнал событий и отображает `Tests` в текущем конвейере, включая тестовые сценарии и их журналы.
+
+Ниже приведён пример команды запуска. Настройка `-Dteamcity.enableStdErr=false` направляет журналы ошибок также в stdout, что упрощает их анализ в хронологическом порядке:
+
+```bash
+JAVA_OPTS="-Dteamcity.enableStdErr=${enableStdErr}" ./run-regression-test.sh --teamcity --run
+```
+
+---
+
+## Тесты e2e внешних источников данных {#external-data-source-e2e-tests}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: External data source development / Catalog debugging -->
+
+Doris поддерживает запросы к различным внешним источникам данных. Фреймворк регрессионного тестирования позволяет разворачивать внешние источники данных с помощью Docker Compose для тестирования e2e интеграции Doris с этими источниками.
+
+### 0. Подготовка {#0-preparation}
+
+Перед запуском Docker измените переменную `CONTAINER_UID` в `docker/thirdparties/custom_settings.env`, например задайте ей значение `doris-10002-18sda1-`. Скрипты запуска используют этот префикс при замене имён в docker compose, чтобы имена и сети нескольких контейнерных окружений не конфликтовали.
+
+Перед запуском контейнеров проверьте сетевые настройки сервера или облачного хоста и убедитесь, что `/etc/hosts` содержит сопоставление имени хоста (`hostname`) с его IP-адресом (`hostname -i`), например:
+
+```text
+10.0.0.46 iZj6cbwlx5pl6y0681t6scZ iZj6cbwlx5pl6y0681t6scZ
+```
+
+Здесь последовательно указаны IP-адрес (вывод `hostname -i`, обычно IP-адрес eth0), имя хоста (вывод `hostname`) и псевдоним (совпадает с именем хоста).
+
+> **Примечание**: `run-thirdparties-docker.sh` определяет основной сетевой интерфейс, перебирая имена, соответствующие шаблону `eth[0-9]`. Современные дистрибутивы Linux с systemd/udev назначают предсказуемые имена, такие как `enp3s0`, `ens33` или `eno1`, которые скрипт не распознаёт. Если на вашем хосте используется такое имя, скрипт не сможет обнаружить интерфейс. Перед запуском вручную задайте переменной `eth_name` внутри `run-thirdparties-docker.sh` фактическое имя интерфейса.
+
+### 1. Запуск контейнера {#1-start-the-container}
+
+В настоящее время Doris поддерживает Docker compose для таких источников данных, как es, mysql, pg, hive, sqlserver, oracle, iceberg, hudi и trino. Соответствующие файлы находятся в каталоге `docker/thirdparties/docker-compose`.
+
+По умолчанию контейнеры Docker всех внешних источников данных можно запустить следующей командой (для hive и hudi требуется скачать заранее подготовленные файлы данных; см. соответствующие разделы ниже):
+
+```bash
+cd docker/thirdparties && sh run-thirdparties-docker.sh
+```
+
+Для выполнения этой команды требуются права root или sudo. Успешное завершение означает, что все контейнеры запущены; проверить их можно командой `docker ps -a`. Во время запуска контейнеров журналы можно просматривать с помощью `docker logs -f <container-name>`.
+
+Остановить все контейнеры:
+
+```bash
+cd docker/thirdparties && sh run-thirdparties-docker.sh --stop
+```
+
+Запустить или остановить отдельные компоненты:
+
+```bash
+cd docker/thirdparties
+# Start mysql
+sh run-thirdparties-docker.sh -c mysql
+# Start mysql, pg, iceberg
+sh run-thirdparties-docker.sh -c mysql,pg,iceberg
+# Stop mysql, pg, iceberg
+sh run-thirdparties-docker.sh -c mysql,pg,iceberg --stop
+```
+
+#### 1.1 MySQL {#11-mysql}
+
+Файлы Docker compose для MySQL находятся в каталоге `docker/thirdparties/docker-compose/mysql`:
+
+- `mysql-5.7.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются. Имя пользователя и пароль по умолчанию: `root` / `123456`.
+- `mysql-5.7.env`: файл конфигурации. Задаёт публикуемый порт контейнера MySQL, по умолчанию 3316.
+- `init/`: SQL-файлы в этом каталоге выполняются автоматически после создания контейнера. По умолчанию они создают базы данных и таблицы и вставляют небольшой объём данных.
+- `data/`: локальный каталог данных, монтируемый после запуска контейнера. Скрипт `run-thirdparties-docker.sh` очищает и создаёт его заново при каждом запуске.
+
+#### 1.2 PostgreSQL {#12-postgresql}
+
+Файлы Docker compose для PostgreSQL находятся в каталоге `docker/thirdparties/docker-compose/postgresql`:
+
+- `postgresql-14.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются. Имя пользователя и пароль по умолчанию: `postgres` / `123456`.
+- `postgresql-14.env`: файл конфигурации. Задаёт публикуемый порт контейнера PostgreSQL, по умолчанию 5442.
+- `init/`: SQL-файлы в этом каталоге выполняются автоматически после создания контейнера. По умолчанию они создают базы данных и таблицы и вставляют небольшой объём данных.
+- `data/`: локальный каталог данных, монтируемый после запуска контейнера. Скрипт `run-thirdparties-docker.sh` очищает и создаёт его заново при каждом запуске.
+
+#### 1.3 Hive {#13-hive}
+
+Файлы Docker compose для Hive находятся в каталоге `docker/thirdparties/docker-compose/hive` и поддерживают как Hive2, так и Hive3:
+
+- `hive-2x.yaml.tpl`, `hive-3x.yaml.tpl`: шаблоны файлов Docker compose. Изменения не требуются.
+- `hadoop-hive.env.tpl`, `hadoop-hive-2x.env.tpl`, `hadoop-hive-3x.env.tpl`: шаблоны файлов конфигурации. Изменения не требуются.
+- `hive-2x_settings.env`: скрипт настройки инициализации Hive2. Скрипт `run-thirdparties-docker.sh` автоматически вызывает его при запуске. Можно изменить четыре публикуемых порта `FS_PORT`, `HMS_PORT`, `HS_PORT` и `PG_PORT`, соответствующие `hive2HdfsPort`, `hive2HmsPort`, `hive2ServerPort` и `hive2PgPort` в `regression-conf.groovy`. Первые два являются портами hadoop defaultFs и Hive metastore; их значения по умолчанию: 8020 и 9083.
+- `hive-3x_settings.env`: скрипт настройки инициализации Hive3. Можно изменить `FS_PORT`, `HMS_PORT`, `HS_PORT` и `PG_PORT`, соответствующие `hive3HdfsPort`, `hive3HmsPort`, `hive3ServerPort` и `hive3PgPort`. Значения первых двух по умолчанию: 8320 и 9383.
+- Каталог `scripts/` монтируется в контейнер после его запуска. Содержимое файлов изменять не нужно. Однако перед запуском контейнера необходимо скачать заранее подготовленные файлы:
+
+ Скачайте `https://doris-regression-hk.oss-cn-hongkong.aliyuncs.com/regression/datalake/pipeline_data/tpch1.db.tar.gz` в каталог `scripts/` и распакуйте архив.
+
+#### 1.4 Elasticsearch {#14-elasticsearch}
+
+Включает образы Docker для ES6, ES7 и ES8, расположенные в каталоге `docker/thirdparties/docker-compose/elasticsearch/`:
+
+- `es.yaml.tpl`: шаблон файла Docker compose. Включает версии ES6, ES7 и ES8. Изменения не требуются.
+- `es.env`: файл конфигурации. Необходимо настроить номера портов ES.
+- `scripts/`: содержит скрипты инициализации, выполняемые после запуска образа.
+
+#### 1.5 Oracle {#15-oracle}
+
+Предоставляет образ Oracle 11, расположенный в каталоге `docker/thirdparties/docker-compose/oracle/`:
+
+- `oracle-11.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются.
+- `oracle-11.env`: задаёт публикуемый порт Oracle, по умолчанию 1521.
+
+#### 1.6 SQLServer {#16-sqlserver}
+
+Предоставляет образ SQLServer 2022, расположенный в каталоге `docker/thirdparties/docker-compose/sqlserver/`:
+
+- `sqlserver.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются.
+- `sqlserver.env`: задаёт публикуемый порт SQLServer, по умолчанию 1433.
+
+#### 1.7 ClickHouse {#17-clickhouse}
+
+Предоставляет образ ClickHouse 22, расположенный в каталоге `docker/thirdparties/docker-compose/clickhouse/`:
+
+- `clickhouse.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются.
+- `clickhouse.env`: задаёт публикуемый порт ClickHouse, по умолчанию 8123.
+
+#### 1.8 Iceberg {#18-iceberg}
+
+Предоставляет набор образов Iceberg + Spark + Minio, расположенный в каталоге `docker/thirdparties/docker-compose/iceberg/`:
+
+- `iceberg.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются.
+- `entrypoint.sh.tpl`: шаблон скрипта инициализации, выполняемого после запуска образа. Изменения не требуются.
+- `spark-defaults.conf.tpl`: шаблон файла конфигурации Spark. Изменения не требуются.
+- `iceberg.env`: файл конфигурации публикуемых портов. При необходимости измените порты, чтобы избежать конфликтов.
+
+После запуска можно запустить spark-sql следующей командой:
+
+```bash
+docker exec -it doris-xx-spark-iceberg spark-sql
+```
+
+Здесь `doris-xx-spark-iceberg` является именем контейнера.
+
+Примеры операций с Iceberg через spark-sql:
+
+```sql
+create database db1;
+show databases;
+create table db1.test1(k1 bigint, k2 bigint, k3 string) partitioned by (k1);
+insert into db1.test1 values(1,2,'abc');
+select * from db1.test1;
+quit;
+```
+
+Также можно использовать spark-shell:
+
+```scala
+docker exec -it doris-xx-spark-iceberg spark-shell
+
+spark.sql(s"create database db1")
+spark.sql(s"show databases").show()
+spark.sql(s"create table db1.test1(k1 bigint, k2 bigint, k3 string) partitioned by (k1)").show()
+spark.sql(s"show tables from db1").show()
+spark.sql(s"insert into db1.test1 values(1,2,'abc')").show()
+spark.sql(s"select * from db1.test1").show()
+:q
+```
+
+Подробнее об использовании см. в [официальной документации Tabular](https://tabular.io/blog/docker-spark-and-iceberg/).
+
+#### 1.9 Hudi {#19-hudi}
+
+Файлы Docker compose для Hudi находятся в каталоге `docker/thirdparties/docker-compose/hudi`:
+
+- `hudi.yaml.tpl`: шаблон файла Docker compose. Изменения не требуются.
+- `hadoop.env`: шаблон файла конфигурации. Изменения не требуются.
+- Каталог `scripts/` монтируется в контейнер после его запуска. Содержимое файлов изменять не нужно. Однако перед запуском контейнера необходимо скачать заранее подготовленные файлы:
+
+ Скачайте `https://doris-build-hk-1308700295.cos.ap-hongkong.myqcloud.com/regression/load/hudi/hudi_docker_compose_attached_file.zip` в каталог `scripts/` и распакуйте архив.
+
+Перед запуском можно добавить следующие записи в `/etc/hosts`, чтобы избежать ошибок `UnknownHostException`:
+
+```text
+127.0.0.1 adhoc-1
+127.0.0.1 adhoc-2
+127.0.0.1 namenode
+127.0.0.1 datanode1
+127.0.0.1 hiveserver
+127.0.0.1 hivemetastore
+127.0.0.1 sparkmaster
+```
+
+После запуска можно выполнить запросы hive следующей командой:
+
+```bash
+docker exec -it adhoc-2 /bin/bash
+
+beeline -u jdbc:hive2://hiveserver:10000 \
+--hiveconf hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat \
+--hiveconf hive.stats.autogather=false
+
+show tables;
+show partitions stock_ticks_mor_rt;
+select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
+select symbol, max(ts) from stock_ticks_mor_ro group by symbol HAVING symbol = 'GOOG';
+exit;
+```
+
+Также можно использовать spark-shell:
+
+```bash
+docker exec -it adhoc-1 /bin/bash
+
+$SPARK_INSTALL/bin/spark-shell \
+ --jars /var/scripts/hudi_docker_compose_attached_file/jar/hoodie-hive-sync-bundle.jar \
+ --master local[2] \
+ --driver-class-path $HADOOP_CONF_DIR \
+ --conf spark.sql.hive.convertMetastoreParquet=false \
+ --deploy-mode client \
+ --driver-memory 1G \
+ --executor-memory 3G \
+ --num-executors 1
+
+spark.sql("show tables").show(100, false)
+spark.sql("select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG'").show(100, false)
+spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close from stock_ticks_cow where symbol = 'GOOG'").show(100, false)
+spark.sql("select symbol, max(ts) from stock_ticks_mor_ro group by symbol HAVING symbol = 'GOOG'").show(100, false)
+spark.sql("select symbol, max(ts) from stock_ticks_mor_rt group by symbol HAVING symbol = 'GOOG'").show(100, false)
+spark.sql("select `_hoodie_commit_time`, symbol, ts, volume, open, close from stock_ticks_mor_ro where symbol = 'GOOG'").show(100, false)
+:q
+```
+
+Подробнее об использовании см. в [официальной документации Hudi](https://hudi.apache.org/docs/docker_demo).
+
+#### 1.10 Trino {#110-trino}
+
+Файлы Docker compose для Trino находятся в каталоге `docker/thirdparties/docker-compose/trino`. Файлы шаблонов:
+
+- `gen_env.sh.tpl`: генерирует номера портов для HDFS. Изменения не требуются. При возникновении конфликтов портов их номера можно изменить.
+- `hive.properties.tpl`: задаёт параметры Catalog для trino. Изменения не требуются.
+- `trino_hive.env.tpl`: конфигурация окружения для Hive. Изменения не требуются.
+- `trino_hive.yaml.tpl`: файл Docker compose. Изменения не требуются.
+
+После запуска контейнера Docker с Trino настраивается окружение Trino + hive Catalog. На этом этапе в Trino есть два Catalog:
+
+1. `hive`
+2. `tpch` (входит в состав контейнера Docker с trino)
+
+Подробнее об использовании см. в [официальной документации Trino](https://trino.io/docs/current/installation/containers.html).
+
+### 2. Запуск регрессионных тестов {#2-run-regression-tests}
+
+Регрессионные тесты внешних таблиц по умолчанию отключены. Их можно включить, изменив настройки в `regression-test/conf/regression-conf.groovy`. Примеры параметров конфигурации:
+
+| Параметр конфигурации | Описание |
+|--------|------|
+| `enableJdbcTest` | Включает тест внешней таблицы JDBC. Требует запуска контейнеров MySQL и PostgreSQL. |
+| `mysql_57_port` | Публикуемый порт MySQL, по умолчанию 3316. |
+| `pg_14_port` | Публикуемый порт PostgreSQL, по умолчанию 5442. |
+| `enableHiveTest` | Включает тест внешней таблицы Hive. Требует запуска контейнера Hive. |
+| `hive2HmsPort` | Публикуемый порт Hive2 metastore, по умолчанию 9083. |
+| `hive2HdfsPort` | Публикуемый порт namenode HDFS в Hive2, по умолчанию 8020. |
+| `enableEsTest` | Включает тест внешней таблицы ES. Требует запуска контейнера ES. |
+| `es_6_port` | Порт ES6 |
+| `es_7_port` | Порт ES7 |
+| `es_8_port` | Порт ES8 |
+
+---
+
+## Часто задаваемые вопросы {#faq}
+
+<!-- Knowledge type: Troubleshooting -->
+
+**Вопрос: при запуске контейнера hudi возникает ошибка `UnknownHostException`.**
+
+Ответ: перед запуском сопоставления `adhoc-1` / `adhoc-2` / `namenode` / `datanode1` / `hiveserver` / `hivemetastore` / `sparkmaster` с `127.0.0.1` не были настроены в `/etc/hosts`. Добавьте их, как описано в разделе [1.9 Hudi](#19-hudi).
+
+**Вопрос: между несколькими контейнерными окружениями возникают конфликты сетей или имён контейнеров.**
+
+Ответ: задайте для `CONTAINER_UID` в `docker/thirdparties/custom_settings.env` уникальный префикс (например, `doris-10002-18sda1-`). Все имена контейнеров и сети будут созданы заново на основе этого префикса.
+
+**Вопрос: при выполнении тестов внешних таблиц возникают ошибки подключения.**
+
+Ответ: убедитесь, что соответствующий параметр `enableXxxTest` в `regression-conf.groovy` имеет значение `true`, настроенные порты совпадают с фактическими портами, опубликованными docker compose после запуска, а контейнеры работают нормально (`docker ps -a`).
+
+**Вопрос: как увидеть фактический результат запроса действия `qt`, если файл `.out` ещё не существует?**
+
+Ответ: запустите с параметром `-genOut` (не перезаписывает существующие файлы) или `-forceGenOut` (принудительная перезапись), например `./run-regression-test.sh --run qt_action -genOut`.
+
+**Вопрос: как сделать так, чтобы ошибка SQL в сценарии не прерывала весь набор тестов?**
+
+Ответ: используйте `try_sql(...)` вместо `sql(...)`. При ошибке он возвращает `null`, а не выбрасывает исключение.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/community-badges.mdx b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/community-badges.mdx
new file mode 100644
index 000000000000..fc91228f5644
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/community-badges.mdx
@@ -0,0 +1,926 @@
+---
+title: Получите свой значок сообщества Apache Doris
+sidebar_label: Значки сообщества
+language: ru
+description: Как участникам Apache Doris получить цифровой значок участника на Holopin, как коммиттеры и члены PMC получают свои значки от PMC, как разместить значок в GitHub и LinkedIn и как подать заявку на физический значок. Обзор всех пяти значков сообщества Apache Doris.
+keywords:
+ - Apache Doris
+ - значок сообщества
+ - значок участника
+ - значок коммиттера
+ - значок члена PMC
+ - Holopin
+ - физический значок
+ - признание вклада участников
+ - вклад в проекты с открытым исходным кодом
+---
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+import Admonition from '@theme/Admonition';
+
+{/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+*/}
+
+<style>{`
+/* ---------- hero ---------- */
+.badge-hero {
+ display: grid;
+ grid-template-columns: 230px minmax(0, 1fr);
+ gap: 8px 32px;
+ align-items: center;
+ margin: 8px 0 32px;
+ padding: 28px 32px 24px 28px;
+ border: 1px solid var(--brand-border-soft, #D9EEE8);
+ border-radius: 12px;
+ background: linear-gradient(135deg, var(--brand-surface-soft, #F4FBF8), var(--brand-surface-note, #E8FAF5));
+}
+
+.badge-hero-image {
+ width: 230px;
+ height: auto;
+ filter: drop-shadow(0 10px 18px rgba(6, 70, 50, 0.18));
+}
+
+.badge-hero-eyebrow {
+ margin: 0 0 8px;
+ font-size: 0.72rem;
+ font-weight: 700;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--brand-primary-deep, #0B7A58);
+}
+
+.badge-hero-lead {
+ margin: 0 0 10px;
+ font-size: 1.35rem;
+ font-weight: 700;
+ line-height: 1.3;
+ color: var(--ifm-font-color-base);
+}
+
+.badge-hero-desc {
+ margin: 0 0 16px;
+ max-width: 52ch;
+ line-height: 1.6;
+}
+
+.badge-eligibility {
+ display: flex;
+ gap: 12px;
+ align-items: flex-start;
+ margin: 0 0 18px;
+ padding: 12px 14px;
+ border: 1px solid var(--brand-border-soft, #D9EEE8);
+ border-radius: 8px;
+ background: var(--ifm-background-surface-color);
+}
+
+.badge-eligibility-tick {
+ flex: none;
+ display: grid;
+ place-items: center;
+ width: 26px;
+ height: 26px;
+ border-radius: 50%;
+ background: var(--ifm-color-primary);
+ color: #fff;
+ font-size: 0.95rem;
+ font-weight: 800;
+}
+
+.badge-eligibility strong {
+ display: block;
+ font-size: 0.95rem;
+}
+
+.badge-eligibility span:not(.badge-eligibility-tick) {
+ font-size: 0.875rem;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-hero-cta {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 12px;
+}
+
+.badge-hero-note {
+ flex-basis: 100%;
+ font-size: 0.875rem;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-journey {
+ grid-column: 1 / -1;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 8px 10px;
+ margin-top: 18px;
+ padding-top: 16px;
+ border-top: 1px dashed var(--brand-border-soft, #D9EEE8);
+ font-size: 0.85rem;
+}
+
+.badge-journey-stage {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ padding: 5px 12px 5px 6px;
+ border: 1px solid var(--brand-border-soft, #D9EEE8);
+ border-radius: 999px;
+ background: var(--ifm-background-surface-color);
+}
+
+.badge-journey-stage i {
+ padding: 2px 8px;
+ border-radius: 999px;
+ background: var(--brand-surface-note, #E8FAF5);
+ color: var(--brand-primary-deep, #0B7A58);
+ font-style: normal;
+ font-size: 0.7rem;
+ font-weight: 700;
+ letter-spacing: 0.04em;
+}
+
+.badge-journey-arrow {
+ color: var(--ifm-color-primary);
+ font-weight: 700;
+}
+
+.badge-journey-hint {
+ font-size: 0.75rem;
+ color: var(--ifm-color-emphasis-700);
+}
+
+/* ---------- badge family ---------- */
+.badge-family {
+ display: grid;
+ grid-template-columns: repeat(5, minmax(0, 1fr));
+ gap: 12px;
+ margin: 18px 0 8px;
+}
+
+.badge-card {
+ display: grid;
+ grid-template-rows: auto auto 1fr auto;
+ gap: 6px;
+ justify-items: center;
+ padding: 16px 10px 14px;
+ border: 1px solid var(--ifm-color-emphasis-200);
+ border-radius: 10px;
+ background: var(--ifm-background-surface-color);
+ color: var(--ifm-font-color-base);
+ text-align: center;
+ text-decoration: none;
+}
+
+.markdown a.badge-card,
+.markdown a.badge-card:hover {
+ color: var(--ifm-font-color-base);
+ text-decoration: none;
+}
+
+a.badge-card:hover {
+ border-color: var(--ifm-color-primary);
+}
+
+.badge-card--open {
+ border-color: var(--ifm-color-primary);
+ box-shadow: 0 0 0 3px var(--brand-surface-note, #E8FAF5);
+}
+
+.badge-card img {
+ width: 104px;
+ height: 104px;
+}
+
+.badge-card strong {
+ font-size: 0.9rem;
+ line-height: 1.25;
+}
+
+.badge-card span {
+ font-size: 0.76rem;
+ line-height: 1.4;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-chip {
+ display: inline-block;
+ margin-top: 4px;
+ padding: 3px 9px;
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: 999px;
+ background: var(--ifm-color-emphasis-100);
+ color: var(--ifm-color-emphasis-700);
+ font-style: normal;
+ font-size: 0.68rem;
+ font-weight: 700;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+}
+
+.badge-chip--open {
+ border-color: var(--ifm-color-primary);
+ background: var(--ifm-color-primary);
+ color: #fff;
+}
+
+/* ---------- step cards ---------- */
+.badge-steps {
+ display: grid;
+ margin: 8px 0 24px;
+}
+
+.badge-step {
+ position: relative;
+ display: grid;
+ grid-template-columns: 52px minmax(0, 1fr);
+ gap: 0 18px;
+ padding-bottom: 22px;
+}
+
+.badge-step::before {
+ content: "";
+ position: absolute;
+ left: 25px;
+ top: 52px;
+ bottom: 0;
+ width: 2px;
+ background: var(--ifm-color-emphasis-300);
+}
+
+.badge-step:last-child {
+ padding-bottom: 0;
+}
+
+.badge-step:last-child::before {
+ display: none;
+}
+
+.badge-step-number {
+ display: grid;
+ place-items: center;
+ width: 52px;
+ height: 52px;
+ border-radius: 50%;
+ background: var(--ifm-color-primary);
+ color: #fff;
+ font-size: 1.2rem;
+ font-weight: 800;
+ box-shadow: 0 0 0 5px var(--ifm-background-color);
+}
+
+.badge-steps--optional .badge-step-number {
+ border: 3px solid var(--ifm-color-primary);
+ background: var(--ifm-background-surface-color);
+ color: var(--ifm-color-primary);
+}
+
+.badge-step-body {
+ padding: 18px 22px 20px;
+ border: 1px solid var(--ifm-color-emphasis-200);
+ border-radius: 10px;
+ background: var(--ifm-background-surface-color);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03);
+}
+
+.markdown .badge-step-body h3 {
+ margin-top: 0;
+ margin-bottom: 0.5rem !important;
+ font-size: 1.1rem;
+}
+
+.markdown .badge-step-body > :last-child {
+ margin-bottom: 0 !important;
+}
+
+.badge-step-action {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 12px;
+ margin: 14px 0 0;
+}
+
+.badge-step-action span {
+ font-size: 0.875rem;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-step-why {
+ margin: 12px 0 0;
+ font-size: 0.875rem;
+ line-height: 1.55;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-step-scope {
+ display: inline-block;
+ margin: 0 0 10px;
+ padding: 3px 9px;
+ border-radius: 999px;
+ background: var(--brand-surface-note, #E8FAF5);
+ color: var(--brand-primary-deep, #0B7A58);
+ font-size: 0.68rem;
+ font-weight: 700;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+}
+
+/* where committers and PMC members join the timeline */
+.badge-step--entry .badge-step-number {
+ border: 3px solid var(--ifm-color-primary);
+ background: var(--ifm-background-surface-color);
+ color: var(--ifm-color-primary);
+ font-size: 0.72rem;
+ letter-spacing: 0.04em;
+}
+
+.badge-step--entry .badge-step-body {
+ border-color: var(--brand-border-soft, #D9EEE8);
+ background: var(--brand-surface-soft, #F4FBF8);
+}
+
+/* checklist */
+.markdown .badge-checklist {
+ display: grid;
+ gap: 6px;
+ margin: 10px 0 0 !important;
+ padding: 12px 16px;
+ border: 1px solid var(--brand-border-soft, #D9EEE8);
+ border-radius: 8px;
+ background: var(--brand-surface-soft, #F4FBF8);
+ list-style: none;
+}
+
+.markdown .badge-checklist li {
+ display: flex;
+ gap: 10px;
+ align-items: flex-start;
+ font-size: 0.95rem;
+}
+
+.markdown .badge-checklist li::before {
+ content: "✓";
+ flex: none;
+ display: grid;
+ place-items: center;
+ width: 20px;
+ height: 20px;
+ margin-top: 3px;
+ border-radius: 50%;
+ background: var(--ifm-color-primary);
+ color: #fff;
+ font-size: 0.75rem;
+ font-weight: 800;
+}
+
+.markdown .badge-checklist li.badge-checklist-label {
+ font-size: 0.72rem;
+ font-weight: 700;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: var(--brand-primary-deep, #0B7A58);
+}
+
+.markdown .badge-checklist li.badge-checklist-label::before {
+ display: none;
+}
+
+.markdown .badge-linkedin {
+ color: #0A66C2;
+ font-weight: 600;
+}
+
+/* screenshots */
+.badge-shot {
+ margin: 14px 0 0;
+ overflow: hidden;
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: 8px;
+ background: var(--ifm-background-surface-color);
+}
+
+.badge-shot img {
+ display: block;
+ width: 100%;
+}
+
+.badge-shot figcaption {
+ padding: 6px 10px;
+ border-top: 1px solid var(--ifm-color-emphasis-200);
+ font-size: 0.78rem;
+ color: var(--ifm-color-emphasis-700);
+}
+
+.badge-shot--narrow {
+ width: 360px;
+ max-width: 100%;
+}
+
+.badge-shots {
+ display: grid;
+ grid-template-columns: repeat(2, minmax(0, 1fr));
+ gap: 12px;
+ margin: 14px 0 0;
+}
+
+.badge-shots .badge-shot {
+ margin: 0;
+}
+
+/* show-off tabs */
+.markdown .badge-ministeps ol {
+ display: grid;
+ gap: 8px;
+ padding-left: 0;
+ list-style: none;
+ counter-reset: badge-ministep;
+}
+
+.markdown .badge-ministeps li {
+ position: relative;
+ padding-left: 36px;
+ counter-increment: badge-ministep;
+}
+
+.markdown .badge-ministeps li::before {
+ content: counter(badge-ministep, lower-alpha);
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: grid;
+ place-items: center;
+ width: 26px;
+ height: 26px;
+ border: 2px solid var(--ifm-color-primary);
+ border-radius: 50%;
+ color: var(--ifm-color-primary);
+ font-size: 0.8rem;
+ font-weight: 700;
+}
+
+.markdown .badge-where {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ margin: 12px 0 0 !important;
+ padding: 0;
+ list-style: none;
+}
+
+.markdown .badge-where li {
+ padding: 4px 12px;
+ border: 1px solid var(--ifm-color-emphasis-300);
+ border-radius: 999px;
+ background: var(--ifm-background-surface-color);
+ font-size: 0.875rem;
+}
+
+/* questions */
+.badge-questions {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) auto;
+ gap: 16px;
+ align-items: center;
+ margin: 0 0 8px;
+ padding: 16px 20px;
+ border-radius: 10px;
+}
+
+.badge-questions {
+ border: 1px solid var(--ifm-color-emphasis-200);
+ background: var(--ifm-color-emphasis-100);
+}
+
+.badge-questions-title {
+ display: block;
+ margin: 0 0 4px;
+ font-size: 1rem;
+ font-weight: 700;
+ color: var(--ifm-font-color-base);
+}
+
+.badge-questions-text {
+ margin: 0;
+ font-size: 0.95rem;
+ line-height: 1.55;
+}
+
+/* buttons: the site's .markdown a rule (markdown.scss) outranks Infima's .button color, so restate it */
+.markdown .badge-button,
+.markdown .badge-button:hover,
+.markdown .badge-button:active {
+ color: var(--ifm-button-color);
+}
+
+/* Infima's primary hover uses --ifm-color-primary-dark, which is a blue leftover on this site */
+.badge-button.button--primary:not(.button--outline):hover,
+.badge-button.button--primary:not(.button--outline):active {
+ --ifm-button-background-color: var(--brand-primary-deep, #0B7A58);
+ --ifm-button-border-color: var(--brand-primary-deep, #0B7A58);
+}
+
+.markdown .badge-questions-text,
+.markdown .badge-closing-signature {
+ margin-bottom: 0 !important;
+}
+
+.markdown .badge-closing-text {
+ margin-bottom: 8px !important;
+}
+
+/* closing */
+.badge-closing {
+ margin: 40px 0 0;
+ padding: 6px 0 6px 22px;
+ border-left: 4px solid var(--ifm-color-primary);
+}
+
+.badge-closing-text {
+ margin: 0 0 8px;
+ font-size: 1.05rem;
+ line-height: 1.6;
+}
+
+.badge-closing-signature {
+ margin: 10px 0 0;
+ font-size: 0.95rem;
+ font-weight: 700;
+ color: var(--ifm-font-color-base);
+}
+
+@media (max-width: 996px) {
+ .badge-family {
+ display: flex;
+ overflow-x: auto;
+ padding-bottom: 6px;
+ scroll-snap-type: x mandatory;
+ }
+
+ .badge-card {
+ flex: 0 0 190px;
+ scroll-snap-align: start;
+ }
+}
+
+@media (max-width: 700px) {
+ .badge-hero {
+ grid-template-columns: 1fr;
+ justify-items: start;
+ padding: 22px 20px;
+ }
+
+ .badge-hero-image {
+ width: 170px;
+ }
+
+ .badge-step {
+ grid-template-columns: 40px minmax(0, 1fr);
+ gap: 0 12px;
+ }
+
+ .badge-step-number {
+ width: 40px;
+ height: 40px;
+ font-size: 1rem;
+ }
+
+ .badge-step::before {
+ left: 19px;
+ top: 40px;
+ }
+
+ .badge-step-body {
+ padding: 14px 16px 16px;
+ }
+
+ .badge-shots,
+ .badge-questions {
+ grid-template-columns: 1fr;
+ }
+}
+`}</style>
+
+<div className="badge-hero">
+ <img className="badge-hero-image" src="/images/community-badges/badge-contributor.png" alt="Значок участника Apache Doris" width="230" height="230" />
+ <div>
+ <div className="badge-hero-eyebrow">Значки сообщества Apache Doris · Без ограничения по срокам</div>
+ <div className="badge-hero-lead">Ваш pull request уже принят в Apache Doris? Получите значок участника.</div>
+ <div className="badge-hero-desc">Цифровой значок для тех, кто внёс вклад в Apache Doris. Он размещается на Holopin, и получить его можно бесплатно. Затем расскажите о нём в LinkedIn, и мы также отправим вам физический значок по почте.</div>
+ <div className="badge-eligibility">
+ <span className="badge-eligibility-tick" aria-hidden="true">✓</span>
+ <div>
+ <strong>Достаточно одного принятого pull request в проекте Apache Doris.</strong>
+ <span>Неважно, сколько у вас PR и как давно их приняли. Исправление документации трёхлетней давности тоже считается.</span>
+ </div>
+ </div>
+ <div className="badge-hero-cta">
+ <a className="badge-button button button--primary button--lg" href="#step-1">Получить цифровой значок →</a>
+ <span className="badge-hero-note">Уже получили от нас приглашение в Holopin? Переходите сразу к <a href="#step-3">шагу 3</a>.</span>
+ </div>
+ </div>
+ <div className="badge-journey" aria-label="Как работает программа">
+ <span className="badge-journey-stage"><i>Шаги 1-3</i> Цифровой значок</span>
+ <span className="badge-journey-arrow" aria-hidden="true">→</span>
+ <span className="badge-journey-stage"><i>Шаг 4</i> Покажите значок</span>
+ <span className="badge-journey-arrow" aria-hidden="true">→</span>
+ <span className="badge-journey-stage"><i>Шаги 5-6</i> Физический значок</span>
+ <span className="badge-journey-hint">Шаги 5 и 6 необязательны и выполняются после получения цифрового значка.</span>
+ </div>
+</div>
+
+## Пять значков сообщества {#badges}
+
+Каждый значок отмечает определённый вид вклада в проект. Значок участника можно получить уже сегодня. Значки коммиттера и члена PMC рассылает PMC, поэтому подавать заявку на них не нужно. Два значка 2026 года присуждает сообщество. Мы добавим на эту страницу критерии и порядок получения каждого из них, когда они будут утверждены.
+
+<div className="badge-family">
+ <a className="badge-card badge-card--open" href="#digital-badge">
+ <img src="/images/community-badges/badge-contributor.png" alt="Значок участника Apache Doris" width="104" height="104" />
+ <strong>Участник</strong>
+ <span>Код, документация, идеи или другая работа, при этом хотя бы один PR должен быть принят.</span>
+ <em className="badge-chip badge-chip--open">Уже доступен</em>
+ </a>
+ <a className="badge-card badge-card--open" href="#committer-pmc-badges">
+ <img src="/images/community-badges/badge-committer.png" alt="Значок коммиттера Apache Doris" width="104" height="104" />
+ <strong>Коммиттер</strong>
+ <span>Право вносить коммиты за постоянный вклад, заслуживший доверие сообщества.</span>
+ <em className="badge-chip badge-chip--open">Уже доступен</em>
+ </a>
+ <a className="badge-card badge-card--open" href="#committer-pmc-badges">
+ <img src="/images/community-badges/badge-pmc-member.png" alt="Значок члена PMC Apache Doris" width="104" height="104" />
+ <strong>Член PMC</strong>
+ <span>Определяет техническое направление проекта и участвует в управлении сообществом.</span>
+ <em className="badge-chip badge-chip--open">Уже доступен</em>
+ </a>
+ <div className="badge-card">
+ <img src="/images/community-badges/badge-active-contributor-2026.png" alt="Значок активного участника Apache Doris 2026" width="104" height="104" />
+ <strong>Активный участник 2026</strong>
+ <span>Регулярный и значимый вклад в течение года.</span>
+ <em className="badge-chip">Скоро</em>
+ </div>
+ <div className="badge-card">
+ <img src="/images/community-badges/badge-community-champion-2026.png" alt="Значок лидера сообщества Apache Doris 2026" width="104" height="104" />
+ <strong>Лидер сообщества 2026</strong>
+ <span>Крупные функции, истории пользователей, доклады, мероприятия и другие инициативы сообщества.</span>
+ <em className="badge-chip">Скоро</em>
+ </div>
+</div>
+
+{/* TODO: publish the criteria and claim process for Active Contributor 2026 and Community Champion 2026. Each badge gets its own section; turn its card above into a link (like the Contributor card) once the section exists. */}
+
+## Получите цифровой значок {#digital-badge}
+
+Участники проходят все четыре шага. Мы вручную проверяем каждую заявку, прежде чем Holopin отправит приглашение, поэтому первые два шага нужны, чтобы подтвердить, что аккаунт GitHub принадлежит вам. Коммиттеры и члены PMC пропускают эти два шага: приглашение им отправляет PMC, поэтому они [начинают с шага 3](#committer-pmc-badges).
+
+<div className="badge-steps">
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">1</span>
+<div className="badge-step-body">
+
+<span className="badge-step-scope">Только для значка участника</span>
+
+### Добавьте кодовую фразу в README своего профиля GitHub {#step-1}
+
+Временно добавьте эту строку в любое место README своего профиля (репозиторий `username/username`):
+
+```text
+Apache Doris Community Badge
+```
+
+<div className="badge-step-why"><strong>Зачем?</strong> Любой может ввести GitHub ID в форму, поэтому нам нужно подтверждение, что аккаунт принадлежит вам. Когда получите значок, удалите эту строку и разместите вместо неё значок.</div>
+
+</div>
+</div>
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">2</span>
+<div className="badge-step-body">
+
+<span className="badge-step-scope">Только для значка участника</span>
+
+### Заполните форму заявки {#step-2}
+
+Нам нужны две вещи: ваш GitHub ID, чтобы найти принятый PR, и адрес электронной почты, на который мы отправим приглашение получить значок.
+
+<div className="badge-step-action">
+ <a className="badge-button button button--primary" href="https://forms.gle/xTcnWLqDuBeFfnAD8" target="_blank" rel="noopener noreferrer">Открыть форму заявки →</a>
+ <span>Займёт около минуты.</span>
+</div>
+
+</div>
+</div>
+
+<div className="badge-step badge-step--entry">
+<span className="badge-step-number" aria-hidden="true">PMC</span>
+<div className="badge-step-body">
+
+### Вы коммиттер или член PMC? Начните здесь {#committer-pmc-badges}
+
+Подавать заявку на эти два значка не нужно. PMC Doris просматривает официальные списки [коммиттеров](https://people.apache.org/committers-by-project.html#doris) и [членов PMC](https://projects.apache.org/committee.html?doris) и отправляет каждому из них приглашение в Holopin напрямую. Коммиттеры получают значок коммиттера, а члены PMC получают оба значка: члена PMC и коммиттера. Когда придёт письмо, продолжайте с шага 3. Дальше вы сможете показать значок и подать заявку на физический зна [...]
+
+Хотите также получить значок участника? Как и любой человек с принятым pull request, вы имеете на него право, поэтому пройдите шаги 1 и 2.
+
+<div className="badge-step-why">Письма пока нет? Сначала проверьте вкладку «Промоакции» и папку «Спам», затем напишите нам в <a href="#questions">Slack</a>.</div>
+
+</div>
+</div>
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">3</span>
+<div className="badge-step-body">
+
+### Получите значок в Holopin {#step-3}
+
+Holopin отправит вам приглашение по электронной почте: для значка участника после проверки вашего PR, а для значков коммиттера и члена PMC после того, как PMC отправит приглашение. Нажмите **Получить значок**. Создать аккаунт Holopin можно бесплатно.
+
+<Admonition type="tip" title="Вход по электронной почте">
+ <p>Советуем регистрироваться и входить в Holopin со своим адресом электронной почты, поскольку при входе напрямую через GitHub сейчас возникают проблемы.</p>
+</Admonition>
+
+Не можете найти письмо? Проверьте вкладку «Промоакции» или папку «Спам»: приглашения Holopin иногда попадают туда.
+
+<figure className="badge-shot badge-shot--narrow">
+ <img src="/images/community-badges/holopin-claim.jpg" alt="Экран получения значка в Holopin со значком Apache Doris и кнопкой «Получить»" />
+ <figcaption>Экран получения значка в Holopin</figcaption>
+</figure>
+
+<div className="badge-step-why">После этого значок появится на вашей странице значка в Holopin, которую любой может открыть для проверки, поэтому ссылку на неё можно размещать где угодно.</div>
+
+</div>
+</div>
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">4</span>
+<div className="badge-step-body">
+
+### Покажите свой значок {#step-4}
+
+Значок говорит о том, что сообщество ценит вашу работу. Размещайте его где хотите.
+
+<Tabs groupId="badge-showoff">
+<TabItem value="github" label="Профиль GitHub" default>
+
+<div className="badge-ministeps">
+
+1. В Holopin откройте **Ваш профиль**.
+2. Добавьте значок Apache Doris в раздел **Доска**. Если у вас несколько значков, меняйте положение значка, его размер или угол поворота.
+3. Скопируйте код под своей доской и вставьте его в README профиля GitHub.
+
+</div>
+
+Код представляет собой одну строку Markdown. Ниже приведён код для аккаунта `morningman`; в вашем будет указано ваше имя пользователя:
+
+```markdown
+[](https://holopin.io/@morningman)
+```
+
+Чтобы посмотреть, как это выглядит, откройте [github.com/morningman](https://github.com/morningman) и [README этого профиля](https://github.com/morningman/morningman/blob/main/README.md).
+
+<div className="badge-shots">
+ <figure className="badge-shot">
+ <img src="/images/community-badges/holopin-board-embed-code.jpg" alt="Доска Holopin, под которой показан код для вставки" />
+ <figcaption>Скопируйте код для вставки под своей доской</figcaption>
+ </figure>
+ <figure className="badge-shot">
+ <img src="/images/community-badges/github-profile-badge.jpg" alt="README профиля GitHub со значком участника Apache Doris" />
+ <figcaption>Значок в профиле GitHub</figcaption>
+ </figure>
+</div>
+
+</TabItem>
+<TabItem value="linkedin" label="LinkedIn">
+
+Добавьте его в раздел **Лицензии и сертификаты** своего профиля LinkedIn:
+
+- Название: участник Apache Doris (или коммиттер / член PMC, в зависимости от того, какой значок у вас есть)
+- Выдавшая организация: Apache Doris
+- URL подтверждения: ссылка на ваш значок Holopin
+
+<figure className="badge-shot">
+ <img src="/images/community-badges/linkedin-certification.jpg" alt="Запись о значке участника Apache Doris в разделе «Лицензии и сертификаты» LinkedIn" />
+ <figcaption>Лицензии и сертификаты в LinkedIn</figcaption>
+</figure>
+
+Вы также можете написать об этом публикацию. Достаточно одной строки с прикреплённым изображением значка, например:
+
+> Приятно получить значок участника от сообщества <a className="badge-linkedin" href="https://www.linkedin.com/company/doris-apache">@Apache Doris</a>. <span className="badge-linkedin">#ApacheDoris</span> <span className="badge-linkedin">#ApacheDorisCommunityBadge</span>
+
+Замените «участника» на «коммиттера» или «члена PMC», если получили соответствующий значок. Если хотите также получить физический значок, именно такая публикация нужна на [шаге 5](#step-5).
+
+</TabItem>
+<TabItem value="anywhere" label="Где ещё">
+
+Страница вашего значка в Holopin имеет постоянную ссылку и доступна всем для проверки. Добавьте её туда, где сведения о вашем вкладе будут полезны:
+
+<ul className="badge-where">
+ <li>Резюме / CV</li>
+ <li>Личный сайт или портфолио</li>
+ <li>Другие профили разработчика и участника сообщества</li>
+ <li>Биографии докладчиков конференций</li>
+</ul>
+
+</TabItem>
+</Tabs>
+
+</div>
+</div>
+
+</div>
+
+## Хотите и физический значок? Ещё два шага {#physical-badge}
+
+Подать заявку можно сразу после получения цифрового значка, поскольку его нужно показать в публикации в LinkedIn на шаге 5. Это может сделать любой обладатель цифрового значка: участника, коммиттера или члена PMC. Мы отправляем один физический значок каждому человеку, даже если у него несколько цифровых значков.
+
+<div className="badge-steps badge-steps--optional">
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">5</span>
+<div className="badge-step-body">
+
+### Поделитесь значком в LinkedIn {#step-5}
+
+Напишите публикацию в LinkedIn о своём новом значке. Расскажите о чём хотите: что вы создали или исправили либо как вообще оказались в сообществе. Есть только три требования, перечисленные ниже. Если хотите написать кратко, достаточно примера публикации на вкладке LinkedIn на [шаге 4](#step-4) и изображения значка.
+
+<ul className="badge-checklist">
+ <li className="badge-checklist-label">В публикации должны быть</li>
+ <li><span>Упоминание официальной страницы <a className="badge-linkedin" href="https://www.linkedin.com/company/doris-apache">@Apache Doris</a> в LinkedIn</span></li>
+ <li><span>Хештег <span className="badge-linkedin">#ApacheDorisCommunityBadge</span></span></li>
+ <li><span>Изображение вашего значка или ссылка на значок Holopin</span></li>
+</ul>
+
+<div className="badge-shots">
+ <figure className="badge-shot">
+ <img src="/images/community-badges/holopin-share.jpg" alt="Страница значка в Holopin с кнопкой «Поделиться в LinkedIn»" />
+ <figcaption>Поделитесь прямо из Holopin…</figcaption>
+ </figure>
+ <figure className="badge-shot">
+ <img src="/images/community-badges/linkedin-post.jpg" alt="Редактор публикации LinkedIn с прикреплённым значком" />
+ <figcaption>…или напишите собственную публикацию</figcaption>
+ </figure>
+</div>
+
+</div>
+</div>
+
+<div className="badge-step">
+<span className="badge-step-number" aria-hidden="true">6</span>
+<div className="badge-step-body">
+
+### Укажите данные для доставки {#step-6}
+
+После размещения публикации заполните форму для получения физического значка: укажите ссылку на публикацию и адрес доставки.
+
+<div className="badge-step-action">
+ <a className="badge-button button button--primary" href="https://forms.gle/cqG5SchErhoMDDB87" target="_blank" rel="noopener noreferrer">Подать заявку на физический значок →</a>
+</div>
+
+<div className="badge-step-why">Мы проверим публикацию и отправим вам письмо, когда начнём готовить посылку к отправке.</div>
+
+</div>
+</div>
+
+</div>
+
+:::info Доставка по всему миру, но без гарантий
+
+Сроки доставки сильно зависят от страны, а в некоторых случаях таможенные правила или ограничения перевозчика могут вообще не пропустить посылку. Мы сделаем всё возможное, чтобы значок до вас дошёл, но не можем гарантировать доставку по каждому адресу.
+
+:::
+
+## Есть вопросы? {#questions}
+
+<div className="badge-questions">
+ <div>
+ <span className="badge-questions-title">Присоединяйтесь к Slack сообщества Apache Doris и задавайте вопросы там.</span>
+ <p className="badge-questions-text">Команда сообщества отвечает в Slack на вопросы о значках, в том числе о форме заявки и доставке.</p>
+ </div>
+ <a className="badge-button button button--primary" href="https://doris.apache.org/slack?utm_source=website&utm_medium=docs&utm_content=community_badge">Присоединиться к сообществу в Slack →</a>
+</div>
+
+<div className="badge-closing">
+ <p className="badge-closing-text">Одни вносят крупный и заметный вклад. Другие делают небольшие исправления, которые незаметно облегчают кому-то жизнь. Всё это вклад в проекты с открытым исходным кодом, и эти значки помогают нам поблагодарить вас.</p>
+ <p className="badge-closing-text">Программа действует бессрочно. Участвуйте, когда вам удобно, и получайте значок, как только ваш pull request будет принят.</p>
+ <p className="badge-closing-signature">Сообщество Apache Doris</p>
+</div>
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/contribute-doc.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/contribute-doc.md
new file mode 100644
index 000000000000..a9893e945c73
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/contribute-doc.md
@@ -0,0 +1,440 @@
+---
+title: Руководство по участию в работе над документацией
+language: ru
+description: "Как участвовать в работе над документацией Apache Doris: структура репозитория, управление версиями, настройка бокового меню и порядок отправки PR."
+keywords:
+ - Apache Doris
+ - участие в работе над документацией
+ - doris-website
+ - настройка бокового меню
+ - документация для нескольких версий
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Documentation contribution / submitting documentation modification PRs -->
+
+В этой статье описано, как участвовать в работе над документацией Apache Doris: как устроены каталоги репозитория сайта, где изменять документацию для каждой версии, как настраивать боковое меню и файлы перевода на китайский язык, а также какие правила оформления действуют для справочника команд.
+
+Независимо от того, работаете ли вы над документацией прошлых версий или последней версии, все изменения отправляются в виде PR в репозиторий [apache/doris-website](https://github.com/apache/doris-website).
+
+:::tip
+
+О порядке отправки PR также можно прочитать в следующих руководствах:
+
+- [Руководство по участию в сообществе](./contribute-to-doris.mdx)
+- [Руководство по Pull Request](./pull-request)
+
+:::
+
+## Структура репозитория сайта Doris {#doris-website-repository-structure}
+
+Ниже показано основное дерево каталогов репозитория [apache/doris-website](https://github.com/apache/doris-website). Прежде чем вносить изменения в документацию, найдите в нём нужное место.
+
+```plain
+.
+├── blog
+│ ├── Annoucing.md
+│ ├── jd.md
+│ ├── meituan.md
+│ ├── release-note-0.15.0.md
+│ ├── release-note-1.0.0.md
+│ └── xiaomi.md
+├── community
+│ ├── design
+│ │ ├── grouping_sets_design.md
+│ │ └── metadata-design.md
+│ ├── ......
+├── docs
+│ ├── admin-manual
+│ │ ├── auth
+│ │ ├── cluster-management
+│ │ ├── config
+│ │ ├── data-admin
+│ │ ├── log-management
+│ │ ├── maint-monitor
+│ │ ├── open-api
+│ │ ├── system-tables
+│ │ ├── trouble-shooting
+│ │ ├── workload-management
+│ │ └── audit-plugin.md
+│ ├── ......
+├── i18n
+│ └── zh-CN
+│ ├── docusaurus-plugin-content-docs
+│ │ ├── current
+│ │ ├── version-2.1
+│ │ ├── version-3.x
+│ │ ├── version-4.x
+│ │ ├── current.json
+│ │ ├── version-2.1.json
+│ │ ├── version-3.x.json
+│ │ └── version-4.x.json
+│ └── docusaurus-plugin-content-docs-community
+├── src
+│ ├── components
+│ │ ├── Icons
+│ │ ├── More
+│ │ ├── PageColumn
+│ │ └── PageHeader
+│ ├── ......
+├── static
+│ ├── images
+│ │ ├── Bloom_filter.svg.png
+│ │ ├── .....
+│ └── js
+│ └── redirect.js
+├── versioned_docs
+│ ├── version-2.1
+│ ├── version-3.x
+│ └── version-4.x
+├── versioned_sidebars
+│ ├── version-2.1-sidebars.json
+│ ├── version-3.x-sidebars.json
+│ └── version-4.x-sidebars.json
+├── build.sh
+├── docusaurus.config.js
+├── local_build_docs.sh
+├── package.json
+├── README.md
+├── sidebars.ts
+├── sidebarsCommunity.json
+├── tsconfig.json
+└── versions.json
+```
+
+В следующей таблице кратко описано назначение каждого каталога, чтобы вы могли быстро найти нужное место для изменений.
+
+| Каталог | Содержимое | Область действия |
+| --- | --- | --- |
+| `blog/` | Файлы статей блога в формате Markdown | Общие для всех версий |
+| `community/` | Документация сообщества на английском языке | Общая для всех версий |
+| `docs/` | Документация последней версии (Dev / Master) на английском языке | Текущая основная ветка |
+| `versioned_docs/version-X.X/` | Документация выпущенных версий на английском языке | 4.x / 3.x / 2.1 (перечислены в `versions.json`) |
+| `i18n/zh-CN/docusaurus-plugin-content-docs/current/` | Документация последней версии на китайском языке | Текущая основная ветка |
+| `i18n/zh-CN/docusaurus-plugin-content-docs/version-X.X/` | Документация выпущенных версий на китайском языке | 4.x / 3.x / 2.1 (перечислены в `versions.json`) |
+| `i18n/zh-CN/docusaurus-plugin-content-docs-community/` | Документация сообщества на китайском языке | Общая для всех версий |
+| `sidebars.ts` | Боковое меню документации последней версии | Общее для китайского и английского языков |
+| `versioned_sidebars/version-X.X-sidebars.json` | Боковое меню документации выпущенной версии | Общее для китайского и английского языков |
+| `sidebarsCommunity.json` | Боковое меню документации сообщества | Общее для всех версий |
+| `versions.json` | Выпущенные версии, опубликованные на сайте | Все выпущенные версии |
+| `static/images/` | Изображения для документации | Общие для всех версий |
+
+## Каталог блога {#blog-directory}
+
+Каталог блога расположен в `/blog` в корне репозитория. В этом каталоге размещаются все файлы блога в формате Markdown.
+
+Если вы хотите внести вклад в блог или поделиться техническим опытом, свяжитесь с нами по адресу `dev@doris.apache.org` или сразу отправьте PR со статьёй для блога.
+
+## Каталог документации {#documentation-directory}
+
+<!-- Knowledge type: Procedure -->
+
+При изменении документации в зависимости от типа изменений нужно одновременно обновлять разные файлы:
+
+1. **Изменение содержимого существующей документации**: необходимо обновить как документацию последней версии в ветке Master, так и документацию соответствующих выпущенных версий (например, 4.x, 3.x, 2.1 или нескольких из них).
+2. **Добавление новой документации**: помимо загрузки нового файла Markdown необходимо добавить путь ссылки на новую документацию в файл бокового меню.
+3. **Добавление новой категории документации**: помимо изменения структуры каталогов необходимо добавить перевод названия новой категории на китайский язык.
+
+Ниже перечислены типы файлов, которые требуется изменять:
+
+| Тип файла | Назначение | Пример |
+| --- | --- | --- |
+| Файл Markdown | Основное содержимое документации | `docs/admin-manual/xxx.md` |
+| Файл бокового меню | Задаёт структуру разделов | `sidebars.ts` / `version-4.x-sidebars.json` |
+| Файл перевода | Задаёт отображение категорий в документации на китайском языке | `current.json` / `version-4.x.json` |
+
+:::caution Примечание
+
+Вся документация должна иметь версии на китайском и английском языках. Иначе структура каталогов становится несогласованной, а документация на китайском языке может не отображаться. Это правило распространяется на всё содержимое блога, документации и раздела сообщества.
+
+:::
+
+### Версия Dev: актуальная документация ветки Master {#dev-version-latest-master-branch-documentation}
+
+**1. Где изменять содержимое**
+
+- Документация на английском языке: в `docs/` в корне репозитория
+- Документация на китайском языке: в `i18n/zh-CN/docusaurus-plugin-content-docs/current/`
+
+```plain
+.
+├── docs
+│ ├── admin-manual
+│ ├── ......
+├── i18n
+│ └── zh-CN
+│ ├── docusaurus-plugin-content-docs
+│ │ ├── current
+│ │ │ ├── admin-manual
+│ │ │ ├── ......
+```
+
+**2. Структура разделов документации**
+
+В версии Dev структура документации на китайском и английском языках задаётся файлом `sidebars.ts` в корне репозитория.
+
+Пример `sidebars.ts`:
+
+```ts
+const sidebars: SidebarsConfig = {
+ docs: [
+ {
+ type: 'category',
+ label: 'Get Started',
+ collapsible: false,
+ collapsed: false,
+ items: [
+ {
+ type: 'category',
+ label: 'Getting Started',
+ link: {type: 'doc', id: 'getting-started/intro'},
+ collapsed: true,
+ items: [
+ 'getting-started/what-is-apache-doris',
+ 'getting-started/quick-start',
+ 'getting-started/before-you-start-the-poc',
+ ],
+ },
+ ......
+ ],
+ },
+ ......
+ ],
+};
+```
+
+**3. Перевод названий категорий на китайский язык**
+
+Файл перевода названий категорий версии Dev на китайский язык находится по пути `i18n/zh-CN/docusaurus-plugin-content-docs/current.json`.
+
+Рассмотрим категорию «Начало работы»:
+
+- `sidebar.docs.category.Getting Started` соответствует иерархии `label` в `sidebars.ts`.
+- Формат: `sidebar` + `.` + `docs` + `.` + `[type]` + `.` + `[label]`.
+
+```json
+{
+ "version.label": {
+ "message": "dev",
+ "description": "The label for version current"
+ },
+ "sidebar.docs.category.Getting Started": {
+ "message": "快速开始",
+ "description": "The label for category Getting Started in sidebar docs"
+ },
+ ......
+}
+```
+
+Соответствующий фрагмент `sidebars.ts`:
+
+```ts
+{
+ type: 'category',
+ label: 'Getting Started',
+ link: {type: 'doc', id: 'getting-started/intro'},
+ collapsed: true,
+ items: [
+ 'getting-started/what-is-apache-doris',
+ 'getting-started/quick-start',
+ 'getting-started/before-you-start-the-poc',
+ ],
+},
+```
+
+### Выпущенные версии 4.x / 3.x / 2.1 {#4x--3x--21-released-versions}
+
+**1. Где изменять содержимое**
+
+Выпущенные версии, опубликованные на сайте, перечислены в файле `versions.json` в корне репозитория. В настоящее время это 4.x, 3.x и 2.1. Каталоги `version-1.2` и `version-2.0` по-прежнему существуют в репозитории, но они не указаны в `versions.json` и не включаются в сборку сайта.
+
+| Версия | Расположение документации на английском языке | Расположение документации на китайском языке |
+| --- | --- | --- |
+| 4.x | `/versioned_docs/version-4.x` | `i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x` |
+| 3.x | `/versioned_docs/version-3.x` | `i18n/zh-CN/docusaurus-plugin-content-docs/version-3.x` |
+| 2.1 | `/versioned_docs/version-2.1` | `i18n/zh-CN/docusaurus-plugin-content-docs/version-2.1` |
+
+```plain
+.
+├── blog
+├── community
+├── docs
+├── i18n
+│ └── zh-CN
+│ ├── docusaurus-plugin-content-docs
+│ │ ├── current
+│ │ ├── version-2.1
+│ │ ├── version-3.x
+│ │ ├── version-4.x
+├── versioned_docs
+│ ├── version-2.1
+│ ├── version-3.x
+│ ├── version-4.x
+```
+
+**2. Структура разделов документации**
+
+Для каждой версии структура документации на китайском и английском языках задаётся файлом `version-X.X-sidebars.json` в каталоге `versioned_sidebars/`, расположенном в корне репозитория.
+
+```plain
+.
+├── versioned_sidebars
+│ ├── version-2.1-sidebars.json
+│ ├── version-3.x-sidebars.json
+│ └── version-4.x-sidebars.json
+```
+
+Файлы бокового меню для отдельных версий имеют формат JSON, но используют ту же структуру, что и `sidebars.ts`. Иерархия бокового меню каждой версии изменяется практически так же, как и в версии Dev, поэтому пример здесь не приводится.
+
+**3. Перевод названий категорий на китайский язык**
+
+Файлы перевода названий категорий каждой версии на китайский язык находятся по пути `i18n/zh-CN/docusaurus-plugin-content-docs/version-X.X.json`.
+
+```plain
+├── i18n
+│ └── zh-CN
+│ ├── docusaurus-plugin-content-docs
+│ │ ├── version-2.1.json
+│ │ ├── version-3.x.json
+│ │ ├── version-4.x.json
+```
+
+Перевод `label` для документации каждой версии на китайском языке выполняется практически так же, как и для версии Dev, поэтому пример здесь не приводится.
+
+## Каталог документации сообщества {#community-documentation-directory}
+
+Документация сообщества сейчас представлена одной общей версией без разделения по выпускам.
+
+| Элемент | Расположение |
+| --- | --- |
+| Документация на английском языке | `community/` |
+| Документация на китайском языке | `i18n/zh-CN/docusaurus-plugin-content-docs-community/` |
+| Структура разделов | `sidebarsCommunity.json` |
+| Перевод на китайский язык | `i18n/zh-CN/docusaurus-plugin-content-docs-community/current.json` |
+
+Пример файла перевода на китайский язык:
+
+```json
+{
+ "version.label": {
+ "message": "current",
+ "description": "The label for version current"
+ },
+ "sidebar.community.category.How to Contribute": {
+ "message": "参与贡献",
+ "description": "The label for category How to Contribute in sidebar community"
+ },
+ "sidebar.community.category.Documentation Contribution": {
+ "message": "贡献文档",
+ "description": "The label for category Documentation Contribution in sidebar community"
+ },
+ "sidebar.community.category.Release": {
+ "message": "版本与发布",
+ "description": "The label for category Release in sidebar community"
+ },
+ "sidebar.community.category.Design Documents": {
+ "message": "设计文档",
+ "description": "The label for category Design Documents in sidebar community"
+ }
+}
+```
+
+## Каталог изображений {#image-directory}
+
+1. Все изображения размещаются в каталоге `static/images/`.
+2. Формат ссылки на изображение: ``.
+ - Текстовое описание: подберите его в соответствии с содержимым изображения. Рекомендуется, чтобы описание было близко к тексту заголовка раздела, в котором размещено изображение.
+ - Имя изображения: если имя файла состоит из нескольких английских слов, разделяйте их дефисом `-`.
+
+## Как писать справочник команд {#how-to-write-the-command-help-manual}
+
+<!-- Knowledge type: Rules and conventions -->
+
+Справочник команд представляет собой документацию в каталоге `/sql-manual` ветки Master и каждой версии документации. Эти документы используются в двух местах:
+
+1. Для отображения в документации на официальном сайте.
+2. Для вывода команды `HELP`.
+
+Чтобы документация могла использоваться в выводе команды `HELP`, она должна строго соответствовать приведённому ниже формату. Иначе она не пройдёт проверку при приёме изменений.
+
+Рассмотрим команду `SHOW ALTER`:
+
+```markdown
+---
+{
+ "title": "SHOW-ALTER",
+ "language": "zh-CN"
+}
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+## SHOW-ALTER
+
+### Name
+
+SHOW ALTER
+
+## Description
+
+(Describes the command syntax.)
+
+## Example
+
+(Provides command examples.)
+
+### Keywords
+
+SHOW, ALTER
+
+### Best Practice
+
+(Best practices, if any.)
+```
+
+:::caution Примечание
+
+Как в китайской, так и в английской документации приведённые выше заголовки должны быть на английском языке, а их уровни должны строго соблюдаться.
+
+:::
+
+## Связанные документы {#related-documents}
+
+- [Требования к формату документации](./docs-format-specification)
+- [Как публиковать статьи в блоге](./how-to-share-blogs)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/docs-format-specification.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/docs-format-specification.md
new file mode 100644
index 000000000000..18e0ede4d9fa
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/docs-format-specification.md
@@ -0,0 +1,371 @@
+---
+title: Спецификация оформления документации
+language: ru
+description: "Спецификация оформления документации Apache Doris: правила именования файлов, использования прописных букв в английском тексте, именования функций SQL и использования сокращений."
+keywords:
+ - Apache Doris
+ - спецификация оформления документации
+ - правила именования файлов
+ - именование функций SQL
+ - спецификация Markdown
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge Type: Rules and Specifications -->
+<!-- Applicable Scenarios: Documentation Contribution / Documentation Review -->
+
+Этот документ определяет требования к оформлению документации Apache Doris. Он охватывает:
+
+1. Основные правила оформления имён файлов, URL и структуры документов
+2. Рекомендуемые элементы оформления содержимого документов
+
+:::caution Примечание
+
+- Независимо от того, редактируете ли вы предыдущую или последнюю версию документации, отправляйте PR в репозиторий [apache/doris-website](https://github.com/apache/doris-website).
+- Перед отправкой изменений в документацию прочитайте [Руководство по участию в разработке документации](./contribute-doc).
+
+:::
+
+## Основные требования к оформлению {#basic-format-specifications}
+
+### Именование файлов и URL {#file-and-url-naming}
+
+Название документа должно кратко отражать его содержание и не быть слишком длинным. На сайте Doris имя файла также используется в URL, поэтому правила именования файлов связаны с именами элементов в `sidebars.json`.
+
+| Правило | Описание | Пример |
+| --- | --- | --- |
+| Соответствие боковой панели | Имя файла должно совпадать с именем документа в `sidebars.json` | `quick-start` |
+| Только строчные буквы | Используйте в именах файлов только строчные буквы. Не смешивайте регистры и не добавляйте знаки препинания | `standard-deployment` |
+| Дефис в качестве разделителя | Разделяйте несколько английских слов дефисом `-`. Использовать подчёркивание `_` не рекомендуется | `bloom-filter-index` |
+| Исключение для функций | Если в имени конкретной функции используются подчёркивания, следуйте правилам именования этой функции | `array_max` |
+
+### Правила использования прописных букв в английском тексте {#english-capitalization-specifications}
+
+| Ситуация | Правило |
+| --- | --- |
+| Заголовки | Пишите с прописной буквы только первое слово заголовка. Все остальные слова, кроме имён собственных, пишите со строчной буквы |
+| Английский текст в китайском предложении | Как правило, используйте CamelCase. Для имён собственных сохраняйте общепринятое написание |
+| Смешанный китайский и английский текст | В китайских документах по возможности используйте китайские выражения. Английский используйте только для отдельных фраз или слов. То же правило действует для английских документов |
+
+### Правила написания английских имён собственных {#english-proper-noun-specifications}
+
+Если в китайском документе упоминаются зарубежные бренды, названия продуктов или технические термины, у которых нет официального перевода на китайский язык, используйте английское название с правильным регистром букв. Таблица ниже постоянно пополняется. Вы можете добавить в неё новые записи в своём PR.
+
+| Нет официального перевода на китайский язык |
+| --- |
+| GitHub |
+| SQL |
+| CPU |
+| FE |
+| BE |
+| HTTP |
+| MySQL |
+| MongoDB |
+| Elasticsearch |
+| Azure |
+| AWS |
+| S3 |
+| Doris Manager |
+| WebUI |
+| Flink Doris Connector |
+
+### Требования к функциям SQL и справочнику SQL {#sql-function-and-sql-manual-specifications}
+
+| Ситуация | Правило | Пример |
+| --- | --- | --- |
+| Имена функций SQL | Только прописные буквы. Разделяйте части имени подчёркиванием `_` в соответствии с синтаксическими соглашениями | `ARRAY_MAX`, `DIGITAL_MASKING` |
+| DML / DDL / Типы данных / Управление кластером | Прописные буквы. Разделяйте слова обычным пробелом | `ALTER CATALOG`, `SELECT * FROM` |
+| Примеры и ссылки | Допускаются строчные буквы | `col_name1`, `sample_value` |
+
+Требования к структуре документации функций SQL приведены в разделе [Руководство по участию в разработке документации: как писать справочник команд](./contribute-doc#how-to-write-the-command-help-manual).
+
+### Правила использования сокращений {#abbreviation-specifications}
+
+Сокращения делятся на китайские и английские. Соблюдайте приведённые ниже правила.
+
+**Китайские сокращения**: сокращение должно быть понятным и однозначным. Рекомендуется при первом упоминании термина привести его полное название и сообщить читателю, что далее будет использоваться сокращённая форма.
+
+**Английские сокращения**:
+
+- Не расшифровывайте английские сокращения в заголовках
+- Рекомендуется расшифровывать сокращение при первом упоминании в основном тексте, например `Tablet & Partition` (в последующих документах называются «разделами и бакетами»)
+- Не используйте нестандартные сокращения
+
+:::tip
+
+| Неправильно | Правильно |
+| --- | --- |
+| 16c32g | 16 ядер, 32 GB |
+| 10w | 100,000 |
+
+:::
+
+## Требования к структуре документа {#document-structure-specifications}
+
+### Заголовки {#headings}
+
+Правильно выбранные уровни и формулировки заголовков помогают читателю понять логику всего документа и сразу увидеть его структуру.
+
+**1. Уровни заголовков**
+
+В технических документах используется не более двух уровней заголовков. **Заголовки основной части начинаются с `##`. Не пропускайте уровни.**
+
+| Уровень | Синтаксис | Описание |
+| --- | --- | --- |
+| Заголовок уровня 1 | `{ "title": "", "language": "" }` | Название статьи. **Не используйте `#` для задания названия статьи** |
+| Заголовок уровня 2 | `##` | Заголовок основной части статьи |
+| Заголовок уровня 3 | `###` | Подзаголовок внутри раздела с заголовком уровня 2 |
+
+```markdown
+{
+ "title": "Document title (the # level 1 heading)",
+ "language": "en"
+}
+
+
+## Level 2 heading
+
+### Level 3 heading
+```
+
+**2. Структура формулировок заголовков**
+
+Заголовки технических документов могут иметь следующие формулировки, но не ограничиваются ими:
+
+- Именная группа, например «Принципы выполнения точечных запросов при высокой конкурентности»
+- Тема + глагол, например «Развёртывание Docker»
+- Глагол + тема, например «Каталог файлов конфигурации»
+- Определение + тема, например «Изменение схемы» или «Руководство пользователя Flink Doris Connector»
+- Предлог + определение + тема, например «Развёртывание с помощью Doris Operator»
+
+**3. Дополнительные замечания**
+
+Строгого шаблона для формулировок заголовков нет. Достаточно соблюдать следующие принципы:
+
+- Кратко отражайте основное содержание раздела
+- По возможности используйте одинаковую структуру для заголовков одного уровня
+- **Не повторяйте содержание родительского заголовка в дочернем**
+- **Не ставьте знаки препинания в конце заголовка**
+- Не расшифровывайте сокращения в заголовках
+
+### Вводный абзац {#lead-paragraph}
+
+Вводный абзац располагается перед основной частью. Он должен кратко описывать содержание документа. По возможности ограничьте его объём 150 словами.
+
+Можно использовать один из следующих двух вариантов:
+
+- Объяснить, что такое XXX, например: «Data Export представляет собой функцию Doris для экспорта данных. Она позволяет…»
+- Описать содержание документа, например: «Этот документ знакомит с основными принципами, использованием, рекомендациями и особенностями Data Export»
+
+## Элементы содержимого документа (справочно) {#document-content-elements-for-reference}
+
+### Использование табуляции {#tab-usage}
+
+В технических документах для отступов и выравнивания часто используются клавиша Tab и пробелы. Поэтому рекомендуется:
+
+- Использовать Tab для отступов. Не смешивать табуляцию и пробелы в отступах
+- Во всех редакторах, например Visual Studio Code, задавать единый размер табуляции: один Tab равен четырём обычным пробелам
+- Учитывать, что отступы влияют на отображение документа. **Ориентироваться на отображение в редакторе с форматированным предпросмотром, например VS Code** (так, блоки кода внутри структуры с несколькими уровнями отступов иногда нужно размещать без отступа, чтобы они отображались правильно)
+
+### Использование пробелов {#space-usage}
+
+- Добавляйте обычный пробел до и после английского текста или чисел, если они соседствуют с китайским текстом
+- Добавляйте обычный пробел до и после фрагмента кода, если он соседствует с китайским текстом
+- Не добавляйте пробелы **внутри скобок**. Добавляйте обычный пробел **перед открывающей и после закрывающей скобки**
+
+:::tip
+
+Инструмент для массового добавления обычных пробелов: https://github.com/huacnlee/autocorrect
+
+:::
+
+### Нумерованные и маркированные списки {#ordered-and-unordered-lists}
+
+В основной части технических документов часто используются нумерованные и маркированные списки. Нумерованные списки обычно подчёркивают приоритет или порядок пунктов.
+
+- **Для нумерованного текста рекомендуется использовать формат `1. **Bold ordered text**`**, чтобы текст выравнивался по родительскому уровню без отступа
+- Если нумерованный текст содержит маркированный список, выделяйте нумерованный текст полужирным, а маркированный оставляйте без выделения
+
+### Ссылки {#links}
+
+Ссылки в документе направляют читателя к связанным документам или внешним сайтам. Рекомендуется соблюдать следующие правила:
+
+- **Описание ссылки**: используйте единый стиль описания ссылок одного типа. Избегайте многократного повторения в одном документе фраз вроде «подробнее см.», «подробности приведены в» и «подробности можно найти по адресу»
+- **Формат ссылки**:
+ - Ссылка на другой заголовок в том же документе: `[Inverted Index]`
+ - Ссылка на соседний документ: `[BITMAP Index]`
+ - Ссылка на внешний сайт: `[Wikipedia - Inverted Index](https://en.wikipedia.org/wiki/Inverted_index)`
+- **Путь ссылки**:
+ - В пределах одного документа рекомендуется последовательно использовать либо относительные, либо абсолютные пути. Не смешивайте их
+ - Рекомендуется сокращать число переходов на внешние сайты, чтобы недоступность внешней страницы не мешала читателю. Если ссылка на внешний сайт необходима, рекомендуется предупредить читателя о переходе, например: «Нажмите, чтобы перейти на XXX»
+
+### Блоки кода и комментарии в коде {#code-blocks-and-code-comments}
+
+При вставке блоков кода соблюдайте следующие правила:
+
+- Используйте один обратный апостроф (`` ` ``) для встроенного кода. Для многострочного кода используйте три обратных апострофа
+- Добавляйте пробел до и после встроенного кода. Отделяйте многострочный код от основного текста пустой строкой
+- **Следите за отступами блоков кода**. Если блок кода расположен внутри пункта нумерованного или маркированного списка, добавляйте ему отступ относительно уровня этого пункта
+- Для многострочного кода рекомендуется **добавлять ограждение блока и указывать язык кода**, чтобы включалась соответствующая подсветка синтаксиса
+
+Распространённые языки и их обозначения в ограждении блока кода:
+
+| Тип кода | Обозначение в ограждении блока |
+| --- | --- |
+| Скрипт Shell | ` ```shell ` |
+| Код Python | ` ```python ` |
+| Код JSON | ` ```json ` |
+| Документ XML | ` ```xml ` |
+| Запрос SQL (используйте строчные буквы в `sql`, иначе отображение будет некорректным) | ` ```sql ` |
+| Файл YAML | ` ```yaml ` или ` ```yml ` |
+| Текст Markdown | ` ```markdown ` или ` ```md ` |
+| Код JavaScript | ` ```js ` или ` ```javascript ` |
+| Код Java | ` ```java ` |
+| Код C++ | ` ```cpp ` |
+| Код C | ` ```c ` |
+| Код Ruby | ` ```ruby ` |
+| Код HTML | ` ```html ` |
+| Код CSS | ` ```css ` |
+| Код PHP | ` ```php ` |
+
+При использовании блоков кода `shell` приводите вводимую команду и результат её выполнения отдельно. Ниже приведён пример из документации по доступу к кластеру Kubernetes:
+
+- Используйте следующую команду для проверки соответствующего Service:
+
+ ```shell
+ kubectl get pod --namespace doris
+ ```
+
+- Результат выполнения:
+
+ ```shell
+ NAME READY STATUS RESTARTS AGE
+ doriscluster-helm-fe-0 1/1 Running 0 1m39s
+ doriscluster-helm-fe-1 1/1 Running 0 1m39s
+ doriscluster-helm-fe-2 1/1 Running 0 1m39s
+ doriscluster-helm-be-0 1/1 Running 0 16s
+ doriscluster-helm-be-1 1/1 Running 0 16s
+ doriscluster-helm-be-2 1/1 Running 0 16s
+ ```
+
+### Блоки примечаний {#admonition-notes}
+
+Блоки примечаний используются для выделения содержимого в техническом документе. При их использовании соблюдайте следующие правила.
+
+| Тип | Назначение | Синтаксис |
+| --- | --- | --- |
+| Совет | В основном используется для практических советов | `:::tip Tip` |
+| Информация | Используется для дополнительного материала или пояснений | `:::info Note` |
+| Предупреждение | Используется для предупреждений о действиях или моментах, требующих внимания | `:::caution Caution` |
+
+Блоки примечаний могут содержать нумерованные списки, маркированные списки и блоки кода.
+
+Пример блоков примечаний в документе Markdown:
+
+```markdown
+:::tip Tip
+This is a tip
+:::
+
+:::info Note
+This is a note
+:::
+
+:::caution Caution
+This is a caution
+:::
+```
+
+### Изображения {#images}
+
+При вставке изображения соблюдайте следующие правила:
+
+- Используйте содержательные имена изображений, например `Broadcast Join Principle`
+- **Добавляйте альтернативный текст** при вставке изображения. Рекомендуемый синтаксис: ``
+- Для выравнивания изображения по центру используйте:
+
+ ```markdown
+ <div style={{textAlign:'center'}}>
+ <img src="image URL" alt="text description" style={{display: 'inline-block'}}/>
+ </div >
+ ```
+
+### Таблицы {#tables}
+
+Для переноса строки внутри ячейки таблицы используйте `<p>XXXX</p>`.
+
+### Сворачиваемые блоки {#collapsible-boxes}
+
+Сворачиваемые блоки используются после заголовка уровня 3. Если уровней содержимого слишком много, их можно разделить с помощью сворачиваемого блока.
+
+Соблюдайте следующие правила:
+
+- Используйте синтаксис `<details><summary>Collapsible box title</summary> Collapsible box content</details>`
+- Следите за отступом сворачиваемого блока. Под заголовком уровня 3 начинайте его с крайней левой позиции
+
+Пример сворачиваемого блока в Markdown:
+
+```markdown
+<details>
+<summary>Fill in the title here</summary>
+This is the collapsible box content
+<p>To add a line break, use an HTML tag</p>
+<p>XXXXXXXX</p>
+</details>
+```
+
+### Переключатель вкладок {#tab-selector}
+
+Переключатель вкладок используется после заголовка уровня 3. Если в документе слишком много уровней содержимого, можно использовать контейнер с переключателем вкладок.
+
+Соблюдайте следующие правила:
+
+- Следите за отступом переключателя вкладок. Под заголовком уровня 3 начинайте его с крайней левой позиции
+- Используйте следующий синтаксис:
+
+```markdown
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+<Tabs>
+ <TabItem value="Content title 1" label="Content title 1" default>
+ <p>Content 1 </p>
+ <p>Content 2 </p>
+ </TabItem>
+ <TabItem value="Content title 2" label="Content title 2" default>
+ <p>Content 1 </p>
+ <p>Content 2 </p>
+ </TabItem>
+</Tabs>
+```
+
+### Метки версий {#version-tags}
+
+В новой документации **не рекомендуется использовать метки версий для разграничения нескольких версий документа**. Если необходимо указать, что функция зависит от версии, используйте блок примечания `:::tip :::`.
+
+### Цитаты {#blockquotes}
+
+В новой документации **не рекомендуется использовать символ цитаты `>`** для описания содержимого или создания вложенности. Если нужно добавить примечание, используйте блок `:::info :::`.
+
+## Связанные документы {#related-documents}
+
+- [Руководство по участию в разработке документации](./contribute-doc)
+- [Как поделиться статьёй в блоге](./how-to-share-blogs)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/pull-request.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/pull-request.md
new file mode 100644
index 000000000000..617f65af0052
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/pull-request.md
@@ -0,0 +1,302 @@
+---
+title: Pull Request
+language: ru
+description: "Полный процесс отправки Pull Request в Apache Doris: создание форка и ветки, разрешение конфликтов и отправка PR."
+keywords:
+ - Apache Doris
+ - Pull Request
+ - Отправка PR
+ - Создание форка репозитория
+ - git rebase
+ - Разрешение конфликтов
+ - Сообщение коммита
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: First-time PR submission / Forking the repository / Resolving rebase conflicts -->
+
+GitHub предоставляет удобный механизм совместной работы — [Pull Request (PR)](https://help.github.com/articles/about-pull-requests/). В этом документе описан полный процесс отправки PR в проект Apache Doris.
+
+Процесс включает следующие шаги:
+
+1. Создайте форк репозитория `apache/doris` в своей учётной записи.
+2. Настройте локальный git и создайте коммит с изменениями.
+3. Создайте PR на GitHub.
+4. Если возникнут конфликты, разрешите их с помощью rebase.
+
+## 1. Создание форка репозитория {#1-fork-the-repository}
+
+Перейдите на [страницу GitHub](https://github.com/apache/doris) репозитория `apache/doris` и нажмите кнопку `Fork` в правом верхнем углу, чтобы создать форк.
+
+
+
+## 2. Настройка Git и создание коммита с изменениями {#2-configure-git-and-commit-changes}
+
+### (1) Клонируйте код на локальный компьютер {#1-clone-the-code-locally}
+
+```bash
+git clone https://github.com/<your_github_name>/doris.git
+cd doris
+git submodule update --init --recursive
+```
+
+Примечание: замените `<your_github_name>` своим именем пользователя на GitHub.
+
+После клонирования `origin` по умолчанию указывает на ваш удалённый форк на GitHub.
+
+### (2) Добавьте apache/doris как удалённый репозиторий upstream {#2-add-apachedoris-as-the-upstream-remote}
+
+```bash
+cd doris
+git remote add upstream https://github.com/apache/doris.git
+```
+
+### (3) Проверьте настройки удалённых репозиториев {#3-check-the-remote-repository-settings}
+
+```bash
+git remote -v
+origin https://github.com/<your_github_name>/doris.git (fetch)
+origin https://github.com/<your_github_name>/doris.git (push)
+upstream https://github.com/apache/doris.git (fetch)
+upstream https://github.com/apache/doris.git (push)
+```
+
+### (4) Создайте новую ветку для своих изменений {#4-create-a-new-branch-for-your-changes}
+
+```bash
+git checkout -b <your_branch_name>
+```
+
+Примечание: `<your_branch_name>` — выбранное вами имя ветки.
+
+После создания ветки можно вносить в неё изменения кода.
+
+### (5) Отправьте код в удалённую ветку {#5-push-the-code-to-the-remote-branch}
+
+```bash
+git commit -a -m "<your_commit_message>"
+git push origin <your_branch_name>
+```
+
+Подробнее об использовании git см. в официальной документации GitHub: [Использование git](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories).
+
+## 3. Создание PR {#3-create-a-pr}
+
+### (1) Откройте новый PR {#1-open-a-new-pr}
+
+В браузере перейдите на свою страницу GitHub, выберите ветку, которую вы отправили (`<your_branch_name>`), и нажмите кнопку `Compare & pull request`, чтобы создать PR.
+
+
+
+### (2) Подготовьте ветку {#2-prepare-the-branch}
+
+Теперь появится кнопка `Create pull request`. Если она не появилась, проверьте, правильно ли выбрана ветка. Также можно нажать `compare across forks`, чтобы заново выбрать репозиторий и ветку.
+
+
+
+### (3) Заполните сообщение коммита {#3-fill-in-the-commit-message}
+
+Укажите краткое описание коммита и подробности, затем нажмите `Create pull request`, чтобы завершить создание.
+
+<!-- Knowledge type: Rules and conventions -->
+
+Основные правила написания сообщения коммита:
+
+| Параметр | Требование |
+|------|------|
+| Форма | На английском языке, в форме «глагол + дополнение», в виде повелительного предложения |
+| Время | **Не** используйте глаголы в прошедшем времени |
+| Заголовок и основной текст | Оба обязательны и разделяются пустой строкой (на странице PR в GitHub заполните соответствующие поля по отдельности) |
+| Длина заголовка | Не более **50** символов |
+| Длина строки основного текста | Не более **72** символов в строке; более длинные строки переносите вручную |
+| Содержание основного текста | Объясните, «что было сделано, почему и как» |
+| Первая буква заголовка | Заглавная |
+| Конец заголовка | Без точки |
+| Связанная задача | Укажите связанную задачу в основном тексте (например, `#233`) |
+
+Подробнее см. на странице <https://chris.beams.io/posts/git-commit>.
+
+
+
+### (4) Завершите создание PR {#4-finish-creating-the-pr}
+
+После создания PR вы увидите, что он ожидает проверки сопровождающими проекта Doris. Можно дождаться проверки и слияния или напрямую связаться с сообществом, чтобы узнать о ходе рассмотрения.
+
+
+
+Теперь PR создан. Подробнее о PR см. в разделе [Совместная работа с задачами и Pull Request](https://help.github.com/categories/collaborating-with-issues-and-pull-requests/).
+
+### (5) Дождитесь успешного прохождения проверок CI {#5-wait-for-ci-checks-to-pass}
+
+После создания PR автоматически запускается конвейер CI. В списке проверок внизу страницы PR:
+
+- Проверки с пометкой **Обязательные** **должны все пройти успешно** (стать зелёными), прежде чем PR можно будет объединить.
+- Остальные, необязательные проверки носят справочный характер и не блокируют слияние.
+
+Какие именно проверки обязательны, определяется текущими отметками на странице PR. Если проверка завершилась с ошибкой, нажмите на неё, чтобы открыть журнал GitHub Actions и найти причину. После исправления выполните `git push`, чтобы запустить проверки повторно.
+
+## 4. Разрешение конфликтов {#4-resolving-conflicts}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Git conflicts on a PR / Branch is behind master -->
+
+Конфликты кода при отправке PR обычно возникают, когда несколько человек редактируют один и тот же файл. Чтобы разрешить их, выполните следующие шаги:
+
+### (1) Переключитесь на основную ветку {#1-switch-to-the-main-branch}
+
+```bash
+git checkout master
+```
+
+### (2) Синхронизируйте локальную основную ветку с удалённой {#2-sync-the-remote-main-branch-to-local}
+
+```bash
+git pull upstream master
+```
+
+### (3) Вернитесь в ветку разработки (предположим, она называется fix) {#3-switch-back-to-the-development-branch-assume-the-branch-is-named-fix}
+
+```bash
+git checkout fix
+```
+
+### (4) Выполните rebase {#4-run-rebase}
+
+```bash
+git rebase -i master
+```
+
+Откроется файл с историей коммитов. В большинстве случаев достаточно сохранить его без изменений. Затем Git укажет файлы с конфликтами. Откройте каждый такой файл и разрешите конфликт. После обработки всех конфликтующих файлов выполните:
+
+```bash
+git add .
+git rebase --continue
+```
+
+Повторяйте эти действия, пока на экране не появится сообщение об успешном завершении rebase, например *rebase successful*. Затем принудительно отправьте обновления в ветку PR:
+
+```bash
+git push -f origin fix
+```
+
+## 5. Полный пример {#5-complete-example}
+
+<!-- Knowledge type: Worked example -->
+
+Ниже приведён полный пример: от синхронизации кода до отправки ветки.
+
+### (1) Получите последнюю версию кода, находясь в локальной ветке с уже настроенным upstream {#1-fetch-the-latest-code-on-a-local-branch-with-upstream-already-configured}
+
+```bash
+$ git branch
+* master
+
+$ git fetch upstream
+remote: Counting objects: 195, done.
+remote: Compressing objects: 100% (68/68), done.
+remote: Total 141 (delta 75), reused 108 (delta 48)
+Receiving objects: 100% (141/141), 58.28 KiB, done.
+Resolving deltas: 100% (75/75), completed with 43 local objects.
+From https://github.com/apache/doris
+ 9c36200..0c4edc2 master -> upstream/master
+```
+
+### (2) Выполните rebase {#2-run-rebase}
+
+```bash
+$ git rebase upstream/master
+First, rewinding head to replay your work on top of it...
+Fast-forwarded master to upstream/master.
+```
+
+### (3) Проверьте, остались ли коммиты других участников, ещё не синхронизированные с вашим репозиторием {#3-check-whether-others-commits-have-not-been-synced-to-your-own-repo}
+
+```bash
+$ git status
+# On branch master
+# Your branch is ahead of 'origin/master' by 8 commits.
+#
+# Untracked files:
+# (use "git add <file>..." to include in what will be committed)
+#
+# custom_env.sh
+nothing added to commit but untracked files present (use "git add" to track)
+```
+
+### (4) Синхронизируйте коммиты других участников со своим репозиторием {#4-sync-others-commits-to-your-own-repo}
+
+```bash
+$ git push origin master
+Counting objects: 195, done.
+Delta compression using up to 32 threads.
+Compressing objects: 100% (41/41), done.
+Writing objects: 100% (141/141), 56.66 KiB, done.
+Total 141 (delta 76), reused 140 (delta 75)
+remote: Resolving deltas: 100% (76/76), completed with 44 local objects.
+To https://lide-reed:xxxx@github.com/lide-reed/doris.git
+ 9c36200..0c4edc2 master -> master
+```
+
+### (5) Создайте новую ветку и начните разработку {#5-create-a-new-branch-and-start-development}
+
+```bash
+$ git checkout -b my_branch
+Switched to a new branch 'my_branch'
+
+$ git branch
+ master
+* my_branch
+```
+
+### (6) Добавьте изменения в индекс после редактирования кода {#6-stage-the-changes-after-editing-the-code}
+
+```bash
+$ git add -u
+```
+
+### (7) Укажите сообщение и создайте коммит в локальной ветке {#7-fill-in-the-message-and-commit-to-the-local-branch}
+
+```bash
+$ git commit -m "Fix a typo"
+[my_branch 55e0ba2] Fix a typo
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+```
+
+### (8) Отправьте ветку в свой репозиторий на GitHub {#8-push-the-branch-to-your-own-repo-on-github}
+
+```bash
+$ git push origin my_branch
+Counting objects: 11, done.
+Delta compression using up to 32 threads.
+Compressing objects: 100% (6/6), done.
+Writing objects: 100% (6/6), 534 bytes, done.
+Total 6 (delta 4), reused 0 (delta 0)
+remote: Resolving deltas: 100% (4/4), completed with 4 local objects.
+remote:
+remote: Create a pull request for 'my_branch' on GitHub by visiting:
+remote: https://github.com/lide-reed/doris/pull/new/my_branch
+remote:
+To https://lide-reed:xxxx@github.com/lide-reed/doris.git
+ * [new branch] my_branch -> my_branch
+```
+
+Теперь можно создать PR, следуя описанным выше шагам.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/review-and-ci.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/review-and-ci.md
new file mode 100644
index 000000000000..c4719c7a9d94
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/how-to-contribute/review-and-ci.md
@@ -0,0 +1,192 @@
+---
+title: Проверка кода и CI
+language: ru
+description: Как рецензировать Pull Request в Apache Doris, запускать CI, устранять выявленные проблемы и доводить изменения до слияния.
+keywords:
+ - Apache Doris
+ - Рецензирование Pull Request
+ - CI
+ - TeamCity
+ - Проверка с помощью ИИ
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: procedure -->
+<!-- Applicable scenarios: after opening a PR / review / CI / merge -->
+
+После создания Pull Request (PR) автору необходимо пройти рецензирование кода и проверки CI, а также внести все необходимые исправления, прежде чем PR можно будет слить. Это руководство описывает весь процесс от создания PR до слияния. О том, как создать PR, читайте в [руководстве по Pull Request](./pull-request.md).
+
+
+
+Обзор процесса:
+
+1. Если у вас нет прав Committer, попросите участника с такими правами изучить изменения и одобрить рабочий процесс CI.
+2. Проверьте собственные изменения и при желании запустите локальную проверку с помощью ИИ, используя навык `doris-repo-review`.
+3. После одобрения рабочего процесса CI запустите проверки TeamCity комментарием в PR.
+4. Устраните проблемы, выявленные CI и рецензентами, и убедитесь, что все обязательные проверки текущего коммита пройдены.
+5. После того как Reviewer и соответствующие Code Owners одобрят код, попросите участника с правами Committer выполнить слияние PR.
+
+## 1. Попросите участника с правами Committer одобрить рабочий процесс CI {#1-ask-a-committer-to-approve-the-ci-workflow}
+
+Когда PR создаёт участник без прав Committer, рабочий процесс CI может ожидать одобрения участника сообщества с необходимыми правами. Попросите участника с правами Committer изучить изменения и одобрить рабочий процесс. Одобрение рабочего процесса лишь разрешает CI выполнять код из PR. Оно не означает, что участник с правами Committer одобрил код или согласился выполнить слияние.
+
+Присоединитесь к [сообществу Apache Doris в Slack](https://doris.apache.org/slack?utm_source=website&utm_medium=docs&utm_content=review_ci) и опубликуйте следующую информацию в канале `#dev`, чтобы сообщество могло подобрать подходящего Reviewer:
+
+```text
+PR: <PR URL>
+Module: <affected module>
+Change: <one-sentence purpose>
+Local validation: <tests already run>
+Help needed: Approve CI workflow / Review
+```
+
+Если вы не знаете, к кому обратиться, посмотрите недавно слитые PR для этого модуля или историю коммитов затронутых файлов. Затем в канале `#dev` можно пригласить участника с правами Committer, знакомого с этим модулем.
+
+## 2. Проверьте изменения локально {#2-review-the-change-locally}
+
+Пока вы ожидаете одобрения рабочего процесса или завершения удалённых проверок CI, самостоятельно проверьте PR:
+
+- Убедитесь, что изменённые файлы соответствуют описанию PR и не содержат посторонних правок.
+- Проверьте обычные сценарии выполнения, обработку ошибок, граничные условия и влияние на совместимость.
+- Убедитесь, что новое поведение покрыто тестами, а существующие тесты не удалены и не ослаблены без причины.
+- При необходимости обновите справочники по конфигурации, пользовательскую документацию, сообщения об ошибках и примечания по обновлению.
+- Убедитесь, что в журналах нет паролей, токенов, ключей и других секретов.
+
+### Запустите локальную проверку с помощью ИИ, используя `doris-repo-review` {#run-a-local-ai-review-with-doris-repo-review}
+
+Apache Doris предоставляет [навык `doris-repo-review`](https://github.com/apache/doris-skills/tree/main/skills/doris-repo-review). Он проверяет PR в локальной копии исходного кода Doris тем же методом, что и онлайн-конвейер Code Review. Навык не компилирует код и не запускает тесты, поэтому не заменяет CI.
+
+Установите навыки Apache Doris:
+
+```bash
+npx skills add apache/doris-skills
+```
+
+В локальной среде должны быть установлены `git`, CLI `gh` с настроенной аутентификацией, `jq` и `python3`. Локальная копия Doris должна содержать полную историю Git. Находясь в локальной копии исходного кода `apache/doris`, выполните следующую команду в агенте, поддерживающем навыки:
+
+```text
+/doris-repo-review https://github.com/apache/doris/pull/<PR number>
+```
+
+После команды можно указать, на чём сосредоточиться при проверке:
+
+```text
+/doris-repo-review https://github.com/apache/doris/pull/<PR number> focus on compatibility and error handling
+```
+
+Навык приводит текущий рабочий каталог к точному коммиту PR и записывает документы с результатами проверки на английском и китайском языках в `review-docs/`. Перед запуском самостоятельно закоммитьте локальные изменения в отслеживаемых файлах или сохраните их в stash. Навык не сохраняет изменения в stash и не удаляет их за вас, а также может оставить рабочий каталог в состоянии detached HEAD.
+
+Навык автоматически публикует машиночитаемый комментарий PASS от имени локально аутентифицированной учётной записи `gh`, если выполняются все следующие условия:
+
+- Вердикт проверки — `APPROVE`, замечаний уровня `Blocker` или `Major` нет.
+- Проверка достигла согласованного результата, а документы с её результатами прошли валидацию.
+- Выбранная модель и уровень рассуждений соответствуют требованиям навыка.
+- Текущий коммит PR не изменился за время проверки.
+
+Навык не публикует комментарий PASS, если вынесен вердикт `REQUEST_CHANGES`, проверка не достигла согласованного результата, среда выполнения не соответствует требованиям или текущий коммит PR изменился. Этот комментарий подтверждает локальную проверку конкретного коммита с помощью ИИ. Он не означает одобрения участником Apache и не заменяет одобрение кода со стороны Reviewer.
+
+## 3. Запустите CI в TeamCity {#3-trigger-teamcity-ci}
+
+После одобрения рабочего процесса CI опубликуйте в PR следующий комментарий, чтобы запустить конвейер TeamCity:
+
+```text
+run buildall
+```
+
+`run buildall` запускает полный набор применимых проверок с учётом изменённых файлов PR. Используйте эту команду для обычного проверочного запуска. Чтобы запустить или повторить отдельную группу проверок, используйте другую команду, которую в настоящее время поддерживает [рабочий процесс запуска TeamCity](https://github.com/apache/doris/blob/master/.github/workflows/comment-to-trigger-teamcity.yml).
+
+| Команда | Назначение |
+|---------|---------|
+| `run buildall` | Запустить полный набор применимых проверок компиляции и тестов |
+| `run compile` | Запустить проверки компиляции |
+| `run beut` | Запустить модульные тесты BE |
+| `run feut` | Запустить модульные тесты FE |
+| `run cloudut` | Запустить модульные тесты Cloud |
+| `run p0` | Запустить регрессионные тесты P0 |
+| `run p1` | Запустить регрессионные тесты P1 |
+| `run external` | Запустить регрессионные тесты External |
+| `run cloud_p0` | Запустить регрессионные тесты Cloud P0 |
+| `run cloud_p1` | Запустить регрессионные тесты Cloud P1 |
+| `run vault_p0` | Запустить регрессионные тесты Vault P0 |
+| `run nonConcurrent` | Запустить регрессионные тесты, которые нельзя выполнять параллельно |
+| `run check_coverage` | Запустить проверку покрытия кода |
+| `run performance` | Запустить тесты производительности |
+
+Если PR изменяет скрипты конвейера в `regression-test/pipeline/`, затрагивающие безопасность учётных данных, команды запуска отдельных тестов блокируются. Проверив безопасность скриптов, участник с правами Committer должен использовать `run buildall`, чтобы подтвердить изменения и запустить конвейер.
+
+## 4. Определите, успешно ли пройдены проверки CI {#4-determine-whether-ci-passed}
+
+Проверки PR делятся на обязательные и необязательные:
+
+- **Обязательные проверки**: перед слиянием PR должны быть успешно пройдены все обязательные проверки его текущего коммита.
+- **Необязательные проверки**: их результаты дают дополнительную информацию, но напрямую не блокируют слияние. Если такая проверка завершилась с ошибкой, всё равно выясните, вызвана ли она вашими изменениями, а не игнорируйте её.
+
+Если CI завершился с ошибкой, откройте журналы проверки и определите причину: ошибка в коде, ошибка в тесте, проблема инфраструктуры или нестабильный тест. Исправьте ошибки в коде и тестах и отправьте новый коммит. Если вы подозреваете проблему инфраструктуры или нестабильность теста, добавьте в PR URL журнала неудачного запуска и свои доводы, затем попросите участника с правами Committer или сопровождающего модуля помочь с повторным запуском или расследованием.
+
+Каждая отправка изменений меняет текущий коммит PR. Ориентируйтесь только на проверки последнего коммита. Зелёный статус проверки или AI Review PASS для более раннего коммита не распространяется на текущий коммит.
+
+## 5. Попросите участника с правами Committer запустить онлайн-проверку с помощью ИИ {#5-ask-a-committer-to-trigger-online-ai-review}
+
+Участник с правами Committer или другой участник с необходимыми правами в репозитории может запустить онлайн-проверку с помощью ИИ, опубликовав в PR следующий комментарий:
+
+```text
+/review
+```
+
+В команде также можно указать, на чём сосредоточиться:
+
+```text
+/review focus on compatibility and error handling
+```
+
+Онлайн-проверка с помощью ИИ использует тот же метод рецензирования, что и навык `doris-repo-review`, но задание попадает в онлайн-очередь и должно дождаться доступных ресурсов. Посмотрите статус `code-review` и журналы соответствующего запуска GitHub Actions в разделе проверок PR. Не запускайте повторные проверки только потому, что задание какое-то время остаётся в состоянии Queued или Running.
+
+Успешный статус проверки `code-review` означает, что онлайн-проверка завершилась и опубликовала рецензию. Он не означает, что проверка не выявила проблем. Прочитайте сводку рецензии и комментарии к строкам кода и разберите замечания.
+
+## 6. Разберите замечания рецензентов и завершите слияние {#6-address-review-findings-and-complete-the-merge}
+
+### Получите одобрение Code Owner {#obtain-code-owner-approval}
+
+Apache Doris использует [`.github/CODEOWNERS`](https://github.com/apache/doris/blob/master/.github/CODEOWNERS) для назначения Code Owners определённым путям в исходном коде. Когда PR изменяет файлы по одному из этих путей, GitHub запрашивает рецензию у соответствующего человека или команды. Если для модуля требуется рецензирование со стороны Code Owner, перед слиянием PR необходимо получить одобрение соответствующего Code Owner.
+
+Одобрение Code Owner, одобрение рабочего процесса CI и одобрение обычного Reviewer — отдельные требования. Одно не заменяет другое. Проверьте раздел рецензентов PR и требования к слиянию, чтобы узнать, ожидается ли рецензия Code Owner. Если вы не знаете, к кому обратиться, ориентируйтесь на актуальный файл `CODEOWNERS` и опубликуйте URL PR в канале Slack `#dev`. Список Code Owners не приводится в этом руководстве, поскольку конфигурация репозитория может меняться.
+
+### Разберите замечания рецензентов {#address-review-findings}
+
+После получения замечаний от людей или ИИ:
+
+1. Определите, относится ли каждое замечание к текущим изменениям.
+2. Устраните обоснованные замечания в коде, тестах или документации и сообщите в ответе, что изменилось.
+3. Если замечание неприменимо, объясните техническую причину и приведите подтверждающие данные.
+4. Помечайте обсуждение как решённое только после устранения проблемы.
+5. После отправки нового коммита повторно запустите затронутые проверки CI и рецензирование. AI Review PASS, привязанный к более раннему коммиту, не распространяется на новый коммит.
+6. Если в PR есть конфликты, выполните rebase на последнюю версию целевой ветки и разрешите их.
+
+Попросите участника с правами Committer выполнить слияние, когда PR будет соответствовать всем следующим условиям:
+
+- Описание PR полное, а объём изменений понятен.
+- Все замечания рецензентов разобраны.
+- Все обязательные проверки последнего коммита PR успешно пройдены.
+- В PR нет неразрешённых конфликтов с целевой веткой.
+- Reviewer одобрил код.
+- Code Owners затронутых путей одобрили код в соответствии с требованиями.
+
+Участник с правами Committer принимает окончательное решение о слиянии на основании рецензирования, результатов CI и правил слияния проекта.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/join-community.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/join-community.md
new file mode 100644
index 000000000000..d8d9ca09b133
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/join-community.md
@@ -0,0 +1,75 @@
+---
+title: Присоединяйтесь к сообществу
+language: ru
+description: "Как присоединиться к сообществу Apache Doris: официальные каналы и ссылки на Slack, GitHub, списки рассылки, Twitter, LinkedIn, YouTube и Bilibili."
+keywords:
+ - сообщество Apache Doris
+ - присоединиться к сообществу Doris
+ - Slack сообщества Doris
+ - GitHub проекта Doris
+ - список рассылки Doris
+ - сообщество разработчиков и пользователей открытого проекта Doris
+ - Apache Top-Level Project
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Присоединяйтесь к сообществу Apache Doris {#join-the-apache-doris-community}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: New user onboarding / Joining the community -->
+
+[Apache Doris](https://github.com/apache/doris) представляет собой проект хранилища данных реального времени с открытым исходным кодом, который поддерживают пользователи и разработчики со всего мира. В июне 2022 года проект вышел из Apache Incubator и получил статус Apache Top-Level Project (TLP). На этой странице перечислены официальные каналы общения сообщества. Выберите наиболее удобный для вас канал, чтобы участвовать в обсуждениях и следить за новостями.
+
+:::tip Хотите внести вклад в развитие сообщества?
+
+Если вы хотите внести вклад в Apache Doris, занимаясь разработкой кода, созданием материалов или популяризацией проекта, начните с [руководства по участию в проекте](how-to-contribute/contribute-to-doris.mdx).
+
+:::
+
+## Обзор официальных каналов сообщества {#overview-of-official-community-channels}
+
+Назначение каждого канала и варианты его использования приведены ниже:
+
+| Канал | Назначение | Ссылка |
+|------|------|------|
+| Slack | Обсуждения, вопросы и ответы в реальном времени (рекомендуется новым пользователям) | [https://doris.apache.org/slack](https://doris.apache.org/slack?utm_source=website&utm_medium=docs&utm_content=community_join_page) |
+| GitHub | Исходный код, задачи, PRs, примечания к выпускам | <https://github.com/apache/doris> |
+| Список рассылки | Официальный канал Apache для асинхронных обсуждений и принятия решений | См. [Подписка на список рассылки](subscribe-mail-list) |
+| Twitter | Примеры использования со всего мира, новости о выпусках, анонсы мероприятий | <https://twitter.com/doris_apache> |
+| LinkedIn | Расширение круга профессиональных знакомств, вакансии и новости отрасли | <https://www.linkedin.com/company/doris-apache/> |
+| YouTube | Видеозаписи зарубежных Meetup и технических докладов | <https://www.youtube.com/hashtag/apachedoris> |
+| Bilibili | Видеозаписи Meetup и технических докладов в Китае | <https://space.bilibili.com/362350065> |
+
+## Выбор канала в зависимости от задачи {#choose-a-channel-by-scenario}
+
+<!-- Knowledge type: Scenario routing -->
+
+- **Чтобы быстро задать вопрос или участвовать в ежедневных обсуждениях**: присоединяйтесь к [Slack](https://doris.apache.org/slack?utm_source=website&utm_medium=docs&utm_content=community_join_page).
+- **Чтобы сообщить об ошибках или предложить изменения в коде**: посетите [GitHub](https://github.com/apache/doris) и ознакомьтесь с разделом [Обратная связь](feedback) и [руководством по участию в проекте](how-to-contribute/contribute-to-doris.mdx).
+- **Чтобы следить за решениями сообщества и объявлениями о выпусках**: [подпишитесь на список рассылки](subscribe-mail-list).
+- **Чтобы знакомиться с примерами использования и техническими материалами**: следите за публикациями в [Twitter](https://twitter.com/doris_apache) и [LinkedIn](https://www.linkedin.com/company/doris-apache/).
+- **Чтобы смотреть записи Meetup и технических докладов**: посетите [YouTube](https://www.youtube.com/hashtag/apachedoris) или [Bilibili](https://space.bilibili.com/362350065).
+
+## Следующие шаги {#next-steps}
+
+- [Подписка на список рассылки](subscribe-mail-list): подпишитесь на список рассылки dev за 5 шагов.
+- [Обратная связь](feedback): официальный порядок отправки сообщений об ошибках и предложений.
+- [Раскрытие информации об уязвимостях безопасности](security): сообщите об уязвимостях команде безопасности ASF.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-complete.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-complete.md
new file mode 100644
index 000000000000..379476773650
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-complete.md
@@ -0,0 +1,238 @@
+---
+title: Завершение выпуска
+language: ru
+description: "Завершение выпуска Apache Doris: SVN-каталог Release, ссылки для скачивания, примечания к выпуску и удаление старых версий."
+keywords:
+ - Apache Doris
+ - Завершение выпуска
+ - SVN-каталог Release
+ - Ссылки для скачивания
+ - Примечания к выпуску
+ - Выпуск в Maven
+ - Письмо с объявлением
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Завершение выпуска {#complete-the-release}
+
+<!-- Knowledge type: Operational steps -->
+<!-- Applicable scenarios: Apache release process / Release wrap-up -->
+
+В этом документе описаны заключительные действия, которые необходимо выполнить после успешного завершения голосования по выпуску в списке рассылки `dev@doris`.
+
+## Контрольный список завершения выпуска {#release-completion-checklist}
+
+| Шаг | Действие | Исполнитель |
+|------|--------|--------------|
+| 1. Загрузка пакета в Release | Переместить пакет исходного кода, файлы подписей и контрольных сумм из `dev` в `release` | Участник PMC |
+| 2. Публикация репозитория Maven Staging | Нажать `Release` в Apache Nexus | Менеджер выпуска |
+| 3. Подготовка примечаний к выпуску | Обновить GitHub Release и страницу загрузок официального сайта | Менеджер выпуска |
+| 4. Удаление старых версий из SVN | Оставить только последнюю версию и заменить ссылки на старые версии архивными URL | Менеджер выпуска |
+| 5. Отправка письма с объявлением | Объявить о новом выпуске в `dev@doris` | Менеджер выпуска |
+
+## 1. Загрузка пакета в Release {#1-upload-the-package-to-release}
+
+После успешного завершения официального голосования по выпуску сначала отправьте письмо `[Result]`, затем подготовьте пакет выпуска. Скопируйте пакет исходного кода, файлы подписей и файлы хешей из соответствующей папки, ранее опубликованной в `dev`, в новый каталог (например, `1.1.0`). Примечания:
+
+- Имя файла **не должно содержать суффикс `rcxx`** (файл можно переименовать, но подпись нельзя создавать заново).
+- Хеши можно вычислить заново; результат будет тем же.
+
+> Выполнить этот шаг могут только участники PMC.
+
+Исходный путь в SVN:
+
+```text
+https://dist.apache.org/repos/dist/dev/doris/
+```
+
+Целевой путь в SVN:
+
+```text
+https://dist.apache.org/repos/dist/release/doris/
+```
+
+Пример команды:
+
+```shell
+svn mv -m "move doris 1.1.0-rc05 to release" \
+ https://dist.apache.org/repos/dist/dev/doris/1.1 \
+ https://dist.apache.org/repos/dist/release/doris/1.1
+```
+
+При первом выпуске необходимо также скопировать файл KEYS и добавить его в каталог release в SVN. После успешного добавления опубликованные файлы будут доступны по адресу:
+
+```text
+https://dist.apache.org/repos/dist/release/doris/1.xx/
+```
+
+Через некоторое время они также появятся на официальном сайте Apache:
+
+```text
+http://www.apache.org/dist/doris/1.xx/
+```
+
+## 2. Публикация ссылок на сайте Doris и GitHub {#2-publish-links-on-the-doris-website-and-github}
+
+В этом разделе в качестве примера используется Doris Core. Для других компонентов замените соответствующие названия.
+
+### 2.1 Создание ссылок для скачивания {#21-create-download-links}
+
+| Тип ссылки | URL |
+|-----------|-----|
+| Ссылка для скачивания | `http://www.apache.org/dyn/closer.cgi?filename=doris/1.xx/apache-doris-1.xx-src.tar.gz&action=download` |
+| Скачивание через wget | `https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=doris/1.xx/apache-doris-1.xx-src.tar.gz` |
+| Исходное расположение | `https://www.apache.org/dist/doris/1.xx/` |
+| Точка входа Closer | `http://www.apache.org/dyn/closer.cgi/doris/1.xx/apache-doris-1.xx-src.tar.gz` |
+| Пакет исходного кода | `http://www.apache.org/dyn/closer.cgi/doris/1.xx/apache-doris-1.xx-src.tar.gz` |
+| Подпись ASC | `http://archive.apache.org/dist/doris/1.xx/apache-doris-1.xx-src.tar.gz.asc` |
+| Контрольная сумма sha512 | `http://archive.apache.org/dist/doris/1.xx/apache-doris-1.xx-src.tar.gz.sha512` |
+| KEYS | `http://archive.apache.org/dist/doris/KEYS` |
+
+Пример команды wget:
+
+```shell
+wget --trust-server-names "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=doris/1.xx/apache-doris-1.xx-src.tar.gz"
+```
+
+Подробные правила см. в [рекомендациях Apache по страницам загрузок](http://www.apache.org/dev/release-download-pages#closer).
+
+### 2.2 Maven {#22-maven}
+
+В [промежуточных репозиториях Apache Maven](https://repository.apache.org/#stagingRepositories) найдите соответствующий Staging Repo:
+
+1. Если он ещё не закрыт, сначала нажмите `close`.
+2. Нажмите `Release`, чтобы выполнить официальный выпуск.
+
+> Если на шаге `close` появляется сообщение `No public key: Key with id: (xxx) was not able to be located on`, выполните следующую команду, чтобы отправить открытый ключ на общедоступный сервер ключей, затем повторите закрытие:
+>
+> ```shell
+> gpg --keyserver hkp://keyserver.ubuntu.com --send-keys xxx
+> ```
+>
+> Значение `xxx` можно получить с помощью `gpg -k`.
+
+### 2.3 Подготовка примечаний к выпуску {#23-prepare-the-release-notes}
+
+Необходимо обновить информацию в двух местах:
+
+#### 2.3.1 Страница выпуска на GitHub {#231-github-release-page}
+
+```text
+https://github.com/apache/doris/releases/tag/0.9.0-rc01
+```
+
+#### 2.3.2 Страница загрузок сайта Doris {#232-doris-website-download-page}
+
+Страница загрузок представляет собой файл Markdown, расположенный по следующим путям:
+
+```text
+docs/zh-CN/downloads/downloads.md
+docs/en/downloads/downloads.md
+```
+
+Необходимо внести два изменения:
+
+1. Заменить URL для скачивания предыдущей версии на URL архива Apache (см. следующий раздел).
+2. Добавить информацию о скачивании новой версии.
+
+### 2.4 Удаление старых версий из SVN {#24-clean-up-old-versions-in-svn}
+
+#### 2.4.1 Удаление старых версий из SVN {#241-delete-old-versions-from-svn}
+
+В SVN достаточно хранить пакеты только последней версии. После нового выпуска удалите старые версии, чтобы по следующим двум путям остались только пакеты последней версии:
+
+```text
+https://dist.apache.org/repos/dist/release/doris/
+https://dist.apache.org/repos/dist/dev/doris/
+```
+
+#### 2.4.2 Замена ссылок на URL архива {#242-replace-with-the-archive-url}
+
+На странице загрузок сайта Doris замените URL для скачивания старых версий на URL страницы архива:
+
+| Тип | URL |
+|------|-----|
+| Страница загрузок | `http://doris.apache.org/downloads.html` |
+| Страница архива | `http://archive.apache.org/dist/doris` |
+
+В Apache действует механизм синхронизации, который архивирует ранее выпущенные версии. Порядок действий описан в разделе [Как архивировать](https://www.apache.org/legal/release-policy.html#how-to-archive). Даже после удаления старых пакетов из SVN они остаются доступны на странице архива.
+
+## 3. Письмо с объявлением {#3-announce-email}
+
+Тема письма:
+
+```text
+[ANNOUNCE] Apache Doris 1.xx release
+```
+
+Отправьте письмо в список рассылки:
+
+```text
+dev@doris.apache.org
+```
+
+Текст письма:
+
+```text
+Hi All,
+
+We are pleased to announce the release of Apache Doris 1.xx.
+
+Apache Doris is an MPP-based interactive SQL data warehousing for reporting and analysis.
+
+The release is available at:
+http://doris.apache.org/master/zh-CN/downloads/downloads.html
+
+Thanks to everyone who has contributed to this release, and the release note can be found here:
+https://github.com/apache/doris/releases
+
+Best Regards,
+
+On behalf of the Doris team,
+xxx
+```
+
+## Часто задаваемые вопросы {#faq}
+
+### Вопрос 1: При выполнении `svn mv` возникает ошибка прав доступа? {#q1-svn-mv-reports-a-permission-error}
+
+Только участники PMC имеют право записи в каталог `release` в SVN. Обычным коммиттерам необходимо обратиться к участнику PMC, чтобы он выполнил операцию от их имени.
+
+### Вопрос 2: Maven сообщает об ошибке `No public key` после нажатия `Release`? {#q2-maven-reports-no-public-key-after-clicking-release}
+
+Открытый ключ GPG не был загружен на общедоступный сервер ключей. Выполните следующую команду, чтобы отправить открытый ключ на общедоступный сервер ключей, затем повторите попытку:
+
+```shell
+gpg --keyserver hkp://keyserver.ubuntu.com --send-keys <KEY_ID>
+```
+
+`<KEY_ID>` можно получить с помощью `gpg -k`.
+
+### Вопрос 3: Ссылка для скачивания на сайте возвращает ошибку 404? {#q3-the-download-link-on-the-website-returns-404}
+
+Возможные причины:
+
+- Файлы только что добавлены в каталог release в SVN; распространение по CDN занимает от 10 до 30 минут.
+- Старые версии удалены, но ссылки на странице загрузок ещё не заменены на URL архива.
+
+### Вопрос 4: Пользователи не могут найти старую версию для скачивания? {#q4-users-cannot-find-an-old-version-when-downloading}
+
+Apache автоматически архивирует старые версии. На странице загрузок необходимо заменить ссылки на старые версии на путь `http://archive.apache.org/dist/doris/<version>/`.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-connectors.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-connectors.md
new file mode 100644
index 000000000000..fd50a1bb31b8
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-connectors.md
@@ -0,0 +1,241 @@
+---
+title: Выпуск коннекторов Apache Doris
+language: ru
+description: "Процесс выпуска Apache Doris Spark/Flink Connector: Maven Staging, загрузка в SVN и голосование сообщества."
+keywords:
+ - выпуск Apache Doris Connector
+ - Spark Connector
+ - Flink Connector
+ - Maven Staging
+ - голосование Apache
+ - SVN dist
+ - менеджер выпуска
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск коннекторов Apache Doris {#release-apache-doris-connectors}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Release / Apache vote process -->
+
+В настоящее время коннекторы Doris включают Flink Connector и Spark Connector. Оба репозитория независимы от основного репозитория Doris:
+
+| Коннектор | Репозиторий |
+| --- | --- |
+| Flink Connector | [https://github.com/apache/doris-flink-connector](https://github.com/apache/doris-flink-connector) |
+| Spark Connector | [https://github.com/apache/doris-spark-connector](https://github.com/apache/doris-spark-connector) |
+
+В этом документе на примере Spark Connector 1.2.0 описан полный процесс выпуска компонентов типа Connector: от публикации в Maven Staging и подготовки SVN до голосования сообщества.
+
+## Подготовка к выпуску {#prepare-for-release}
+
+Сначала настройте окружение для подписи, SVN и Maven, следуя документу [Подготовка к выпуску](./release-prepare).
+
+## Публикация в Maven {#release-to-maven}
+
+### 1. Подготовка ветки и тега {#1-prepare-the-branch-and-tag}
+
+Создайте в репозитории ветку `release-1.2.0` и переключитесь на неё.
+
+Измените значение версии `revision` в `pom.xml` на `1.2.0`, затем зафиксируйте изменение:
+
+```bash
+git commit -a -m "Commit for release 1.2.0"
+```
+
+Создайте и отправьте тег:
+
+```bash
+git tag 1.2.0
+git push origin 1.2.0
+```
+
+### 2. Публикация в Maven Staging {#2-release-to-maven-staging}
+
+Для разных версий Spark (например, 2.3, 3.1, 3.2) выпускаются отдельные версии Spark Connector, поэтому каждую из них нужно собирать и публиковать отдельно. Далее в качестве примера используются Spark 2.3 и Scala 2.11.
+
+Сначала выполните локальную установку и проверку:
+
+```bash
+mvn clean install \
+-Dspark.version=2.3.0 \
+-Dscala.version=2.11 \
+-Dspark.major.version=2.3
+```
+
+> Сведения о соответствующих параметрах см. в командах сборки в скрипте `build.sh`. Параметр `revision` задаёт номер версии этого выпуска.
+
+Опубликуйте артефакты в репозитории Apache Staging:
+
+```bash
+mvn deploy \
+-Papache-release \
+-Dspark.version=2.3.0 \
+-Dscala.version=2.11 \
+-Dspark.major.version=2.3
+```
+
+После успешного выполнения команды опубликованная версия появится по адресу [https://repository.apache.org/#stagingRepositories](https://repository.apache.org/#stagingRepositories):
+
+
+
+:::caution Примечание
+Убедитесь, что среди артефактов есть файл подписи `.asc`.
+:::
+
+Если обнаружены ошибки, удалите этот staging-репозиторий и повторите описанные выше шаги.
+
+Проверив, что всё корректно, нажмите кнопку `close`, чтобы завершить публикацию в Staging.
+
+### 3. Подготовка SVN {#3-prepare-svn}
+
+Получите рабочую копию репозитория Dev SVN:
+
+```bash
+svn co https://dist.apache.org/repos/dist/dev/doris/
+```
+
+Создайте архив исходного кода тега, файл подписи и файл контрольной суммы SHA512 (в следующем примере используется `1.2.0`):
+
+```bash
+git archive --format=tar release-1.2.0 --prefix=apache-doris-spark-connector-1.2.0-src/ | gzip > apache-doris-spark-connector-1.2.0-src.tar.gz
+
+gpg -u xxx@apache.org --armor --output apache-doris-spark-connector-1.2.0-src.tar.gz.asc --detach-sign apache-doris-spark-connector-1.2.0-src.tar.gz
+sha512sum apache-doris-spark-connector-1.2.0-src.tar.gz > apache-doris-spark-connector-1.2.0-src.tar.gz.sha512
+```
+
+В macOS используйте:
+
+```bash
+shasum -a 512 apache-doris-spark-connector-1.2.0-src.tar.gz > apache-doris-spark-connector-1.2.0-src.tar.gz.sha512
+```
+
+В результате будут созданы три файла:
+
+| Файл | Назначение |
+| --- | --- |
+| `apache-doris-spark-connector-1.2.0-src.tar.gz` | Архив исходного кода |
+| `apache-doris-spark-connector-1.2.0-src.tar.gz.asc` | Файл подписи GPG |
+| `apache-doris-spark-connector-1.2.0-src.tar.gz.sha512` | Файл контрольной суммы SHA512 |
+
+Переместите эти три файла в каталог SVN:
+
+```text
+doris/spark-connector/1.2.0/
+```
+
+Полная структура каталогов SVN выглядит так:
+
+```text
+|____0.15
+| |____0.15.0-rc04
+| | |____apache-doris-0.15.0-incubating-src.tar.gz.sha512
+| | |____apache-doris-0.15.0-incubating-src.tar.gz.asc
+| | |____apache-doris-0.15.0-incubating-src.tar.gz
+|____KEYS
+|____spark-connector
+| |____1.2.0
+| | |____apache-doris-spark-connector-1.2.0-src.tar.gz
+| | |____apache-doris-spark-connector-1.2.0-src.tar.gz.asc
+| | |____apache-doris-spark-connector-1.2.0-src.tar.gz.sha512
+```
+
+В этой структуре каталог `0.15` содержит основной исходный код Doris, а каталог `spark-connector/1.2.0` содержит файлы этого выпуска.
+
+> О подготовке файла KEYS см. соответствующий раздел документа [Подготовка к выпуску](./release-prepare).
+
+### 4. Голосование {#4-vote}
+
+Начните голосование в списке рассылки `dev@doris.apache.org`, используя следующий шаблон:
+
+```text
+Hi all,
+
+This is a call for the vote to release Apache Doris Spark Connector 1.2.0
+
+The git tag for the release:
+https://github.com/apache/doris-spark-connector/releases/tag/1.2.0
+
+Release Notes are here:
+https://github.com/apache/doris-spark-connector/issues/109
+
+Thanks to everyone who has contributed to this release.
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/doris/spark-connector/1.2.0/
+
+Maven 2 staging repository:
+https://repository.apache.org/content/repositories/orgapachedoris-1031
+
+
+KEYS file is available here:
+https://downloads.apache.org/doris/KEYS
+
+To verify and build, you can refer to following link:
+https://doris.apache.org/community/release-and-verify/release-verify
+
+The vote will be open for at least 72 hours.
+
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because ...
+```
+
+## Завершение выпуска {#complete-the-release}
+
+Выполните оставшиеся шаги выпуска, следуя документу [Завершение выпуска](./release-complete).
+
+## Приложение: публикация в SNAPSHOT {#appendix-publish-to-snapshot}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Pre-release preview -->
+
+Snapshot не является версией Apache Release и используется только для предварительного ознакомления перед выпуском. Версию Snapshot можно публиковать только после обсуждения и одобрения PMC.
+
+Перейдите в каталог Spark Connector (в примере используются Spark 2.3 и Scala 2.11):
+
+```bash
+cd spark-doris-connector
+mvn deploy \
+-Dspark.version=2.3.0 \
+-Dscala.version=2.11 \
+-Dspark.major.version=2.3 \
+```
+
+После публикации версия snapshot доступна по адресу:
+
+```text
+https://repository.apache.org/content/repositories/snapshots/org/apache/doris/doris-spark-connector/
+```
+
+## Частые вопросы и устранение неполадок {#faq--troubleshooting}
+
+**Вопрос: При выполнении `mvn deploy` возникает ошибка `gpg: signing failed: Inappropriate ioctl for device`?**
+
+Выполните `export GPG_TTY=$(tty)` и повторите попытку.
+
+**Вопрос: Файл подписи `.asc` отсутствует в репозитории Staging. Что делать?**
+
+Проверьте, содержит ли команда `mvn deploy` параметр `-Papache-release`, и убедитесь, что `~/.m2/settings.xml` и `settings-security.xml` настроены правильно. Если набор артефактов неполный, удалите этот staging-репозиторий и снова выполните `mvn deploy`.
+
+**Вопрос: Как опубликовать несколько артефактов для разных версий Spark в рамках одного выпуска?**
+
+Для каждого сочетания версий Spark/Scala отдельно выполняйте `mvn deploy`, каждый раз указывая другие значения `-Dspark.version`, `-Dscala.version` и `-Dspark.major.version`. После обработки всех сочетаний закройте staging-репозиторий со всеми артефактами.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core-with-ai-agent.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core-with-ai-agent.md
new file mode 100644
index 000000000000..feb37f1f3e92
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core-with-ai-agent.md
@@ -0,0 +1,546 @@
+---
+title: Выпуск Apache Doris Core с помощью ИИ-агента
+language: ru
+description: "Полное пошаговое руководство по выпуску Apache Doris Core для ИИ-агента и менеджера релиза: подготовка, упаковка, подпись, голосование, завершение выпуска и обновление сайта."
+keywords:
+ - выпуск Apache Doris Core
+ - ИИ-агент
+ - менеджер релиза
+ - голосование Apache
+ - SVN dist
+ - подпись GPG
+ - примечания к выпуску
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск Apache Doris Core с помощью ИИ-агента {#release-apache-doris-core-with-an-ai-agent}
+
+<!-- Knowledge type: Agent runbook -->
+<!-- Applicable scenario: Apache Doris Core release / Release Manager assistant -->
+
+Эта страница представляет собой пошаговое руководство по выпуску Doris Core для ИИ-агентов. Его цель не в том, чтобы агент принимал решения о выпуске за менеджера релиза. Цель в том, чтобы агент мог провести менеджера релиза через весь процесс шаг за шагом: подготовить ветку и тег, создать пакет исходного кода RC, подписать его, загрузить в Apache dev SVN, начать голосование, завершить официальный выпуск и обновить сайт Doris.
+
+Если вы агент, следуйте этому документу по порядку. Для каждого шага объясняйте его цель, какие входные данные должен подтвердить менеджер релиза, какую команду вы выполните или попросите выполнить менеджера релиза и какой проверяемый результат означает завершение шага.
+
+## Область применения и ограничения {#scope-and-boundaries}
+
+Этот документ относится к Apache Doris Core, то есть к выпуску исходного кода из репозитория `apache/doris`. Вспомогательные скрипты для выпуска находятся в репозитории Doris:
+
+```text
+tools/release-tools/
+```
+
+Вспомогательные инструкции по обновлению сайта находятся в репозитории Doris Website:
+
+```text
+doc-tools/skills/add-release/SKILL.md
+```
+
+Агент должен соблюдать следующие ограничения:
+
+| Пункт | Требование |
+| --- | --- |
+| Решения о выпуске | Решения о выпуске принимают менеджер релиза и сообщество. Агент только напоминает, проверяет и систематизирует информацию |
+| Учётная запись ASF и пароль | Не записывайте учётные данные в файлы, не выводите их в логи и не добавляйте в коммиты Git |
+| Закрытый ключ GPG и парольная фраза | Менеджер релиза управляет ими локально. Агент не должен запрашивать или хранить парольную фразу |
+| Запись в публичный SVN | Перед каждой записью просите менеджера релиза подтвердить целевой URL и список файлов |
+| Отправка писем | Скрипты только создают черновики писем. Менеджер релиза должен проверить и вручную отправить письма с адреса `@apache.org` |
+| Результат голосования | Агент может помочь подсчитать голоса, но менеджер релиза должен подтвердить, что результат соответствует правилам голосования ASF |
+| Готовые бинарные пакеты | Скрипты могут подписывать локальные готовые бинарные пакеты и создавать контрольные суммы, но не загружают бинарные пакеты |
+
+## Входные данные, которые агент должен собрать в первую очередь {#inputs-the-agent-must-collect-first}
+
+Перед началом процесса выпуска попросите менеджера релиза подтвердить следующие входные данные. Не переходите к упаковке или загрузке, если отсутствует какой-либо ключевой пункт.
+
+| Входные данные | Пример | Назначение |
+| --- | --- | --- |
+| Версия выпуска | `4.0.7` | Используется для формирования имён пакетов, ссылок на сайте и писем о выпуске |
+| Номер RC | `rc01` или `rc02` | Используется для формирования тега Git и каталога dev SVN |
+| Тег Git | `4.0.7-rc01` | Неизменяемая точка в истории исходного кода для кандидата в релиз |
+| Ветка выпуска | `branch-4.0` | Позволяет убедиться, что тег создан из ожидаемой ветки |
+| Идентификатор Apache | `morningman` | Используется для SVN, KEYS, писем и сведений о подписи |
+| Адрес электронной почты Apache | `morningman@apache.org` | Используется как адрес подписанта в письмах о голосовании |
+| Ключ подписи | Отпечаток GPG или пустое значение для автоматического определения | Используется для создания подписи `.asc` |
+| URL примечаний к выпуску | URL задачи GitHub или примечаний к выпуску на сайте | Используется в письмах о голосовании и при обновлении сайта |
+| Готовые бинарные пакеты | Локальные пути к tar-архивам для `x64`, `x64-noavx2` и `arm64` | Для необязательной подписи и указания в письме о голосовании |
+| Разрешение PMC на запись в release SVN | Есть или требуется помощь PMC | Необходимо для этапа официального выпуска в SVN |
+| Время обновления сайта | Сейчас или позже | Определяет, нужно ли запускать процесс обновления Doris Website |
+
+Собрав входные данные, ещё раз изложите план выпуска. Например:
+
+```text
+This release plan is for Apache Doris 4.0.7, RC rc01, tag 4.0.7-rc01.
+The RC source artifacts will be uploaded to https://dist.apache.org/repos/dist/dev/doris/4.0.7-rc01/.
+After the vote passes, the final source artifacts will be published to https://dist.apache.org/repos/dist/release/doris/4.0/4.0.7/.
+```
+
+## Этап 1: Подтвердите готовность к выпуску {#stage-1-confirm-release-preparation}
+
+Не переходите сразу к вспомогательным скриптам. Сначала убедитесь, что подготовка к выпуску завершена. Вспомогательные скрипты выпуска Doris предполагают, что следующие работы уже выполнены:
+
+1. Менеджер релиза завершил обсуждение плана выпуска в сообществе.
+2. Ветка выпуска создана.
+3. Задачи, PR и важные исправления ошибок для целевой версии закрыты, включены в код или отложены.
+4. Необходимые патчи перенесены в ветку выпуска с помощью cherry-pick.
+5. QA или ответственные сопровождающие завершили проверку стабильности.
+6. Ветка успешно собирается.
+7. Примечания к выпуску готовы, обычно в виде задачи GitHub или документа Markdown.
+8. Тег Git создан и отправлен в удалённый репозиторий, указывающий на `apache/doris`.
+
+Попросите менеджера релиза выполнить следующие проверки в репозитории Doris:
+
+```bash
+git fetch --tags <apache-remote>
+git rev-parse <version>-<rc>
+git ls-remote --tags <apache-remote> refs/tags/<version>-<rc>
+```
+
+Критерии завершения:
+
+- Локальный тег существует.
+- В удалённом репозитории Apache Doris на GitHub есть такой же тег.
+- Локальный и удалённый теги указывают на один и тот же коммит.
+- Менеджер релиза подтверждает готовность ветки выпуска, примечаний к выпуску и результатов проверок.
+
+Если тег отсутствует или коммиты тегов не совпадают, остановите процесс выпуска и попросите менеджера релиза исправить тег, прежде чем продолжать.
+
+## Этап 2: Настройте `release.env` {#stage-2-configure-releaseenv}
+
+Попросите менеджера релиза перейти в каталог инструментов выпуска в репозитории Doris:
+
+```bash
+cd tools/release-tools
+```
+
+Затем отредактируйте `release.env`. Для `4.0.7-rc01` основные поля выглядят так:
+
+```bash
+VERSION="4.0.7"
+RC="rc01"
+TAG="${VERSION}-${RC}"
+GIT_REMOTE="upstream-apache"
+
+APACHE_ID="<your-apache-id>"
+APACHE_EMAIL="<your-apache-id>@apache.org"
+SIGNER_NAME="<your display name>"
+SIGNING_KEY="<your signing key fingerprint, or empty if only one secret key exists>"
+
+RELEASE_NOTES_URL="<release notes issue or page URL>"
+ANNOUNCE_RELEASE_NOTES_URL="<release notes URL for announce email, or empty to reuse>"
+```
+
+Напомните менеджеру релиза проверить следующие производные значения:
+
+| Поле | Ожидаемое значение |
+| --- | --- |
+| `TAG` | Должно включать суффикс RC, например `4.0.7-rc01` |
+| `PKG_BASE` | Имя пакета исходного кода для этапа голосования с суффиксом RC, например `apache-doris-4.0.7-rc01-src` |
+| `RELEASE_PKG_BASE` | Имя пакета исходного кода окончательного выпуска без суффикса RC, например `apache-doris-4.0.7-src` |
+| `DEV_SVN_DIR` | Каталог RC в dev SVN, например `https://dist.apache.org/repos/dist/dev/doris/4.0.7-rc01` |
+| `RELEASE_SVN_DIR` | Каталог release SVN, например `https://dist.apache.org/repos/dist/release/doris/4.0/4.0.7` |
+| `VERIFY_GUIDE_URL` | Указывает на руководство по проверке выпуска Doris |
+
+Если в письме о голосовании нужно перечислить готовые бинарные пакеты, менеджер релиза может указать абсолютные локальные пути к бинарным tar-архивам в `BIN_FILES`. Чётко объясните ограничения:
+
+- `02-package-sign-upload.sh` подписывает файлы из `BIN_FILES` и создаёт рядом с ними файлы `.asc` и `.sha512`.
+- Скрипт не загружает эти бинарные пакеты в Apache dev SVN.
+- Артефакты выпуска для голосования ASF содержат только исходный код.
+
+## Этап 3: Экспортируйте учётные данные ASF SVN {#stage-3-export-asf-svn-credentials}
+
+Попросите менеджера релиза экспортировать учётные данные ASF в текущей оболочке:
+
+```bash
+export ASF_USERNAME=<your-apache-id>
+export ASF_PASSWORD='<your-apache-ldap-password>'
+```
+
+Не просите менеджера релиза передавать вам пароль. Не записывайте пароль в `release.env`.
+
+Критерии завершения:
+
+- `ASF_USERNAME` задана в текущей оболочке.
+- `ASF_PASSWORD` задана в текущей оболочке.
+- Ни одна из переменных не добавлена в коммиты Git.
+
+## Этап 4: Проверьте окружение для подписи и выпуска {#stage-4-check-the-signing-and-release-environment}
+
+Выполните:
+
+```bash
+./01-check-env.sh
+```
+
+Этот скрипт проверяет:
+
+- Наличие необходимых инструментов, включая `git`, `gpg`, `svn`, `sha512sum`, `curl` и `gzip`.
+- Пригодность `GPG_TTY` для работы.
+- Наличие настроек предпочтительного алгоритма хеширования SHA512 в `gpg.conf`.
+- Наличие пригодного для использования локального закрытого ключа GPG.
+- Наличие ключа подписи в Doris KEYS.
+- Работоспособность локальной тестовой подписи и её проверки.
+- Наличие учётных данных ASF SVN.
+
+Если скрипт предлагает отредактировать `gpg.conf`, импортировать ключ, создать ключ или опубликовать KEYS, сначала объясните, что именно он изменит. Затем дайте менеджеру релиза решить, подтверждать ли действие.
+
+Строка успешного завершения:
+
+```text
+environment looks READY for <version>-<rc>
+```
+
+Если эта строка не появилась, не переходите к упаковке и загрузке.
+
+## Этап 5: Упакуйте, подпишите и загрузите артефакты исходного кода RC {#stage-5-package-sign-and-upload-the-rc-source-artifacts}
+
+Перед запуском скрипта загрузки ещё раз укажите целевой URL dev SVN:
+
+```text
+https://dist.apache.org/repos/dist/dev/doris/<version>-<rc>/
+```
+
+После подтверждения менеджера релиза выполните:
+
+```bash
+./02-package-sign-upload.sh
+```
+
+Скрипт выполняет следующие действия:
+
+1. Проверяет наличие локального тега.
+2. Проверяет наличие такого же тега в удалённом репозитории Apache Doris на GitHub.
+3. Проверяет, что локальный и удалённый теги указывают на один и тот же коммит.
+4. Создаёт tar-архив исходного кода с помощью `git archive`.
+5. Создаёт подпись GPG `.asc`.
+6. Создаёт контрольную сумму `.sha512`.
+7. Проверяет подпись и контрольную сумму.
+8. При необходимости подписывает готовые бинарные пакеты, перечисленные в `BIN_FILES`, и создаёт для них контрольные суммы.
+9. После двух подтверждений загружает tar-архив исходного кода, `.asc` и `.sha512` в Apache dev SVN.
+
+В обоих случаях, когда требуется подтверждение, напоминайте менеджеру релиза проверить следующее:
+
+- Целевой URL SVN указан верно.
+- Список загрузки содержит только tar-архив исходного кода, подпись и контрольную сумму.
+- Имена файлов включают суффикс RC.
+- Сообщение коммита SVN соответствует этому RC.
+
+Критерии завершения:
+
+- Каталог dev SVN содержит следующие три файла:
+
+```text
+apache-doris-<version>-<rc>-src.tar.gz
+apache-doris-<version>-<rc>-src.tar.gz.asc
+apache-doris-<version>-<rc>-src.tar.gz.sha512
+```
+
+- В конце работы скрипт предлагает менеджеру релиза выполнить `./03-vote-mail.sh`.
+
+Если перед загрузкой обнаружено, что версия, тег, имя файла или URL SVN указаны неверно, остановитесь и не позволяйте менеджеру релиза подтвердить коммит.
+
+## Этап 6: Создайте и отправьте письмо `[VOTE]` {#stage-6-generate-and-send-the-vote-email}
+
+Выполните:
+
+```bash
+./03-vote-mail.sh
+```
+
+Скрипт записывает следующие файлы в `WORK_DIR`:
+
+```text
+vote-email.txt
+vote-email.eml
+```
+
+Помогите менеджеру релиза проверить черновик письма:
+
+| Пункт проверки | Требование |
+| --- | --- |
+| Тема | `[VOTE] Release Apache Doris <version>-<rc>` |
+| Ссылка на тег GitHub | Указывает на `https://github.com/apache/doris/releases/tag/<version>-<rc>` |
+| Примечания к выпуску | Указывают на примечания к выпуску этой версии |
+| Артефакты RC | Указывают на каталог RC в dev SVN |
+| Ключ PGP | Отпечаток, адрес электронной почты Apache и URL KEYS указаны верно |
+| Руководство по проверке | Указывает на руководство по проверке выпуска Doris |
+| Продолжительность голосования | Указано, что голосование открыто не менее 72 часов |
+| Готовые бинарные пакеты | Если они указаны, URL tar-архива, `.asc` и `.sha512` должны быть верными |
+
+Менеджер релиза должен вручную отправить письмо с адреса `@apache.org` на адрес:
+
+```text
+dev@doris.apache.org
+```
+
+Агент не должен отправлять письмо автоматически.
+
+Критерии завершения:
+
+- Письмо `[VOTE]` отправлено на адрес `dev@doris.apache.org`.
+- Менеджер релиза зафиксировал время начала голосования.
+- Голосование остаётся открытым не менее 72 часов.
+
+## Этап 7: Отслеживайте голосование и отправьте письмо `[RESULT]` {#stage-7-track-the-vote-and-send-the-result-email}
+
+Во время голосования помогайте менеджеру релиза вести таблицу голосов:
+
+| Участник голосования | Идентификатор Apache | Голос | Решающий голос | Примечания |
+| --- | --- | --- | --- | --- |
+| `<name>` | `<apache-id>` | `+1` | да/нет | `<verification summary>` |
+
+Напоминайте менеджеру релиза:
+
+- Учитываются только явно выраженные голоса в ответах.
+- У менеджера релиза нет неявного голоса `+1`. Если менеджер релиза хочет проголосовать, он должен явно выразить свой голос в ответе.
+- Голоса PMC имеют решающую силу. Голоса остальных участников сообщества носят рекомендательный характер.
+- Голосование должно оставаться открытым не менее 72 часов.
+- Для выпуска обычно требуется не менее 3 решающих голосов `+1`, а число голосов `+1` должно превышать число голосов `-1`.
+- При наличии обоснованного голоса `-1` или серьёзной проблемы, выявленной при проверке, менеджер релиза должен решить, следует ли отменить этот RC и подготовить новый.
+
+После успешного голосования менеджер релиза вручную отправляет письмо `[RESULT]`. Агент может подготовить текст письма, но менеджер релиза должен проверить число голосов, их решающую силу и ссылки на ветки обсуждения в списке рассылки.
+
+Критерии завершения:
+
+- Письмо `[RESULT][VOTE]` отправлено на адрес `dev@doris.apache.org`.
+- Менеджер релиза подтвердил, что этот RC прошёл голосование.
+
+## Этап 8: Опубликуйте окончательные артефакты исходного кода и создайте письмо `[ANNOUNCE]` {#stage-8-publish-the-final-source-artifacts-and-generate-the-announce-email}
+
+Запускайте скрипт завершения только после успешного голосования и отправки письма `[RESULT]`:
+
+```bash
+./04-release-complete.sh
+```
+
+Скрипт:
+
+1. Проверяет наличие tar-архива исходного кода RC, прошедшего голосование, его подписи и контрольной суммы в dev SVN.
+2. Проверяет, что целевой каталог release SVN ещё не существует.
+3. Использует `svnmucc` для создания каталога release SVN.
+4. Перемещает файлы RC из dev SVN в release SVN.
+5. Удаляет суффикс RC из имён файлов окончательного выпуска.
+6. Удаляет каталог RC из dev SVN.
+7. Создаёт `announce-email.txt` и `announce-email.eml`.
+
+Напоминайте менеджеру релиза:
+
+- Для записи в release SVN обычно требуются права PMC.
+- Целевой каталог release SVN не должен включать суффикс RC.
+- Имена файлов окончательного пакета исходного кода не должны включать суффикс RC.
+- На этом шаге каталог RC удаляется из dev SVN.
+- Перед коммитом изменений SVN скрипт запрашивает окончательное подтверждение.
+
+Если перемещение в release SVN уже выполнено и нужно только заново создать письмо с объявлением о выпуске, используйте:
+
+```bash
+./04-release-complete.sh --mail-only
+```
+
+Критерии завершения:
+
+- Каталог release SVN содержит следующие файлы:
+
+```text
+apache-doris-<version>-src.tar.gz
+apache-doris-<version>-src.tar.gz.asc
+apache-doris-<version>-src.tar.gz.sha512
+```
+
+- Соответствующий каталог `<version>-<rc>` удалён из dev SVN.
+- Черновик письма с объявлением о выпуске создан.
+
+## Этап 9: Отправьте письмо `[ANNOUNCE]` {#stage-9-send-the-announce-email}
+
+Помогите менеджеру релиза проверить `announce-email.txt`:
+
+| Пункт проверки | Требование |
+| --- | --- |
+| Тема | `[ANNOUNCE] Apache Doris <version> release` |
+| Страница загрузки | Указывает на `https://doris.apache.org/download/` |
+| Артефакты исходного кода | Указывают на окончательный каталог release SVN |
+| Примечания к выпуску | Указывают на окончательные примечания к выпуску |
+| Подпись | Содержит верное имя менеджера релиза |
+
+Менеджер релиза вручную отправляет письмо с объявлением о выпуске с адреса `@apache.org` на адрес:
+
+```text
+dev@doris.apache.org
+```
+
+Критерии завершения:
+
+- Письмо `[ANNOUNCE]` отправлено.
+- Менеджер релиза сохранил ссылку на ветку обсуждения в списке рассылки для ссылок на сайте или в GitHub Release.
+
+## Этап 10: Обновите информацию о выпуске на сайте Doris {#stage-10-update-the-doris-website-release-information}
+
+После успешного голосования по выпуску перейдите в репозиторий Doris Website и прочитайте:
+
+```text
+doc-tools/skills/add-release/SKILL.md
+```
+
+Сначала соберите или подтвердите следующие входные данные:
+
+| Входные данные | Описание |
+| --- | --- |
+| Версия | Например, `4.0.7` |
+| Серия выпусков | Например, `4.0` |
+| Источник примечаний к выпуску | Задача GitHub, текст Markdown или существующие примечания к выпуску |
+| Дата выпуска | Предпочтительно использовать время каталога загрузок Apache или дату объявления |
+| URL пакета исходного кода | `https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz` |
+| URL бинарных пакетов | `x64`, `x64-noavx2`, `arm64`, а также `.asc` и `.sha512` |
+| Суффикс имени файла исходного кода | Подтвердите, что у окончательного пакета исходного кода нет суффикса RC |
+| Размещение на сайте | Нужно ли обновить `Latest`, `Prev` или только историю выпусков |
+| Локализация | По умолчанию поддерживайте соответствие примечаний к выпуску на английском и китайском языках |
+
+Обычно требуется обновить следующие файлы:
+
+```text
+src/constant/download.data.ts
+releasenotes/v<series>/release-<version>.md
+i18n/zh-CN/docusaurus-plugin-content-docs-releases/current/v<series>/release-<version>.md
+releasenotes/all-release.md
+i18n/zh-CN/docusaurus-plugin-content-docs-releases/current/all-release.md
+sidebarsReleases.json
+```
+
+Особенно внимательно проверьте следующее:
+
+- И `DORIS_VERSIONS`, и `ALL_VERSIONS` включают новую версию.
+- Если новая версия становится основной на странице, `VersionEnum.Latest` или `VersionEnum.Prev` обновлено правильно.
+- Поля `source` и `version` для исходного кода формируют действительный URL пакета исходного кода.
+- Для каждого бинарного пакета есть ссылки на `.tar.gz`, `.asc` и `.sha512`.
+- Примечания к выпуску на английском и китайском языках имеют одинаковую структуру.
+- `all-release.md` сохраняет сортировку по дате выпуска в обратном хронологическом порядке.
+- `sidebarsReleases.json` включает идентификатор новых примечаний к выпуску и остаётся корректным JSON.
+
+Рекомендуемые команды проверки:
+
+```bash
+curl -sI https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz
+curl -sI https://download.velodb.io/apache-doris-<version>-bin-x64.tar.gz
+curl -sI https://download.velodb.io/apache-doris-<version>-bin-x64-noavx2.tar.gz
+curl -sI https://download.velodb.io/apache-doris-<version>-bin-arm64.tar.gz
+
+git diff --check
+node -e "JSON.parse(require('fs').readFileSync('sidebarsReleases.json','utf8')); console.log('sidebarsReleases.json ok')"
+rg -n "<version>|release-<version>|apache-doris-<version>" src/constant/download.data.ts releasenotes i18n/zh-CN/docusaurus-plugin-content-docs-releases/current sidebarsReleases.json
+```
+
+Если менеджер релиза разрешает проверку сборкой, выполните обычную сборку Docusaurus или команду локальной проверки для репозитория Doris Website. Если менеджер релиза явно отказывается от сборки, укажите это в итоговом отчёте.
+
+Критерии завершения:
+
+- Данные для загрузки на сайте включают новую версию.
+- Примечания к выпуску на английском и китайском языках добавлены или обновлены.
+- Указатель выпусков и боковая панель обновлены.
+- Ссылки на пакет исходного кода, бинарные пакеты, подписи и контрольные суммы доступны.
+- Соответствующие команды проверки выполнены успешно либо пропущенные проверки явно указаны.
+
+## Этап 11: Проверки после выпуска {#stage-11-post-release-checks}
+
+В завершение помогите менеджеру релиза выполнить следующие проверки:
+
+| Пункт проверки | Требование |
+| --- | --- |
+| Загрузки Apache | `https://downloads.apache.org/doris/<series>/<version>/` доступен |
+| Страница загрузки | На странице сайта `/download/` отображается новая версия |
+| Примечания к выпуску | На странице сайта `/releases/` отображаются новые примечания к выпуску |
+| GitHub Release | GitHub Release для тега обновлён |
+| Старые версии | Если этого требует политика сайта, ссылки на старые версии указывают на архивные URL |
+| Список рассылки | Ссылки на ветки обсуждения `[VOTE]`, `[RESULT]` и `[ANNOUNCE]` сохранены |
+| Проверка исходного кода | Файл по окончательному URL загрузки проходит проверку подписи и контрольной суммы |
+
+Используйте окончательный URL загрузки для пробной проверки:
+
+```bash
+wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz
+wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz.asc
+wget https://downloads.apache.org/doris/<series>/<version>/apache-doris-<version>-src.tar.gz.sha512
+wget https://downloads.apache.org/doris/KEYS
+
+gpg --import KEYS
+gpg --verify apache-doris-<version>-src.tar.gz.asc apache-doris-<version>-src.tar.gz
+sha512sum --check apache-doris-<version>-src.tar.gz.sha512
+```
+
+## Условия для остановки и повторной оценки {#stop-and-re-evaluate-conditions}
+
+Если произойдёт что-либо из перечисленного ниже, посоветуйте менеджеру релиза приостановить процесс выпуска:
+
+- Локальный и удалённый теги указывают на разные коммиты.
+- `01-check-env.sh` не выводит `environment looks READY`.
+- Проверка подписи GPG или контрольной суммы завершается ошибкой.
+- Целевой каталог dev SVN или release SVN предназначен для другой версии.
+- Голосование открыто менее 72 часов.
+- Набрано менее 3 решающих голосов `+1`.
+- Есть неурегулированный обоснованный голос `-1`.
+- Проверяющий обнаружил неожиданные бинарные файлы или артефакты сборки в пакете исходного кода.
+- Проверки LICENSE, NOTICE или лицензионных заголовков завершились ошибкой.
+- Ссылки на сайте указывают на отсутствующие пакеты исходного кода, бинарные пакеты, подписи или контрольные суммы.
+
+Если проблема требует нового RC, помогите менеджеру релиза выполнить следующие действия:
+
+1. Исправить ветку выпуска.
+2. Создать и отправить новый тег, например перейти с `rc01` на `rc02`.
+3. Обновить `RC` и `TAG` в `release.env`.
+4. Начать заново с этапа 4.
+
+## Рекомендуемый шаблон ответа агента {#suggested-agent-reply-template}
+
+Когда менеджер релиза говорит «начни выпуск Doris 4.0.7», агент может ответить:
+
+```text
+I will guide you through the Doris Core release flow. First I need to confirm a few inputs:
+
+1. Is this rc01 or a later RC?
+2. Has the 4.0.7-rcXX tag already been created and pushed to apache/doris?
+3. What is the Git remote name in your Doris checkout that points to apache/doris?
+4. What is the Release Notes URL?
+5. Should this vote email list convenience binaries?
+6. Do you have release SVN write permission, or do you need a PMC member to help with the final release step?
+
+After confirming these, I will check the tag and release.env, then run 01-check-env.sh. I will stop for your confirmation before any public SVN write or email send.
+```
+
+## Шаблон итогового отчёта {#final-summary-template}
+
+После завершения выпуска отправьте менеджеру релиза краткий отчёт:
+
+```text
+Apache Doris <version> release flow is complete.
+
+- RC tag: <version>-<rc>
+- Vote artifacts: <dev SVN URL>
+- Release artifacts: <release SVN URL>
+- Vote thread: <mail thread URL>
+- Result thread: <mail thread URL>
+- Announce thread: <mail thread URL>
+- Website PR/commit: <URL or commit>
+- Validation:
+ - Signature/checksum: passed
+ - Website links: passed
+ - Docusaurus build: passed/skipped
+
+Remaining manual follow-ups:
+- <none or list remaining follow-ups>
+```
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core.md
new file mode 100644
index 000000000000..75d335baf340
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-core.md
@@ -0,0 +1,380 @@
+---
+title: Выпуск Apache Doris Core
+language: ru
+description: "Полный процесс выпуска Apache Doris Core: подготовка ветки, создание тега, подписание, загрузка в SVN и голосования Dev и IPMC."
+keywords:
+ - выпуск Apache Doris Core
+ - процесс выпуска Doris
+ - голосование Apache
+ - SVN dist
+ - подписание GPG
+ - кандидат на выпуск rc01
+ - менеджер выпуска
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск Apache Doris Core {#release-apache-doris-core}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Version release / Apache voting process -->
+
+Под Doris Core понимается код в репозитории [https://github.com/apache/doris](https://github.com/apache/doris). В этом документе описан полный процесс выпуска, которому следует менеджер выпуска: от подготовки и проверки ветки до создания пакетов, подписания и голосования сообщества.
+
+## Подготовка к выпуску {#prepare-for-release}
+
+Сначала обратитесь к документу [Подготовка к выпуску](./release-prepare), чтобы настроить среду для подписания, работы с SVN, Maven и другими инструментами.
+
+### 1. Подготовка ветки {#1-prepare-the-branch}
+
+Перед выпуском создайте новую ветку выпуска, например:
+
+```bash
+git checkout -b branch-0.9
+```
+
+После создания ветки проведите тщательное тестирование, чтобы проверить работоспособность функций, сократить число ошибок и исправить наиболее важные из них. В ходе этой работы следите за сообщениями сообщества, чтобы определить, какие необходимые исправления следует перенести в ветку выпуска с помощью cherry-pick.
+
+### 2. Закрытие и перенос задач {#2-clean-up-issues}
+
+Просмотрите все задачи, относящиеся к этому выпуску:
+
+- Закройте выполненные задачи.
+- Перенесите на более позднюю версию те задачи, которые нельзя завершить в этом выпуске.
+
+### 3. Включение необходимых исправлений {#3-merge-necessary-patches}
+
+В период подготовки к выпуску в код могут вноситься важные исправления. Если сообщество сообщает о важной ошибке, исправление которой нужно включить в выпуск, менеджер выпуска оценивает её и переносит соответствующее исправление в ветку выпуска.
+
+## Проверка ветки {#verify-the-branch}
+
+### 1. Тестирование стабильности {#1-stability-testing}
+
+Передайте ветку, отмеченную тегом, команде QA для тестирования стабильности. Если во время тестирования обнаружатся проблемы, требующие исправления, после подготовки соответствующих PR включите их в ветку выпуска.
+
+Переходить к подготовке официального выпуска можно только после того, как вся ветка станет стабильной.
+
+### 2. Проверка компиляции {#2-compilation-verification}
+
+Обратитесь к документации по сборке и выполните сборку, чтобы убедиться, что исходный код компилируется без ошибок.
+
+### 3. Подготовка примечаний к выпуску {#3-prepare-release-notes}
+
+Соберите сведения об основных функциях, исправлениях ошибок и изменениях совместимости в этом выпуске и подготовьте примечания к выпуску (обычно их публикуют в виде задачи GitHub).
+
+## Процедура голосования сообщества {#community-voting-process}
+
+### 1. Создание тега выпуска {#1-tag-the-release}
+
+Когда ветка станет достаточно стабильной, можно создать на ней тег.
+
+Перед созданием тега измените переменную `build_version` в `gensrc/script/gen_build_version.sh`, например задайте `build_version="0.10.0-release"`.
+
+```bash
+$ git checkout branch-0.9
+$ git tag -a 0.9.0-rc01 -m "0.9.0 release candidate 01"
+$ git push origin 0.9.0-rc01
+Counting objects: 1, done.
+Writing objects: 100% (1/1), 165 bytes | 0 bytes/s, done.
+Total 1 (delta 0), reused 0 (delta 0)
+To git@github.com:apache/doris.git
+ * [new tag] 0.9.0-rc01 -> 0.9.0-rc01
+
+$ git tag
+```
+
+### 2. Создание пакета, подписание и загрузка {#2-package-sign-and-upload}
+
+:::caution Примечание
+Для выполнения следующих действий необходимо войти в учётную запись пользователя напрямую через терминал, например SecureCRT. Не переключайтесь в неё через `su - user` или `ssh`, иначе поле ввода пароля не появится и возникнет ошибка.
+:::
+
+Создайте архив исходного кода, затем сформируйте подпись GPG и файл контрольной суммы SHA512:
+
+```bash
+$ git checkout 0.9.0-rc01
+
+$ git archive --format=tar 0.9.0-rc01 --prefix=apache-doris-0.9.0-incubating-src/ | gzip > apache-doris-0.9.0-incubating-src.tar.gz
+
+$ gpg -u xxx@apache.org --armor --output apache-doris-0.9.0-incubating-src.tar.gz.asc --detach-sign apache-doris-0.9.0-incubating-src.tar.gz
+
+$ gpg --verify apache-doris-0.9.0-incubating-src.tar.gz.asc apache-doris-0.9.0-incubating-src.tar.gz
+
+$ sha512sum apache-doris-0.9.0-incubating-src.tar.gz > apache-doris-0.9.0-incubating-src.tar.gz.sha512
+
+$ sha512sum --check apache-doris-0.9.0-incubating-src.tar.gz.sha512
+```
+
+| Файл | Назначение |
+| --- | --- |
+| `*-src.tar.gz` | Пакет исходного кода |
+| `*-src.tar.gz.asc` | Файл подписи GPG |
+| `*-src.tar.gz.sha512` | Файл контрольной суммы SHA512 |
+
+Загрузите репозиторий SVN Dev:
+
+```bash
+svn co https://dist.apache.org/repos/dist/dev/doris/
+```
+
+Разместите три файла в следующей структуре каталогов SVN:
+
+```text
+./doris/
+|-- 0.9.0-rc01
+| |-- apache-doris-0.9.0-incubating-src.tar.gz
+| |-- apache-doris-0.9.0-incubating-src.tar.gz.asc
+| `-- apache-doris-0.9.0-incubating-src.tar.gz.sha512
+`-- KEYS
+```
+
+Зафиксируйте изменения в SVN:
+
+```bash
+svn add 0.9.0-rc01
+svn commit -m "Add 0.9.0-rc1"
+```
+
+### 3. Начало голосования в списке рассылки Dev {#3-start-the-dev-mailing-list-vote}
+
+Начните голосование в списке рассылки `dev@doris.apache.org` с темой:
+
+> [VOTE] Выпуск Apache Doris 0.9.0-incubating-rc01
+
+Шаблон текста письма:
+
+```text
+Hi all,
+
+Please review and vote on Apache Doris 0.9.0-incubating-rc01 release.
+
+The release candidate has been tagged in GitHub as 0.9.0-rc01, available
+here:
+https://github.com/apache/incubator-doris/releases/tag/0.9.0-rc01
+
+Release Notes are here:
+https://github.com/apache/incubator-doris/issues/1891
+
+Thanks to everyone who has contributed to this release.
+
+The artifacts (source, signature and checksum) corresponding to this release
+candidate can be found here:
+https://dist.apache.org/repos/dist/dev/incubator/doris/0.9/0.9.0-rc1/
+
+This has been signed with PGP key 33DBF2E0, corresponding to
+lide@apache.org.
+KEYS file is available here:
+https://downloads.apache.org/incubator/doris/KEYS
+It is also listed here:
+https://people.apache.org/keys/committer/lide.asc
+
+To verify and build, you can refer to following link:
+http://doris.incubator.apache.org/community/release-and-verify/release-verify.html
+
+The vote will be open for at least 72 hours.
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because ...
+
+Best Regards,
+xxx
+
+----
+DISCLAIMER:
+Apache Doris (incubating) is an effort undergoing incubation at The
+Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted
+projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF
+projects.
+
+While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate
+that the project has yet to be fully endorsed by the ASF.
+```
+
+### 4. Отправка письма с результатами голосования Dev {#4-send-the-dev-vote-result-email}
+
+После одобрения выпуска по итогам голосования отправьте письмо с результатами с темой:
+
+> [Result][VOTE] Выпуск Apache Doris 0.9.0-incubating-rc01
+
+Шаблон текста письма:
+
+```text
+Thanks to everyone, and this vote is now closed.
+
+It has passed with 4 +1 (binding) votes and no 0 or -1 votes.
+
+Binding:
++1 Zhao Chun
++1 xxx
++1 Li Chaoyong
++1 Mingyu Chen
+
+Best Regards,
+xxx
+```
+
+### 5. Начало голосования IPMC {#5-start-the-ipmc-vote}
+
+:::tip Совет
+Если проект не находится на стадии инкубации, пропустите этот и следующий разделы.
+:::
+
+Начните голосование IPMC в списке рассылки `general@incubator.apache.org` с темой:
+
+> [VOTE] Выпуск Apache Doris 0.9.0-incubating-rc01
+
+Шаблон текста письма:
+
+```text
+Hi all,
+
+Please review and vote on Apache Doris 0.9.0-incubating-rc01 release.
+
+Apache Doris is an MPP-based interactive SQL data warehousing for reporting and analysis.
+
+The Apache Doris community has voted on and approved this release:
+https://lists.apache.org/thread.html/d70f7c8a8ae448bf6680a15914646005c6483564464cfa15f4ddc2fc@%3Cdev.doris.apache.org%3E
+
+The vote result email thread:
+https://lists.apache.org/thread.html/64d229f0ba15d66adc83306bc8d7b7ccd5910ecb7e842718ce6a61da@%3Cdev.doris.apache.org%3E
+
+The release candidate has been tagged in GitHub as 0.9.0-rc01, available here:
+https://github.com/apache/doris/releases/tag/0.9.0-rc01
+
+There is no CHANGE LOG file because this is the first release of Apache Doris.
+Thanks to everyone who has contributed to this release, and there is a simple release notes can be found here:
+https://github.com/apache/doris/issues/406
+
+The artifacts (source, signature and checksum) corresponding to this release candidate can be found here:
+https://dist.apache.org/repos/dist/dev/incubator/doris/0.9/0.9.0-rc01/
+
+This has been signed with PGP key 33DBF2E0, corresponding to lide@apache.org.
+KEYS file is available here:
+https://downloads.apache.org/doris/KEYS
+It is also listed here:
+https://people.apache.org/keys/committer/lide.asc
+
+The vote will be open for at least 72 hours.
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because ...
+
+To verify and build, you can refer to following instruction:
+
+Firstly, you must be install and start docker service, and then you could build Doris as following steps:
+
+Step1: Pull the docker image with Doris building environment
+$ docker pull apache/doris:build-env-1.3.1
+You can check it by listing images, its size is about 3.28GB.
+
+Step2: Run the Docker image
+You can run image directly:
+$ docker run -it apache/doris:build-env-1.3.1
+
+Step3: Download Doris source
+Now you should in docker environment, and you can download Doris source package.
+(If you have downloaded source and it is not in image, you can map its path to image in Step2.)
+$ wget https://dist.apache.org/repos/dist/dev/doris/0.9/0.9.0-rc01/apache-doris-0.9.0.rc01-incubating-src.tar.gz
+
+Step4: Build Doris
+Now you can decompress and enter Doris source path and build Doris.
+$ tar zxvf apache-doris-0.9.0.rc01-incubating-src.tar.gz
+$ cd apache-doris-0.9.0.rc01-incubating-src
+$ sh build.sh
+
+Best Regards,
+xxx
+
+----
+DISCLAIMER:
+Apache Doris (incubating) is an effort undergoing incubation at The
+Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted
+projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF
+projects.
+
+While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate
+that the project has yet to be fully endorsed by the ASF.
+```
+
+Ссылку на цепочку писем можно найти здесь:
+
+```text
+https://lists.apache.org/list.html?dev@doris.apache.org
+```
+
+### 6. Отправка письма с результатами голосования IPMC {#6-send-the-ipmc-vote-result-email}
+
+:::tip Совет
+Если проект не находится на стадии инкубации, пропустите этот раздел.
+:::
+
+Отправьте письмо с результатами на `general@incubator.apache.org` с темой:
+
+> [RESULT][VOTE] Выпуск Apache Doris 0.9.0-incubating-rc01
+
+Шаблон текста письма:
+
+```text
+Hi,
+
+Thanks to everyone, and the vote for releasing Apache Doris 0.9.0-incubating-rc01 is now closed.
+
+It has passed with 4 +1 (binding) votes and no 0 or -1 votes.
+
+Binding:
++1 Willem Jiang
++1 Justin Mclean
++1 ShaoFeng Shi
++1 Makoto Yui
+
+The vote thread:
+https://lists.apache.org/thread.html/da05fdd8d84e35de527f27200b5690d7811a1e97d419d1ea66562130@%3Cgeneral.incubator.apache.org%3E
+
+Best Regards,
+xxx
+```
+
+## Завершение выпуска {#complete-the-release}
+
+Обратитесь к документу [Завершение выпуска](./release-complete), чтобы выполнить все оставшиеся шаги выпуска.
+
+## Часто задаваемые вопросы / устранение неполадок {#faq--troubleshooting}
+
+**Вопрос: при выполнении `gpg --verify` появляется сообщение `gpg: Can't check signature: No public key`?**
+
+На локальном компьютере отсутствует соответствующий открытый ключ. Выполните `gpg --keyserver https://keyserver.ubuntu.com/ --recv-keys <KEY_ID>` для получения открытого ключа, затем повторите попытку.
+
+**Вопрос: при выполнении `svn commit` появляется сообщение `Authentication failed`?**
+
+Проверьте, правильно ли заданы переменные окружения `$ASF_USERNAME` и `$ASF_PASSWORD`. В качестве пароля используется пароль Apache LDAP.
+
+**Вопрос: можно ли завершить голосование досрочно, если с его начала прошло менее 72 часов?**
+
+Нет. Правила Apache требуют, чтобы голосование по выпуску оставалось открытым не менее 72 часов, поэтому необходимо дождаться окончания этого срока.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-manager.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-manager.md
new file mode 100644
index 000000000000..b2259fade8cf
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-manager.md
@@ -0,0 +1,378 @@
+---
+title: Выпуск Doris Manager
+language: ru
+description: "Процесс выпуска Apache Doris Manager: управление ветками, создание тегов, упаковка и подписание, загрузка в SVN, голосование сообщества и голосование IPMC."
+keywords:
+ - Apache Doris
+ - Doris Manager
+ - Процесс выпуска
+ - Голосование сообщества
+ - Голосование IPMC
+ - Подписание с помощью GPG
+ - Загрузка в SVN
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск Doris Manager {#release-doris-manager}
+
+<!-- Knowledge type: Operational steps -->
+<!-- Applicable scenario: Apache release process / Doris Manager release -->
+
+Кодовая база Doris Manager поддерживается отдельно от основной кодовой базы Doris, в репозитории [apache/doris-manager](https://github.com/apache/doris-manager). В этом документе описан полный процесс выпуска Doris Manager.
+
+## Обзор процесса выпуска {#release-process-overview}
+
+| Этап | Шаг | Цель |
+|------|------|------|
+| Подготовка | 1. Подготовка к выпуску | Подготовить ключи GPG, доступ к SVN и выполнить другие предварительные требования |
+| Подготовка | 2. Подготовка ветки | Создать ветку выпуска и обеспечить стабильную работу функций |
+| Подготовка | 3. Проверка задач | Закрыть завершённые задачи и отложить незавершённые |
+| Подготовка | 4. Включение необходимых патчей | Оценить и включить важные патчи |
+| Проверка | 5. Проверка ветки | Проверить стабильность и сборку |
+| Голосование | 6. Создание тега, упаковка, подписание и загрузка | Подготовить пакет RC и загрузить его в SVN |
+| Голосование | 7. Голосование в dev@doris | Провести голосование сообщества |
+| Голосование | 8. Голосование IPMC | Провести голосование Incubator PMC |
+| Завершение | 9. Завершение выпуска | Архивировать, опубликовать и объявить о выпуске |
+
+## 1. Подготовка к выпуску {#1-prepare-for-release}
+
+Выполните предварительные действия, описанные в документе [Подготовка к выпуску](./release-prepare).
+
+## 2. Подготовка ветки {#2-prepare-the-branch}
+
+Перед выпуском создайте новую ветку:
+
+```shell
+git checkout -b branch-1.0.0
+```
+
+После создания ветки проведите тщательное тестирование и убедитесь, что:
+
+- Функции работают должным образом.
+- Количество ошибок сокращается.
+- Все существенные ошибки исправлены.
+
+Во время тестирования дождитесь отзывов сообщества, чтобы определить, нужно ли включить необходимые патчи. Если нужно, перенесите их в ветку выпуска с помощью cherry-pick.
+
+## 3. Проверка задач {#3-clean-up-issues}
+
+Просмотрите все задачи, относящиеся к этому выпуску:
+
+- Закройте завершённые задачи.
+- Перенесите задачи, которые не удаётся завершить, на более поздний выпуск.
+
+## 4. Включение необходимых патчей {#4-merge-required-patches}
+
+В ожидании выпуска может потребоваться включить важные патчи. Если сообщество сообщает о существенной ошибке, исправление которой должно войти в выпуск, ответственный за выпуск оценивает исправление и включает патч в ветку выпуска.
+
+## 5. Проверка ветки {#5-verify-the-branch}
+
+### 5.1 Тестирование стабильности {#51-stability-testing}
+
+Передайте подготовленную ветку команде QA для тестирования стабильности. Если во время тестирования обнаружатся проблемы, требующие исправления, включите соответствующие PR в ветку выпуска, как только они будут готовы.
+
+Переходите к выпуску только после того, как вся ветка станет стабильной.
+
+### 5.2 Проверка сборки {#52-build-verification}
+
+Следуя документации по сборке, выполните сборку из исходного кода и убедитесь, что он компилируется без ошибок.
+
+## 6. Голосование сообщества по выпуску {#6-community-release-vote-process}
+
+### 6.1 Создание тега {#61-create-the-tag}
+
+Когда ветка станет стабильной, создайте на ней тег. Например:
+
+```shell
+git checkout branch-1.0.0
+git tag -a 1.0.0-rc01 -m "doris manager 1.0.0 release candidate 01"
+git push origin 1.0.0-rc01
+```
+
+Ожидаемый вывод:
+
+```text
+Counting objects: 1, done.
+Writing objects: 100% (1/1), 165 bytes | 0 bytes/s, done.
+Total 1 (delta 0), reused 0 (delta 0)
+To git@github.com:apache/doris-manager.git
+ * [new tag] 1.0.0-rc01 -> 1.0.0-rc01
+```
+
+Выполните `git tag`, чтобы вывести список локальных тегов.
+
+### 6.2 Упаковка, подписание и загрузка {#62-package-sign-and-upload}
+
+Для выполнения следующих шагов необходимо войти непосредственно под нужной учётной записью через терминал, например SecureCRT. **Не переключайтесь на неё с помощью `su - user` или `ssh`**, иначе запрос пароля может не отображаться и команда завершится с ошибкой.
+
+#### 6.2.1 Упаковка и подписание {#621-package-and-sign}
+
+```shell
+git archive --format=tar 1.0.0-rc01 --prefix=apache-doris-incubating-manager-src-1.0.0-rc01/ | gzip > apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+
+gpg -u xxx@apache.org --armor --output apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.asc --detach-sign apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+
+gpg --verify apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.asc apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+
+sha512sum apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz > apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.sha512
+
+sha512sum --check apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.sha512
+```
+
+#### 6.2.2 Загрузка в SVN {#622-upload-to-svn}
+
+Получите рабочую копию репозитория SVN:
+
+```shell
+svn co https://dist.apache.org/repos/dist/dev/doris/
+```
+
+Разместите созданные выше файлы в SVN по следующему пути:
+
+```text
+./doris/
+├── doris-manager
+│ └── 1.0.0
+│ ├── apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+│ ├── apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.asc
+│ └── apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz.sha512
+```
+
+Загрузите эти файлы:
+
+```shell
+svn add 1.0.0-rc01
+svn commit -m "Add doris manager 1.0.0-rc01"
+```
+
+### 6.3 Отправка письма для голосования на dev@doris.apache.org {#63-send-a-vote-email-to-devdorisapacheorg}
+
+Тема письма:
+
+```text
+[VOTE] Release Apache Doris Manager 1.0.0-incubating-rc01
+```
+
+Шаблон текста письма:
+
+```text
+Hi All,
+
+This is a call for vote to release Doris Manager v1.0.0 for Apache Doris(Incubating).
+
+- apache-doris-incubating-manager-src-1.0.0-rc01
+
+The release node:
+
+
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/doris/doris-manager/1.0.0/
+
+Keys to verify the Release Candidate:
+https://downloads.apache.org/doris/KEYS
+
+Look at here for how to verify this release candidate:
+http://doris.apache.org/community/release-and-verify/release-verify.html
+
+Vote thread at dev@doris: [1]
+
+The vote will be open for at least 72 hours or until necessary number of votes are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+[ ] +0 no opinion
+[ ] -1 disapprove with the reason
+
+[1] vote thread in dev@doris
+
+
+Brs,
+xxxx
+------------------
+DISCLAIMER:
+Apache Doris (incubating) is an effort undergoing incubation at The
+Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted
+projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF
+projects.
+
+While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate
+that the project has yet to be fully endorsed by the ASF.
+```
+
+### 6.4 Отправка письма с результатами после успешного голосования {#64-after-the-vote-passes-send-a-result-email}
+
+Тема письма:
+
+```text
+[Result][VOTE] Release Apache Doris Manager 1.0.0-incubating-rc01
+```
+
+Шаблон текста письма:
+
+```text
+Thanks to everyone, and this vote is now closed.
+
+It has passed with 4 +1 (binding) votes and no 0 or -1 votes.
+
+Binding:
++1 jiafeng Zhang
++1 xxx
++1 EmmyMiao87
++1 Mingyu Chen
+
+Best Regards,
+xxx
+```
+
+## 7. Голосование IPMC {#7-ipmc-vote}
+
+После успешного голосования в списке рассылки dev отправьте письмо в список рассылки `general@incubator.apache.org`, чтобы начать голосование IPMC.
+
+Шаблон текста письма:
+
+```text
+Hi all,
+
+Please review and vote on Apache Doris Manager 1.0.0-incubating-rc01 release.
+
+Doris manager is a platform for automatic installation, deployment and management of Doris groups
+
+The Apache Doris community has voted on and approved this release:
+https://lists.apache.org/thread.html/d70f7c8a8ae448bf6680a15914646005c6483564464cfa15f4ddc2fc@%3Cdev.doris.apache.org%3E
+
+The vote result email thread:
+https://lists.apache.org/thread.html/64d229f0ba15d66adc83306bc8d7b7ccd5910ecb7e842718ce6a61da@%3Cdev.doris.apache.org%3E
+
+The release candidate has been tagged in GitHub as 1.0.0-rc01, available here:
+https://github.com/apache/doris-manager/releases/tag/1.0.0-rc01
+
+There is no CHANGE LOG file because this is the first release of Apache Doris.
+Thanks to everyone who has contributed to this release, and there is a simple release notes can be found here:
+https://github.com/apache/doris/issues/406
+
+The artifacts (source, signature and checksum) corresponding to this release candidate can be found here:
+https://dist.apache.org/repos/dist/dev/doris/doris-manager/1.0.0/
+
+This has been signed with PGP key 33DBF2E0, corresponding to lide@apache.org.
+KEYS file is available here:
+https://downloads.apache.org/doris/KEYS
+It is also listed here:
+https://people.apache.org/keys/committer/lide.asc
+
+The vote will be open for at least 72 hours.
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because ...
+
+To verify and build, you can refer to following instruction:
+
+Firstly, you must be install and start docker service, and then you could build Doris as following steps:
+
+$ wget https://dist.apache.org/repos/dist/dev/doris/doris-manager/1.0.0/apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+
+Step4: Build Doris
+Now you can decompress and enter Doris source path and build Doris.
+$ tar zxvf apache-doris-incubating-manager-src-1.0.0-rc01.tar.gz
+$ cd apache-doris-incubating-manager-src-1.0.0-rc01
+$ sh build.sh
+
+Best Regards,
+xxx
+
+----
+DISCLAIMER:
+Apache Doris (incubating) is an effort undergoing incubation at The
+Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.
+
+Incubation is required of all newly accepted
+projects until a further review indicates that the
+infrastructure, communications, and decision making process have
+stabilized in a manner consistent with other successful ASF
+projects.
+
+While incubation status is not necessarily a reflection
+of the completeness or stability of the code, it does indicate
+that the project has yet to be fully endorsed by the ASF.
+```
+
+Найдите ссылку на обсуждение в архиве списка рассылки:
+
+```text
+https://lists.apache.org/list.html?dev@doris.apache.org
+```
+
+### 7.1 Отправка письма с результатами на general@incubator.apache.org {#71-send-the-result-email-to-generalincubatorapacheorg}
+
+Тема письма:
+
+```text
+[RESULT][VOTE] Release Apache Doris Manager 1.0.0-incubating-rc01
+```
+
+Шаблон текста письма:
+
+```text
+Hi,
+
+Thanks to everyone, and the vote for releasing Apache Doris Manager 1.0.0-incubating-rc01 is now closed.
+
+It has passed with 4 +1 (binding) votes and no 0 or -1 votes.
+
+Binding:
++1 Willem Jiang
++1 Justin Mclean
++1 ShaoFeng Shi
++1 Makoto Yui
+
+The vote thread:
+https://lists.apache.org/thread.html/da05fdd8d84e35de527f27200b5690d7811a1e97d419d1ea66562130@%3Cgeneral.incubator.apache.org%3E
+
+Best Regards,
+xxx
+```
+
+## 8. Завершение выпуска {#8-complete-the-release}
+
+Выполните все заключительные действия, описанные в документе [Завершение выпуска](./release-complete).
+
+## Часто задаваемые вопросы {#faq}
+
+### Вопрос 1: Почему упаковку и подписание нельзя выполнить через `ssh` или `su - user`? {#q1-why-can-the-packaging-and-signing-step-not-be-done-through-ssh-or-su---user}
+
+Терминал, в который вошли через `ssh` или `su -`, не может корректно отобразить запрос пароля GPG, из-за чего команда подписания завершается с ошибкой. Войдите непосредственно под нужной учётной записью через терминал, например SecureCRT.
+
+### Вопрос 2: `gpg --verify` сообщает об ошибке `gpg verify failed` или `BAD signature` {#q2-gpg---verify-reports-gpg-verify-failed-or-bad-signature}
+
+Возможные причины:
+
+- Открытый ключ не импортирован: сначала выполните `gpg --import KEYS`.
+- Файл подписи не соответствует архиву с исходным кодом: убедитесь, что файлы `.asc` и `.tar.gz` относятся к одной и той же сборке.
+
+### Вопрос 3: `sha512sum --check` сообщает об ошибке `shasum mismatch` {#q3-sha512sum---check-reports-shasum-mismatch}
+
+Архив с исходным кодом мог быть повреждён или перезаписан при передаче. Скачайте архив заново либо повторно создайте файл контрольной суммы `.sha512` и выполните проверку ещё раз.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-sdk.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-sdk.md
new file mode 100644
index 000000000000..ee018cab09c9
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-sdk.md
@@ -0,0 +1,262 @@
+---
+title: Выпуск Doris SDK
+language: ru
+description: "Процесс выпуска Apache Doris SDK: этапы prepare/perform Maven Release, загрузка в SVN и голосование сообщества."
+keywords:
+ - Apache Doris
+ - Doris SDK
+ - Процесс выпуска
+ - Maven Release
+ - Загрузка в SVN
+ - Голосование сообщества
+ - Подпись GPG
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск Doris SDK {#release-doris-sdk}
+
+<!-- Knowledge type: Operating procedure -->
+<!-- Applies to: Apache release process / SDK release -->
+
+Исходный код Doris SDK хранится отдельно от основного репозитория Doris в репозитории [apache/doris-sdk](https://github.com/apache/doris-sdk). В этом документе на примере выпуска `Doris SDK v1.0.0` рассматривается весь процесс от публикации в Maven Staging до голосования сообщества.
+
+## Обзор процесса выпуска {#release-process-overview}
+
+| Этап | Цель | Основные артефакты |
+|------|---------|---------------|
+| 1. Подготовка к выпуску | Выполнить предварительные требования для выпуска (KEYS, учётные записи, окружение и т. д.) | Ключ GPG, учётная запись Apache |
+| 2. Подготовка ветки | Создать ветку релиза в репозитории | Ветка `1.0.0-release` |
+| 3. Публикация в Maven Staging | Создать тег релиза и опубликовать артефакты в Apache Maven Staging | Тег, репозиторий Staging |
+| 4. Подготовка SVN | Загрузить пакет исходного кода, подпись и файлы контрольных сумм в SVN | tar.gz / .asc / .sha512 |
+| 5. Начало голосования | Начать голосование в списке рассылки dev@doris | Письмо с объявлением голосования |
+| 6. Завершение выпуска | Архивировать релиз и объявить о нём после успешного голосования | Пакет релиза |
+
+## 1. Подготовка к выпуску {#1-prepare-for-release}
+
+Выполните предварительные требования для выпуска, описанные в документе [Подготовка к выпуску](./release-prepare).
+
+## 2. Публикация в Maven {#2-publish-to-maven}
+
+### 2.1 Подготовка ветки {#21-prepare-the-branch}
+
+Создайте в репозитории ветку `1.0.0-release` и переключитесь на неё:
+
+```shell
+git checkout -b 1.0.0-release
+```
+
+### 2.2 Публикация в Maven Staging {#22-publish-to-maven-staging}
+
+Выполните следующие команды, чтобы создать тег релиза:
+
+```shell
+mvn release:clean
+mvn release:prepare -DpushChanges=false
+```
+
+Здесь `-DpushChanges=false` означает, что созданные ветка и тег не отправляются в репозиторий во время выполнения команды.
+
+После запуска `mvn release:prepare` нужно последовательно указать следующие три значения:
+
+| Вводимые данные | Описание | Пример |
+|-------|-------------|---------|
+| Версия Doris SDK | Выпускаемая версия в формате `{sdk.version}` | `1.0.0` |
+| Имя тега релиза | Имя тега, создаваемого локально | `1.0.0` |
+| Следующая версия | Используется только для создания локальной ветки; практического значения не имеет | `1.0.1-SNAPSHOT` |
+
+**Распространённые проблемы:**
+
+- `mvn release:prepare` может запросить парольную фразу GPG.
+- Если появляется ошибка `gpg: no valid OpenPGP data found`, выполните следующую команду и повторите попытку:
+
+ ```shell
+ export GPG_TTY=$(tty)
+ ```
+
+После успешного выполнения `mvn release:prepare` локально создаются тег и ветка, а в текущую ветку добавляются два коммита:
+
+1. Первый коммит соответствует созданному тегу.
+2. Второй коммит соответствует ветке следующей версии.
+
+Проверить это можно с помощью `git log`.
+
+Убедившись, что локальный тег корректен, отправьте его в репозиторий:
+
+```shell
+git push upstream --tags
+```
+
+Здесь `upstream` указывает на репозиторий `apache/doris-sdk`.
+
+Наконец, выполните команду perform, чтобы опубликовать артефакты сборки в Maven Staging:
+
+```shell
+mvn release:perform
+```
+
+После успешного выполнения команды опубликованную версию можно найти в [репозиториях Apache Maven Staging](https://repository.apache.org/#stagingRepositories):
+
+
+
+**Примечание: опубликованные артефакты должны включать файл подписи `.asc`.**
+
+Если что-то пошло не так, выполните откат в следующем порядке:
+
+1. Удалите локальный тег.
+2. Удалите тег в репозитории.
+3. Удалите два созданных локальных коммита.
+4. Выполните `drop` для промежуточного релиза на странице Staging Repository.
+5. Повторите описанные выше действия.
+
+После проверки нажмите кнопку `close` на странице, чтобы завершить публикацию в Staging.
+
+### 2.3 Подготовка SVN {#23-prepare-svn}
+
+#### 2.3.1 Получение рабочей копии репозитория SVN {#231-check-out-the-svn-repository}
+
+```shell
+svn co https://dist.apache.org/repos/dist/dev/doris/
+```
+
+#### 2.3.2 Упаковка исходного кода из тега и создание подписи {#232-package-the-tag-source-and-generate-the-signature}
+
+В качестве примера используется `1.0.0`; для других тегов действия аналогичны:
+
+```shell
+git archive --format=tar 1.14_2.12-1.0.0 --prefix=apache-doris-sdk-1.0.0-src/ | gzip > apache-doris-sdk-1.0.0-src.tar.gz
+gpg -u xxx@apache.org --armor --output apache-doris-sdk-1.0.0-src.tar.gz.asc --detach-sign apache-doris-sdk-1.0.0-src.tar.gz
+sha512sum apache-doris-sdk-1.14_2.12-1.0.0-src.tar.gz > apache-doris-sdk-1.0.0-src.tar.gz.sha512
+```
+
+В macOS используйте `shasum` вместо `sha512sum`:
+
+```shell
+shasum -a 512 apache-doris-sdk-1.0.0-src.tar.gz > apache-doris-sdk-1.0.0-src.tar.gz.sha512
+```
+
+В результате вы получите три файла:
+
+```text
+apache-doris-sdk-1.0.0-src.tar.gz
+apache-doris-sdk-1.0.0-src.tar.gz.asc
+apache-doris-sdk-1.0.0-src.tar.gz.sha512
+```
+
+#### 2.3.3 Загрузка в SVN {#233-upload-to-svn}
+
+Переместите эти три файла в каталог SVN `doris/doris-sdk/1.0.0/`. Итоговая структура каталогов SVN будет выглядеть так:
+
+```text
+├── 1.2.3-rc01
+│ ├── apache-doris-1.2.3-src.tar.gz
+│ ├── apache-doris-1.2.3-src.tar.gz.asc
+│ ├── apache-doris-1.2.3-src.tar.gz.sha512
+...
+├── KEYS
+├── doris-sdk
+│ └── 1.0.0
+│ ├── apache-doris-sdk-1.0.0-src.tar.gz
+│ ├── apache-doris-sdk-1.0.0-src.tar.gz.asc
+│ └── apache-doris-sdk-1.0.0-src.tar.gz.sha512
+```
+
+Каталог `1.2.3-rc01` относится к основному репозиторию Doris, а в `doris-sdk/1.0.0` находятся файлы этого релиза.
+
+Инструкции по подготовке файла KEYS приведены в документе [Подготовка к выпуску](./release-prepare).
+
+### 2.4 Голосование {#24-vote}
+
+Начните голосование в списке рассылки `dev@doris.apache.org`. Используйте следующий шаблон письма:
+
+```text
+Hi All,
+
+This is a call for the vote to release Apache Doris-SDK 1.0.0
+
+The git tag for the release:
+https://github.com/apache/doris-sdk/releases/tag/1.0.0
+
+Release Notes are here:
+https://github.com/apache/doris-sdk/blob/1.0.0/CHANGE-LOG.txt
+
+Thanks to everyone who has contributed to this release.
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/doris/doris-sdk/1.0.0/
+
+KEYS file is available here:
+https://downloads.apache.org/doris/KEYS
+
+To verify and build, you can refer to following link:
+https://doris.apache.org/community/release-and-verify/release-verify
+
+The vote will be open for at least 72 hours.
+
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because …
+```
+
+## 3. Завершение выпуска {#3-complete-the-release}
+
+После успешного голосования выполните все оставшиеся действия по выпуску, описанные в документе [Завершение выпуска](./release-complete).
+
+## Приложение: публикация в SNAPSHOT {#appendix-publishing-to-snapshot}
+
+Snapshot не является релизной версией Apache и используется только для предварительного ознакомления перед выпуском. Опубликовать версию Snapshot можно после её обсуждения и одобрения со стороны PMC.
+
+Перейдите в каталог Doris SDK и выполните:
+
+```shell
+mvn deploy
+```
+
+После этого версию Snapshot можно найти по адресу:
+
+```text
+https://repository.apache.org/content/repositories/snapshots/org/apache/doris/doris-sdk/
+```
+
+## Часто задаваемые вопросы {#faq}
+
+### Q1: `mvn release:prepare` завершается ошибкой `gpg: no valid OpenPGP data found` {#q1-mvn-releaseprepare-fails-with-gpg-no-valid-openpgp-data-found}
+
+GPG не привязан к текущему терминалу. Выполните `export GPG_TTY=$(tty)` и повторите попытку.
+
+### Q2: Шаг `close` на этапе Staging завершается ошибкой `No public key` {#q2-the-close-step-in-the-staging-phase-fails-with-no-public-key}
+
+Открытый ключ GPG не загружен на сервер ключей. Выполните следующую команду, чтобы отправить открытый ключ на общедоступный сервер ключей:
+
+```shell
+gpg --keyserver hkp://keyserver.ubuntu.com --send-keys <KEY_ID>
+```
+
+Узнать `<KEY_ID>` можно с помощью `gpg -k`.
+
+### Q3: Я допустил ошибку. Как выполнить откат? {#q3-i-made-a-mistake-how-do-i-roll-back}
+
+Выполните следующие действия по порядку:
+
+1. Удалите локальный тег: `git tag -d <tag>`.
+2. Удалите удалённый тег: `git push upstream --delete <tag>`.
+3. Откатите два локальных коммита релиза.
+4. Выполните `drop` для промежуточного релиза на странице Staging Repositories.
+5. Снова выполните `mvn release:prepare` и `mvn release:perform`.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-shade.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-shade.md
new file mode 100644
index 000000000000..ab11ca9f6e70
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-doris-shade.md
@@ -0,0 +1,239 @@
+---
+title: Выпуск Apache Doris Shade
+language: ru
+description: "Процесс выпуска Apache Doris Shade: подготовка и публикация релиза с помощью Maven, загрузка в SVN и голосование сообщества."
+keywords:
+ - выпуск Apache Doris Shade
+ - подготовка релиза Maven
+ - публикация релиза Maven
+ - голосование Apache
+ - Maven Staging
+ - SVN dist
+ - менеджер релиза
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Выпуск Apache Doris Shade {#release-apache-doris-shade}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Version release / Apache vote process -->
+
+Репозиторий Doris Shade независим от основного репозитория Doris и расположен по адресу:
+
+- [https://github.com/apache/doris-Shade](https://github.com/apache/doris-Shade)
+
+В этом документе на примере выпуска Doris Shade v1.0.0 описан полный процесс выпуска компонентов типа Shade, включая использование плагина Maven release, подготовку SVN и голосование сообщества.
+
+## Подготовка к выпуску {#prepare-for-release}
+
+Сначала настройте окружение для подписания, SVN и Maven, следуя документу [Подготовка к выпуску](./release-prepare).
+
+## Публикация в Maven {#release-to-maven}
+
+### 1. Подготовка ветки {#1-prepare-the-branch}
+
+Создайте в репозитории ветку `1.0.0-release` и переключитесь на неё.
+
+### 2. Публикация в Maven Staging {#2-release-to-maven-staging}
+
+Запустите плагин Maven release, чтобы создать тег релиза:
+
+```shell
+mvn release:clean
+mvn release:prepare -DpushChanges=false
+```
+
+`-DpushChanges=false` означает, что созданные ветка и тег **не** отправляются в репозиторий автоматически во время выполнения.
+
+В ходе выполнения `release:prepare` запрашивает три значения:
+
+| Запрашиваемое значение | Рекомендуемое значение | Пример |
+| --- | --- | --- |
+| Версия Doris Shade | Используйте значение по умолчанию в формате `{shade.version}` | `1.0.0` |
+| Имя тега релиза | Используйте имя тега по умолчанию | `1.0.0` |
+| Следующая версия | Используется для локальной ветки, практического значения не имеет | `1.0.1-SNAPSHOT` |
+
+В ходе выполнения может потребоваться ввести парольную фразу GPG. Если появится сообщение `gpg: no valid OpenPGP data found`, сначала выполните `export GPG_TTY=$(tty)` и повторите попытку.
+
+После успешного выполнения `mvn release:prepare` локально создаются тег и ветка, а в текущую ветку добавляются два новых коммита:
+
+1. Первый коммит соответствует созданному тегу.
+2. Второй коммит соответствует ветке для следующей версии.
+
+Проверить это можно с помощью `git log`.
+
+Убедившись, что локальный тег корректен, отправьте его в репозиторий:
+
+```bash
+git push upstream --tags
+```
+
+Здесь `upstream` указывает на репозиторий `apache/doris-shade`.
+
+Наконец, выполните release:perform:
+
+```bash
+mvn release:perform
+```
+
+После успешного выполнения опубликованная версия появится по адресу [https://repository.apache.org/#stagingRepositories](https://repository.apache.org/#stagingRepositories):
+
+
+
+:::caution Примечание
+Убедитесь, что среди артефактов есть файл подписи `.asc`.
+:::
+
+Если что-то пошло не так, необходимо:
+
+1. Удалить локальный тег.
+2. Удалить тег в репозитории.
+3. Удалить два новых локальных коммита.
+4. Удалить репозиторий Staging.
+5. Повторить описанные выше шаги.
+
+Убедившись, что всё корректно, нажмите кнопку `close`, чтобы завершить публикацию в Staging.
+
+### 3. Подготовка SVN {#3-prepare-svn}
+
+Получите рабочую копию репозитория Dev SVN:
+
+```bash
+svn co https://dist.apache.org/repos/dist/dev/doris/
+```
+
+Упакуйте исходный код из тега и создайте файл подписи и файл контрольной суммы SHA512 (в следующем примере используется `1.0.0`):
+
+```bash
+git archive --format=tar 1.14_2.12-1.0.0 --prefix=apache-doris-shade-1.0.0-src/ | gzip > apache-doris-shade-1.0.0-src.tar.gz
+gpg -u xxx@apache.org --armor --output apache-doris-shade-1.0.0-src.tar.gz.asc --detach-sign apache-doris-shade-1.0.0-src.tar.gz
+sha512sum apache-doris-shade-1.14_2.12-1.0.0-src.tar.gz > apache-doris-shade-1.0.0-src.tar.gz.sha512
+```
+
+В macOS используйте:
+
+```bash
+shasum -a 512 apache-doris-shade-1.0.0-src.tar.gz > apache-doris-shade-1.0.0-src.tar.gz.sha512
+```
+
+В результате вы получите три файла:
+
+| Файл | Назначение |
+| --- | --- |
+| `apache-doris-shade-1.0.0-src.tar.gz` | Архив исходного кода |
+| `apache-doris-shade-1.0.0-src.tar.gz.asc` | Файл подписи GPG |
+| `apache-doris-shade-1.0.0-src.tar.gz.sha512` | Файл контрольной суммы SHA512 |
+
+Переместите эти три файла в каталог SVN:
+
+```text
+doris/doris-shade/1.0.0/
+```
+
+Пример полной структуры каталогов SVN:
+
+```text
+├── 1.2.3-rc01
+│ ├── apache-doris-1.2.3-src.tar.gz
+│ ├── apache-doris-1.2.3-src.tar.gz.asc
+│ ├── apache-doris-1.2.3-src.tar.gz.sha512
+...
+├── KEYS
+├── doris-shade
+│ └── 1.0.0
+│ ├── apache-doris-shade-1.0.0-src.tar.gz
+│ ├── apache-doris-shade-1.0.0-src.tar.gz.asc
+│ └── apache-doris-shade-1.0.0-src.tar.gz.sha512
+```
+
+Здесь `1.2.3-rc01` является каталогом основного релиза Doris, а `doris-shade/1.0.0` содержит файлы этого релиза.
+
+> О подготовке файла KEYS см. соответствующий раздел документа [Подготовка к выпуску](./release-prepare).
+
+### 4. Голосование {#4-vote}
+
+Начните голосование в списке рассылки `dev@doris.apache.org`. Используйте следующий шаблон:
+
+```text
+Hi all,
+
+This is a call for the vote to release Apache Doris-Shade 1.0.0
+
+The git tag for the release:
+https://github.com/apache/doris-shade/releases/tag/doris-shade-1.0.0
+
+Release Notes are here:
+https://github.com/apache/doris-shade/blob/doris-shade-1.0.0/CHANGE-LOG.txt
+
+Thanks to everyone who has contributed to this release.
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/doris/doris-shade/
+
+KEYS file is available here:
+https://downloads.apache.org/doris/KEYS
+
+To verify and build, you can refer to following link:
+https://doris.apache.org/community/release-and-verify/release-verify
+
+The vote will be open for at least 72 hours.
+
+[ ] +1 Approve the release
+[ ] +0 No opinion
+[ ] -1 Do not release this package because ...
+```
+
+## Завершение выпуска {#complete-the-release}
+
+Чтобы завершить весь процесс выпуска, следуйте документу [Завершение выпуска](./release-complete).
+
+## Приложение: публикация в SNAPSHOT {#appendix-release-to-snapshot}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Pre-release preview -->
+
+Snapshot не является релизом Apache. Он используется только для предварительного ознакомления перед выпуском. Публиковать версию Snapshot можно только после обсуждения и одобрения PMC.
+
+Перейдите в каталог doris-shade:
+
+```bash
+mvn deploy
+```
+
+После этого версию snapshot можно найти по следующему адресу:
+
+```text
+https://repository.apache.org/content/repositories/snapshots/org/apache/doris/doris-shade/
+```
+
+## Частые вопросы и устранение неполадок {#faq--troubleshooting}
+
+**Вопрос: при выполнении `mvn release:prepare` появляется сообщение `gpg: no valid OpenPGP data found`?**
+
+Терминал не может принять парольную фразу GPG. Выполните `export GPG_TTY=$(tty)` и повторите попытку.
+
+**Вопрос: как полностью отменить изменения после сбоя `mvn release:perform`?**
+
+Выполните следующие действия по порядку: удалите локальный тег (`git tag -d <tag>`), удалите удалённый тег (`git push upstream :refs/tags/<tag>`), откатите два локальных коммита (`git reset --hard HEAD~2`), удалите соответствующий репозиторий в Apache Staging, затем снова выполните `mvn release:clean` и `mvn release:prepare`.
+
+**Вопрос: чем использование плагина Maven release отличается от создания тега вручную с последующим выполнением `mvn deploy`?**
+
+`release:prepare/perform` автоматически изменяет версии, создаёт теги и загружает артефакты, что подходит для проектов с простым pom, таких как Shade. Ручной подход даёт больше гибкости в сценариях с несколькими артефактами, например при выпуске Spark Connector для разных версий Spark.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-prepare.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-prepare.md
new file mode 100644
index 000000000000..ce830728d7ea
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-prepare.md
@@ -0,0 +1,410 @@
+---
+title: Подготовка релиза Apache Doris
+language: ru
+description: "Подготовка релиза Apache Doris: подписание с помощью GPG, настройка Maven, обсуждение DISCUSS и общий процесс выпуска релиза."
+keywords:
+ - Подготовка релиза Apache Doris
+ - Release Manager
+ - Подписание GPG и ключ PGP
+ - Процесс голосования Apache
+ - Maven settings.xml
+ - Apache SVN dist
+ - DISCUSS
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Подготовка релиза Apache Doris {#apache-doris-release-preparation}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenarios: Version release / Apache voting process / Release Manager preparation -->
+
+При выпуске релизов проекта Apache необходимо строго соблюдать процедуру выпуска Apache Software Foundation. На этой странице описаны общий процесс выпуска релиза Apache Doris, подготовка среды для подписания и настройка Maven для выпуска релиза. Она предназначена для членов PMC или участников со статусом Committer, которые впервые выполняют роль Release Manager.
+
+Официальные правила и руководства Apache по этой теме:
+
+- [Процесс создания релиза](https://infra.apache.org/release-publishing)
+- [Правила выпуска релизов](https://www.apache.org/legal/release-policy.html)
+- [Публикация релизов Maven в Maven Central Repository](https://infra.apache.org/publishing-maven-artifacts.html)
+
+Подробные инструкции по выпуску каждого компонента:
+
+- [Выпуск Doris Core](./release-doris-core)
+- [Выпуск Doris Connectors](./release-doris-connectors)
+- [Выпуск Doris Shade](./release-doris-shade)
+- [Выпуск Doris SDK](./release-doris-sdk)
+
+## Формы выпуска релизов {#release-forms}
+
+Релизы проекта Apache выпускаются в трёх основных формах:
+
+| Форма | Описание | Обязательность |
+| --- | --- | --- |
+| Релиз исходного кода | Выпуск исходного кода | Обязательно |
+| Бинарный релиз | Выпуск бинарных файлов (скомпилированных исполняемых файлов) | Необязательно |
+| Готовые бинарные пакеты | Готовые бинарные пакеты, публикуемые на сторонних платформах, таких как Maven и Docker | Необязательно |
+
+## Общий процесс выпуска релиза {#overall-release-process}
+
+<!-- Knowledge type: Procedure -->
+
+Для каждого релиза проекта один из членов PMC или участников со статусом Committer должен взять на себя роль **Release Manager**. Общий процесс выглядит следующим образом:
+
+1. **Подготовка среды**: установите GPG и SVN, затем создайте открытый ключ для подписи (см. ниже).
+2. **Подготовка релиза**:
+ 1. Создайте в сообществе обсуждение DISCUSS и обсудите конкретный план выпуска.
+ 2. Создайте ветку для релиза.
+ 3. Приведите в порядок задачи, относящиеся к соответствующей версии.
+ 4. Включите необходимые исправления в ветку релиза.
+3. **Проверка ветки**:
+ 1. Проведите QA-тестирование стабильности.
+ 2. Проверьте процесс сборки кода из ветки.
+ 3. Подготовьте примечания к релизу.
+4. **Подготовка артефактов релиза**:
+ 1. Создайте тег релиза.
+ 2. Загрузите артефакты, предназначенные для выпуска, в [репозиторий Apache Dev SVN](https://dist.apache.org/repos/dist/dev/doris).
+ 3. Подготовьте другие готовые бинарные пакеты (например, загрузите их в [репозиторий Maven Staging](https://repository.apache.org/#stagingRepositories)).
+5. **Голосование сообщества**:
+ 1. Начните голосование в списке рассылки Dev сообщества Doris (`dev@doris.apache.org`).
+ 2. После успешного завершения голосования отправьте письмо с результатами.
+6. **Завершение выпуска**:
+ 1. Загрузите подписанные пакеты в [репозиторий Apache Release](https://dist.apache.org/repos/dist/release/doris/) и сформируйте ссылки для скачивания.
+ 2. Опубликуйте ссылки для скачивания на сайте Doris и в GitHub, затем удалите из SVN пакеты старых версий.
+ 3. Отправьте письмо с объявлением о релизе на `dev@doris.apache.org`.
+
+## Подготовка среды для подписания {#prepare-the-signing-environment}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenarios: First time acting as Release Manager -->
+
+Если вы выпускаете релиз впервые, подготовьте в своей локальной среде следующие инструменты:
+
+| Инструмент | Назначение | Справочная информация |
+| --- | --- | --- |
+| Подписание релиза | Ознакомление с требованиями Apache к подписанию | [Подписание релиза](https://www.apache.org/dev/release-signing.html) |
+| gpg | Создание ключа для подписи и подписание пакетов релиза | [openpgp](https://www.apache.org/dev/openpgp.html) |
+| svn | Загрузка артефактов релиза в Apache SVN | [openpgp](https://www.apache.org/dev/openpgp.html) |
+
+### Подготовка ключа GPG {#prepare-the-gpg-key}
+
+Перед выпуском релиза Release Manager должен создать открытый ключ для подписи, загрузить его на общедоступный сервер ключей, а затем использовать этот ключ для подписания пакетов релиза.
+
+> Если ваш ключ уже включён в [файл KEYS проекта Apache Doris](https://downloads.apache.org/doris/KEYS), этот раздел можно пропустить.
+
+#### Установка GnuPG {#install-gnupg}
+
+GnuPG (сокращённо GPG) — свободная программная реализация PGP, предназначенная для создания ключей и подписания файлов.
+
+Команда установки в CentOS:
+
+```bash
+yum install gnupg
+```
+
+После установки файл конфигурации по умолчанию находится по следующему пути:
+
+```text
+~/.gnupg/gpg.conf
+```
+
+Если файл отсутствует, можно создать пустой файл.
+
+Для подписания Apache рекомендует SHA512. Откройте `gpg.conf` и добавьте следующие три строки:
+
+```text
+personal-digest-preferences SHA512
+cert-digest-algo SHA512
+default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
+```
+
+#### Проверка версии GPG {#check-the-gpg-version}
+
+Убедитесь, что GPG поддерживает SHA512:
+
+```bash
+$ gpg --version
+gpg (GnuPG) 2.0.22
+libgcrypt 1.5.3
+Copyright (C) 2013 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Home: ~/.gnupg
+Supported algorithms:
+Pubkey: RSA, ?, ?, ELG, DSA
+Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
+ CAMELLIA128, CAMELLIA192, CAMELLIA256
+Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
+Compression: Uncompressed, ZIP, ZLIB, BZIP2
+```
+
+:::caution Примечание
+Войдите в учётную запись пользователя напрямую через терминал, например SecureCRT. Не переключайтесь на неё через `su - user` или `ssh`, иначе запрос парольной фразы не появится и операция завершится ошибкой.
+:::
+
+#### Создание ключа для подписи {#generate-the-signing-key}
+
+Выполните `gpg --gen-key` и следуйте подсказкам, используя рекомендованные настройки ниже:
+
+| Параметр | Рекомендуемое значение | Примечания |
+| --- | --- | --- |
+| Тип ключа | `1` (RSA и RSA) | По умолчанию |
+| Длина ключа | `4096` | Apache рекомендует не менее 4096 бит |
+| Срок действия | `0` | Бессрочный |
+| Настоящее имя | Совпадает с идентификатором, указанным на [id.apache.org](https://id.apache.org) | Обязательно |
+| Адрес электронной почты | Адрес Apache (`xxx@apache.org`) | Обязательно |
+
+Полный пример интерактивного сеанса:
+
+```text
+$ gpg --gen-key
+gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: xxx
+Name must be at least 5 characters long
+Real name: xxx-yyy
+Email address: xxx@apache.org
+Comment: xxx's key
+You selected this USER-ID:
+ "xxx-yyy (xxx's key) <xx...@apache.org>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
+```
+
+Затем нужно ввести парольную фразу (дважды, не менее 8 символов).
+
+:::danger Важно
+Обязательно запомните заданную здесь парольную фразу. Она понадобится для последующего подписания и выпуска других компонентов.
+:::
+
+Если `gpg --gen-key` надолго зависает, воспользуйтесь одним из следующих способов пополнения энтропии:
+
+- Откройте другой терминал и выполните `find / | xargs file`, чтобы сгенерировать случайные символы.
+- Установите `rng-tools` (`yum install rng-tools`) и выполните `rngd -r /dev/urandom`. После этого создание ключа завершится почти мгновенно.
+
+#### Просмотр и экспорт открытого ключа {#view-and-export-the-public-key}
+
+```bash
+$ gpg --list-keys
+/home/lide/.gnupg/pubring.gpg
+-----------------------------
+pub 4096R/33DBF2E0 2018-12-06
+uid xxx-yyy (xxx's key) <xx...@apache.org>
+sub 4096R/0E8182E6 2018-12-06
+```
+
+Здесь `xxx-yyy` — идентификатор пользователя, а `33DBF2E0` — короткий отпечаток.
+
+Экспортируйте открытый ключ в файл:
+
+```bash
+gpg --armor --output public-key.txt --export [user ID]
+```
+
+Пример:
+
+```bash
+$ gpg --armor --output public-key.txt --export xxx-yyy
+File 'public-key.txt' already exists. Overwrite? (y/N) y
+$ cat public-key.txt
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.22 (GNU/Linux)
+
+mQINBFwJEQ0BEACwqLluHfjBqD/RWZ4uoYxNYHlIzZvbvxAlwS2mn53BirLIU/G3
+9opMWNplvmK+3+gNlRlFpiZ7EvHsF/YJOAP59HmI2Z...
+```
+
+#### Загрузка открытого ключа на сервер ключей {#upload-the-public-key-to-a-key-server}
+
+Используйте `--send-keys`, чтобы загрузить открытый ключ на сервер ключей Ubuntu:
+
+```bash
+gpg --send-keys xxxx --keyserver https://keyserver.ubuntu.com/
+```
+
+Здесь `xxxx` — строка после `pub` в выводе `--list-keys` из предыдущего шага (например, `33DBF2E0`).
+
+Вы также можете вставить содержимое `public-key.txt` и загрузить его через веб-страницу [https://keyserver.ubuntu.com/](https://keyserver.ubuntu.com/).
+
+После успешной загрузки ключ можно найти на этой странице, введя `0x33DBF2E0` (обратите внимание на префикс `0x`). Результаты поиска на сайте обновляются с задержкой, поэтому может потребоваться подождать около часа.
+
+#### Получение отпечатка и его привязка к учётной записи Apache {#generate-the-fingerprint-and-bind-it-to-your-apache-account}
+
+Сервер ключей не проверяет подлинность, поэтому любой человек может загрузить открытый ключ от вашего имени. Поэтому необходимо привязать отпечаток на [id.apache.org](https://id.apache.org), чтобы другие могли его сверить.
+
+Получите отпечаток:
+
+```bash
+gpg --fingerprint [user ID]
+```
+
+Пример:
+
+```text
+$ gpg --fingerprint xxx-yyy
+pub 4096R/33DBF2E0 2018-12-06
+ Key fingerprint = 07AA E690 B01D 1A4B 469B 0BEF 5E29 CE39 33DB F2E0
+uid xxx-yyy (xxx's key) <xx...@apache.org>
+sub 4096R/0E8182E6 2018-12-06
+```
+
+Вставьте полный отпечаток (`07AA E690 B01D 1A4B 469B 0BEF 5E29 CE39 33DB F2E0`) в поле `OpenPGP Public Key Primary Fingerprint` на [https://id.apache.org](https://id.apache.org).
+
+> Примечание: к каждой учётной записи Apache можно привязать несколько открытых ключей.
+
+#### Добавление открытого ключа в файл KEYS {#append-the-public-key-to-the-keys-file}
+
+:::danger Важно
+**Никогда не удаляйте существующее содержимое файла KEYS.** Только добавляйте новые записи.
+:::
+
+Поочерёдно добавьте свой ключ в репозитории SVN Dev и Release:
+
+```bash
+svn co https://dist.apache.org/repos/dist/dev/doris/
+# edit doris/KEYS file
+gpg --list-sigs [user ID] >> doris/KEYS
+gpg --armor --export [user ID] >> doris/KEYS
+svn ci --username $ASF_USERNAME --password "$ASF_PASSWORD" -m"Update KEYS"
+```
+
+```bash
+svn co https://dist.apache.org/repos/dist/release/doris
+# edit doris/KEYS file
+svn ci --username $ASF_USERNAME --password "$ASF_PASSWORD" -m"Update KEYS"
+```
+
+Затем изменения автоматически синхронизируются с файлом по адресу:
+
+```text
+https://downloads.apache.org/doris/KEYS
+```
+
+В последующих письмах о голосовании по релизу используйте адрес `https://downloads.apache.org/doris/KEYS`.
+
+## Подготовка релиза Maven {#maven-release-preparation}
+
+<!-- Knowledge type: Configuration parameters -->
+<!-- Applicable scenarios: Release Doris Connector / Shade / SDK -->
+
+Для выпуска таких компонентов, как Doris Connector, Shade и SDK, необходимо использовать Maven. Для этого нужно настроить `~/.m2/settings.xml` и `~/.m2/settings-security.xml`.
+
+### 1. Создание мастер-пароля {#1-generate-the-master-password}
+
+Мастер-пароль используется для последующего шифрования других паролей:
+
+```bash
+mvn --encrypt-master-password <password>
+```
+
+Результат выглядит примерно так: `{VSb+6+76djkH/43...}`. Запишите его в `~/.m2/settings-security.xml`:
+
+```xml
+<settingsSecurity>
+ <master>{VSb+6+76djkH/43...}</master>
+</settingsSecurity>
+```
+
+### 2. Шифрование пароля учётной записи Apache {#2-encrypt-the-apache-account-password}
+
+```bash
+mvn --encrypt-password <password>
+```
+
+`<password>` — пароль вашей учётной записи Apache. Результат выглядит примерно так: `{GRKbCylpwysHfV...}`.
+
+Добавьте следующую конфигурацию `<servers>` в `~/.m2/settings.xml`:
+
+```xml
+<servers>
+ <!-- To publish a snapshot of your project -->
+ <server>
+ <id>apache.snapshots.https</id>
+ <username>yangzhg</username>
+ <password>{GRKbCylpwysHfV...}</password>
+ </server>
+ <!-- To stage a release of your project -->
+ <server>
+ <id>apache.releases.https</id>
+ <username>yangzhg</username>
+ <password>{GRKbCylpwysHfV...}</password>
+ </server>
+</servers>
+```
+
+Назначение двух записей `server id`:
+
+| Идентификатор сервера | Назначение |
+| --- | --- |
+| `apache.snapshots.https` | Публикация версий SNAPSHOT |
+| `apache.releases.https` | Публикация релизных версий в репозитории Staging |
+
+## Создание обсуждения DISCUSS в сообществе {#start-a-discuss-thread-in-the-community}
+
+<!-- Knowledge type: Procedure -->
+
+Обсуждение DISCUSS не является обязательным этапом перед выпуском релиза, но для важных релизов **настоятельно рекомендуется** начать его в списке рассылки `dev@doris.apache.org`. Обсудить можно следующие и другие темы:
+
+- Описание важных функций и особенности их проектирования.
+- Описание исправлений ошибок.
+- Изменения совместимости и примечания по обновлению.
+- Предполагаемый график выпуска.
+
+## Частые вопросы и устранение неполадок {#faq--troubleshooting}
+
+**Вопрос: `gpg --gen-key` зависает. Что делать?**
+
+Причина в недостатке энтропии. Выполните `find / | xargs file` либо установите `rng-tools` и выполните `rngd -r /dev/urandom`, чтобы пополнить источник случайных данных.
+
+**Вопрос: подписание завершается ошибкой `gpg: signing failed: Inappropriate ioctl for device`?**
+
+Терминал не может принять ввод парольной фразы. Выполните `export GPG_TTY=$(tty)` и повторите попытку.
+
+**Вопрос: `mvn deploy` возвращает 401 Unauthorized?**
+
+Проверьте имя пользователя и зашифрованный пароль для `apache.releases.https` в `~/.m2/settings.xml`, а также убедитесь, что мастер-пароль в `~/.m2/settings-security.xml` соответствует им.
+
+**Вопрос: после загрузки на сервер ключей ключ не удаётся найти?**
+
+На `keyserver.ubuntu.com` синхронизация происходит с задержкой, которая обычно составляет около часа.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-verify.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-verify.md
new file mode 100644
index 000000000000..1497e41c7fc6
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-verify.md
@@ -0,0 +1,208 @@
+---
+title: Проверка релиза Apache
+language: ru
+description: "Порядок проверки релиза Apache Doris: скачивание, проверка подписи, проверка лицензий исходного кода, проверка сборки и голосование."
+keywords:
+ - Apache Doris
+ - проверка релиза
+ - подпись GPG
+ - контрольная сумма sha512
+ - проверка LICENSE
+ - skywalking-eyes
+ - голосование по релизу
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Проверка релиза Apache {#verify-an-apache-release}
+
+<!-- Knowledge type: Operational steps -->
+<!-- Applicable scenario: Apache release process / verification and voting -->
+
+Эта процедура проверки применяется в следующих случаях:
+
+- Проверка кандидата на выпуск (Release Candidate, RC) в ходе голосования по релизу.
+- Проверка целостности уже опубликованного релиза.
+
+В этом документе в качестве примера используется Doris Core. Для других компонентов замените названия соответствующим образом.
+
+## Контрольный список проверки {#verification-checklist}
+
+Все 7 перечисленных ниже проверок должны завершиться успешно, прежде чем вы проголосуете +1:
+
+| № | Что проверить | Способ проверки |
+|------|--------|----------|
+| 1 | Ссылка для скачивания является официальной | Ссылка ведёт на `dist.apache.org` или `downloads.apache.org` |
+| 2 | Контрольная сумма и подпись PGP корректны | `gpg --verify` + `sha512sum --check` |
+| 3 | Код соответствует текущей версии релиза | Сравните исходный код с тегом Git |
+| 4 | Файлы LICENSE и NOTICE корректны | Проверка вручную |
+| 5 | Все файлы содержат обязательный лицензионный заголовок | `apache/skywalking-eyes` |
+| 6 | Архив с исходным кодом не содержит результатов компиляции | Вручную проверьте `target/`, `build/` и двоичные файлы |
+| 7 | Сборка завершается успешно | Соберите проект, следуя документации по сборке |
+
+## 1. Скачайте архив с исходным кодом, файл подписи, файл контрольной суммы и KEYS {#1-download-the-source-package-signature-file-checksum-file-and-keys}
+
+Скачайте все связанные файлы. В примере используется `a.b.c-incubating`:
+
+```shell
+wget https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=/incubator/doris/a.b.c-incubating/apache-doris-a.b.c-incubating-src.tar.gz
+
+wget https://www.apache.org/dist/incubator/doris/a.b.c-incubating/apache-doris-a.b.c-incubating-src.tar.gz.sha512
+
+wget https://www.apache.org/dist/incubator/doris/a.b.c-incubating/apache-doris-a.b.c-incubating-src.tar.gz.asc
+
+wget https://downloads.apache.org/incubator/doris/KEYS
+```
+
+> Для проверки в рамках голосования скачайте файлы с адреса SVN, указанного в письме о голосовании.
+
+## 2. Проверьте подпись и контрольную сумму {#2-check-the-signature-and-checksum}
+
+### 2.1 Установите GnuPG {#21-install-gnupg}
+
+Рекомендуется использовать GnuPG. Установите его одной из следующих команд:
+
+| Система | Команда установки |
+|------|----------|
+| CentOS / RHEL | `yum install gnupg` |
+| Ubuntu / Debian | `apt-get install gnupg` |
+
+### 2.2 Импортируйте KEYS и выполните проверку {#22-import-keys-and-verify}
+
+В следующем примере используется релиз ядра Doris. Для других релизов процедура аналогична:
+
+```shell
+gpg --import KEYS
+gpg --verify apache-doris-a.b.c-incubating-src.tar.gz.asc apache-doris-a.b.c-incubating-src.tar.gz
+sha512sum --check apache-doris-a.b.c-incubating-src.tar.gz.sha512
+```
+
+> Примечание: если `gpg --import` завершается ошибкой `no valid user IDs`, возможно, версия GPG несовместима. Обновите её до 2.2.x или более поздней.
+
+## 3. Проверьте лицензионные заголовки исходных файлов {#3-verify-source-license-headers}
+
+Для проверки лицензионных заголовков используйте [skywalking-eyes](https://github.com/apache/skywalking-eyes).
+
+Перейдите в корневой каталог исходного кода и выполните:
+
+```shell
+sudo docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header check
+```
+
+Пример вывода:
+
+```text
+INFO GITHUB_TOKEN is not set, license-eye won't comment on the pull request
+INFO Loading configuraftion from file: .licenserc.yaml
+INFO Totally checked 5611 files, valid: 3926, invalid: 0, ignored: 1685, fixed: 0
+```
+
+Если значение `invalid` равно 0, проверка пройдена.
+
+## 4. Проверьте сборку {#4-verify-compilation}
+
+Обратитесь к документации по сборке соответствующего компонента:
+
+- Сборка ядра Doris: см. [документацию по сборке](/community/source-install/compilation-with-docker).
+- Сборка Flink Doris Connector: см. [документацию Flink Doris Connector](/docs/dev/connection-integration/data-integration/flink-doris-connector).
+- Сборка Spark Doris Connector: см. [документацию Spark Doris Connector](/docs/dev/connection-integration/data-integration/spark-doris-connector).
+
+## 5. Голосование {#5-voting}
+
+Подробнее о голосовании см. в описании [процедуры голосования ASF](https://www.apache.org/foundation/voting.html).
+
+После проверки можно ответить на письмо о голосовании в списке рассылки `dev@doris` по следующему шаблону:
+
+```text
++1 (binding) or +1 (non-binding)
+
+My Apache ID(optional): morningman
+
+I checked:
+
+[x] The download link is legal.
+[x] The PGP signature are valid.
+[x] The source code matches the current release version.
+[x] The LICENSE and NOTICE files are correct.
+[x] All files carry the necessary protocol header.
+[x] The compiled content is not included in the source package.
+[x] The compilation can be executed smoothly.
+
+Other comments...
+```
+
+### 5.1 Основные правила голосования {#51-key-voting-rules}
+
+| Правило | Описание |
+|------|------|
+| Решающий голос | Голоса членов PMC имеют решающую силу. Остальные голоса носят рекомендательный характер |
+| Условие принятия | Одобрение большинством: не менее трёх голосов +1 от членов PMC, причём голосов +1 должно быть больше, чем -1 |
+| Продолжительность голосования | Голосование открыто не менее 72 часов |
+| Отсутствие автоматического +1 | Ни Release Manager, ни кто-либо из голосующих не получает +1 автоматически. Учитываются только явно поданные голоса |
+
+Голоса членов PMC имеют решающую силу, но сообщество призывает всех участников голосовать, даже если их голоса носят лишь рекомендательный характер.
+
+Release Manager должен проверить действительность каждого голоса. По списку участников PMC можно проверить соответствие адресов электронной почты. Рекомендации:
+
+- При голосовании используйте адрес электронной почты Apache, чтобы голос был действительным.
+- Укажите свой Apache ID при голосовании: это упростит подсчёт голосов для Release Manager.
+
+Как правило, если кто-то обнаруживает серьёзную проблему, сообщество отменяет голосование по релизу. Однако в большинстве случаев окончательное решение принимает Release Manager. Конкретная процедура может различаться в зависимости от проекта, но **правило «минимальный кворум из трёх голосов +1» действует во всех проектах**.
+
+Примечание: **Ни Release Manager, ни любой другой участник голосования ASF не получает +1 автоматически. Учитываются только явно поданные голоса.** Также рекомендуется, чтобы Release Manager проголосовал по релизу.
+
+## Частые вопросы / Устранение неполадок {#faq--troubleshooting}
+
+### Q1: `gpg --verify` сообщает об ошибке `gpg verify failed` или `BAD signature` {#q1-gpg---verify-reports-gpg-verify-failed-or-bad-signature}
+
+Возможные причины:
+
+- Файл KEYS не импортирован. Сначала выполните `gpg --import KEYS`.
+- Файл подписи не соответствует архиву с исходным кодом. Убедитесь, что файлы `.asc` и `.tar.gz` находятся в одном каталоге и имеют одинаковые номера версий.
+- Архив с исходным кодом был повреждён при скачивании. Скачайте его заново и сравните с файлом `.sha512`.
+
+### Q2: `gpg --import` сообщает об ошибке `no valid user IDs` {#q2-gpg---import-reports-no-valid-user-ids}
+
+Версия GPG слишком старая. Обновите её до 2.2.x или более поздней:
+
+```shell
+# Ubuntu
+apt-get install gnupg2
+
+# CentOS
+yum install gnupg2
+```
+
+### Q3: `sha512sum --check` сообщает об ошибке `shasum mismatch` или `FAILED` {#q3-sha512sum---check-reports-shasum-mismatch-or-failed}
+
+Архив с исходным кодом повреждён или не соответствует файлу контрольной суммы. Скачайте архив с исходным кодом заново, убедитесь, что скачивание завершилось (сравните размеры файлов), и повторите проверку.
+
+### Q4: skywalking-eyes сообщает об ошибке `LICENSE check failed` или `invalid > 0` {#q4-skywalking-eyes-reports-license-check-failed-or-invalid--0}
+
+В некоторых файлах исходного кода отсутствуют лицензионные заголовки. Типичные причины:
+
+- В недавно добавленном файле исходного кода отсутствует заголовок Apache License.
+- Сторонний файл не указан в разделе `paths-ignore` файла `.licenserc.yaml`.
+
+Release Manager должен исправить проблему и подготовить новый RC.
+
+### Q5: Нужно ли голосовать -1, если сборка завершилась ошибкой? {#q5-should-i-vote--1-if-compilation-fails}
+
+Если ошибка сборки вызвана самим архивом релиза (например, отсутствующими файлами или ошибками зависимостей), проголосуйте -1 и подробно укажите причины. Если ошибка связана с локальным окружением (например, отсутствующими зависимостями или неверной версией JDK), устраните проблемы в окружении, прежде чем принимать решение.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-versioning.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-versioning.md
new file mode 100644
index 000000000000..cf2b386bf87d
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/release-and-verify/release-versioning.md
@@ -0,0 +1,106 @@
+---
+title: Правила нумерации и выбор версии Apache Doris
+language: ru
+description: Правила нумерации версий Apache Doris (major/minor/patch), политика совместимости при обновлении и откате версий, а также руководство по выбору бинарного файла в зависимости от CPU.
+keywords:
+ - Номер версии Apache Doris
+ - Правила версионирования Doris
+ - Обновление и откат версий Doris
+ - Версии Latest и Stable
+ - x64 avx2 ARM64
+ - Выбор бинарного файла Doris
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Правила нумерации и выбор версии Apache Doris {#apache-doris-version-rules-and-version-selection}
+
+<!-- Knowledge type: Rule specification -->
+<!-- Applicable scenarios: Version selection / Upgrade and downgrade evaluation / Pre-deployment check -->
+
+В этом документе описаны значение номеров версий Apache Doris, политика совместимости при обновлении и откате версий, а также выбор подходящего бинарного файла в зависимости от архитектуры CPU.
+
+## Правила нумерации версий {#version-number-rules}
+
+Apache Doris использует номер версии из трёх частей: `X.Y.Z`. Значение каждой части, типичные изменения и периодичность выпуска приведены ниже:
+
+| Позиция | Название | Значение | Периодичность выпуска |
+| --- | --- | --- | --- |
+| X | Major | Выпуск с крупными новыми функциями или обновлением архитектуры | Ежегодно |
+| Y | Minor | Важные новые функции, оптимизация производительности или необходимые изменения формата метаданных или данных | Ежеквартально |
+| Z | Patch | Исправления ошибок, оптимизация производительности и небольшие функциональные обновления | Обычно каждые 2-4 недели |
+
+## Обновление и откат версий {#version-upgrade-and-downgrade}
+
+<!-- Knowledge type: Rule specification -->
+
+| Тип обновления | Прямая совместимость (старая → новая) | Обратная совместимость (новая → старая) | Рекомендация |
+| --- | --- | --- | --- |
+| Major (X) | Совместимо | Не гарантируется | Создайте резервную копию данных перед обновлением |
+| Minor (Y) | Совместимо | Не гарантируется | Создайте резервную копию данных перед обновлением |
+| Patch (Z) | Совместимо | Совместимо | Обновляйте и откатывайте версии напрямую, без проблем с совместимостью данных |
+
+Обновления версий Major (X) и Minor (Y) могут включать изменения формата метаданных или данных. Apache Doris гарантирует прямую совместимость этих изменений (то есть возможность обновления со старой версии до новой), но не гарантирует обратную совместимость (то есть возможность отката с новой версии на старую не гарантируется). Версии Patch (Z) поддерживают как обновление, так и откат.
+
+## Как выбрать версию {#how-to-select-a-version}
+
+Команда Apache Doris в основном поддерживает две последние ветки версий, обозначенные как **Latest** и **Stable**:
+
+| Обозначение | Содержание | Сценарии использования |
+| --- | --- | --- |
+| Latest | Новейшие функции, оптимизации и исправления ошибок | Опробование новых функций, проверка POC, тестирование производительности, предпродуктивная среда |
+| Stable | Постоянное исправление ошибок, более высокая стабильность | Продуктивная среда |
+
+## Модели CPU и варианты бинарных файлов {#cpu-models-and-binary-versions}
+
+<!-- Knowledge type: Hardware requirement -->
+<!-- Applicable scenarios: Pre-deployment check / Environment acceptance -->
+
+Apache Doris предоставляет три варианта бинарных файлов для разных архитектур CPU и наборов инструкций:
+
+| Название бинарного файла | Подходящие CPU | Описание |
+| --- | --- | --- |
+| x64(avx2) | CPU x86_64 с поддержкой набора инструкций AVX2 | Рекомендуется по умолчанию, наилучшая производительность |
+| x64(no avx2) | CPU x86_64 без поддержки набора инструкций AVX2 | Для более старых процессоров x86_64 |
+| ARM64 | CPU на базе ARM | Для серверов ARM (например, Kunpeng, Graviton) |
+
+:::tip Совет
+Выполните следующую команду, чтобы проверить, поддерживает ли CPU набор инструкций AVX2:
+
+```bash
+cat /proc/cpuinfo | grep avx2
+```
+
+Если команда выводит результат, CPU поддерживает AVX2 и можно выбрать бинарный файл `x64(avx2)`.
+:::
+
+## Часто задаваемые вопросы {#faq}
+
+**Вопрос: Можно ли напрямую откатиться с 2.0.x на 1.2.x?**
+
+Нет. При откате между версиями Major или Minor совместимость форматов метаданных и данных не гарантируется. Перед любым обновлением версии Major или Minor выполняйте полное резервное копирование.
+
+**Вопрос: Можно ли обновлять версии Patch, пропуская промежуточные версии (например, с 2.0.1 сразу до 2.0.5)?**
+
+Да. Версии Patch сохраняют прямую и обратную совместимость, поэтому при обновлении или откате можно пропускать промежуточные версии.
+
+**Вопрос: Как выбрать между Latest и Stable?**
+
+Для продуктивной среды в первую очередь выбирайте Stable. Для оценки возможностей и опробования новых функций выбирайте Latest.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/security.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/security.md
new file mode 100644
index 000000000000..10a713fc0849
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/security.md
@@ -0,0 +1,69 @@
+---
+title: Раскрытие информации об уязвимостях безопасности
+language: ru
+description: "Как сообщить об уязвимостях безопасности в Apache Doris: свяжитесь с командой безопасности ASF по адресу security@apache.org и следуйте официальной процедуре ответственного раскрытия информации."
+keywords:
+ - безопасность Apache Doris
+ - уязвимость безопасности Doris
+ - security@apache.org
+ - команда безопасности ASF
+ - ответственное раскрытие информации
+ - сообщение об уязвимости
+ - CVE
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Раскрытие информации об уязвимостях безопасности {#security-vulnerability-disclosure}
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Vulnerability reporting / Security disclosure -->
+
+Apache Software Foundation (ASF) придерживается строгого подхода к вопросам безопасности своих программных проектов. Apache Doris также уделяет пристальное внимание вопросам безопасности, связанным с возможностями и функциональностью продукта. На этой странице описано, как сообщить об уязвимостях безопасности или потенциальных угрозах для Doris в рамках официальной процедуры ASF.
+
+## Краткая справка о канале для сообщений {#reporting-channel-quick-reference}
+
+| Параметр | Описание |
+|------|------|
+| Получатель | [Команда безопасности Apache](http://www.apache.org/security/) |
+| Адрес электронной почты | [security@apache.org](mailto:security@apache.org) |
+| Название проекта | Всегда указывайте `Doris` в письме |
+| Принцип раскрытия информации | **Не раскрывайте информацию** об уязвимости через публичные каналы до отправки письма |
+
+## Порядок отправки сообщения {#reporting-steps}
+
+<!-- Knowledge type: Procedure -->
+
+1. **Подготовьте письмо**: Отправьте его на адрес [security@apache.org](mailto:security@apache.org) и убедитесь, что в теме и тексте письма явно указано название проекта `Doris`.
+2. **Опишите проблему**: Чётко укажите область воздействия, затронутые версии и возможные сценарии атак, связанные с уязвимостью или потенциальной угрозой.
+3. **Приложите шаги для воспроизведения**: Предоставьте минимальные шаги для воспроизведения, PoC или фрагменты журналов, позволяющие воспроизвести проблему безопасности.
+4. **Дождитесь ответа**: Команда безопасности Apache и сообщество Doris свяжутся с вами напрямую после оценки и анализа.
+
+## Важные замечания {#important-notes}
+
+- **Не раскрывайте информацию публично**: Не обсуждайте уязвимость в публичных каналах, включая GitHub Issues, списки рассылки, Slack и социальные сети, пока не получите ответ от команды безопасности и не согласуете сроки раскрытия информации.
+- **Не используйте обычные каналы обратной связи**: О проблемах безопасности нельзя сообщать через GitHub Issues или список рассылки dev, описанные на странице [«Обратная связь»](feedback).
+- **Соблюдайте процедуру ответственного раскрытия информации**: Полное описание процедуры приведено в [Политике ASF по раскрытию информации о проблемах безопасности](http://www.apache.org/security/).
+
+## Связанные ссылки {#related-links}
+
+- [Главная страница команды безопасности ASF](http://www.apache.org/security/)
+- [Обратная связь](feedback): Канал для вопросов, не связанных с безопасностью.
+- [Присоединяйтесь к сообществу](join-community): Другие каналы общения с сообществом.
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-arm.mdx b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-arm.mdx
new file mode 100644
index 000000000000..80e8ddbdb1ff
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-arm.mdx
@@ -0,0 +1,712 @@
+---
+title: Сборка Apache Doris на платформах ARM
+language: ru
+description: Сборка Apache Doris на платформах ARM64, включая матрицу поддержки операционных систем, справочную информацию о версиях зависимостей и этапы сборки.
+keywords:
+ - компиляция для ARM
+ - ARM64
+ - aarch64
+ - Apache Doris
+ - сборка из исходного кода
+ - LDB Toolchain
+ - KylinOS
+ - Kunpeng
+---
+
+
+{/* Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License. */}
+
+
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+
+{/* Knowledge type: Procedure */}
+{/* Scenario: First-time compilation / ARM server environment */}
+
+В этом документе описана сборка Apache Doris на платформах ARM64, включая совместимость оборудования и операционных систем, установку зависимостей и процесс сборки.
+
+:::info
+Этот документ носит справочный характер. В разных окружениях ARM могут возникать и другие ошибки. Сообщить о них или предложить решения можно в [Issues репозитория doris-website](https://github.com/apache/doris-website/issues).
+:::
+
+:::tip
+Начиная с версии 3.0.3, платформа ARM поддерживает сборку и развёртывание в режиме с разделением вычислений и хранения.
+:::
+
+## 1. Совместимость оборудования и операционных систем {#1-hardware-and-operating-system-compatibility}
+
+{/* Knowledge type: Hardware requirements */}
+
+Сообщество проверило следующие окружения:
+
+| Операционная система | Версия | Пример процессора |
+| -------- | ---- | -------- |
+| KylinOS | Kylin-Server-10-SP1-Release-Build04-20200711 | Phytium FT-2000+/64 |
+| CentOS | 7.9 и выше (AltArch) | aarch64 |
+| Ubuntu | 20.04 | aarch64 |
+
+:::info Размер страницы памяти
+Дистрибутивы для серверов ARM поставляются с ядрами, использующими страницы памяти размером 4 KiB или 64 KiB (в KylinOS V10 и CentOS 7/8 aarch64 обычно используется 64 KiB, в Ubuntu — 4 KiB); проверить размер можно командой `getconf PAGESIZE`. При сборке jemalloc для Doris на ARM используется `--with-lg-page=16`, поэтому один и тот же бинарный файл работает с ядрами, использующими любой из этих размеров страниц. Однако в некоторых сторонних библиотеках предположения о размере страницы фи [...]
+:::
+
+Пример вывода:
+
+```shell
+# KylinOS
+$ cat /etc/.kyinfo
+name=Kylin-Server
+milestone=10-SP1-Release-Build04-20200711
+arch=arm64
+beta=False
+time=2020-07-11 17:16:54
+dist_id=Kylin-Server-10-SP1-Release-Build04-20200711-arm64-2020-07-11 17:16:54
+
+$ cat /proc/cpuinfo
+model name : Phytium,FT-2000+/64
+
+# CentOS 7.9
+$ lsb_release -a
+LSB Version: :core-4.1-aarch64:core-4.1-noarch
+Distributor ID: CentOS
+Description: CentOS Linux release 7.9.2009 (AltArch)
+Release: 7.9.2009
+Codename: AltArch
+```
+
+## 2. Настройка программного окружения {#2-software-environment-configuration}
+
+### 2.1 Справочная таблица версий зависимостей (на примере JDK 8) {#21-dependency-version-reference-table-using-jdk-8-as-an-example}
+
+{/* Knowledge type: Configuration parameters */}
+
+| Компонент | Версия | Примечания |
+| ---- | ---- | ---- |
+| Git | 2.0+ | |
+| JDK | 1.8.0 | Для сборки 3.0+ или master требуется JDK 17 |
+| Maven | 3.6.3 | Рекомендуется 3.9.9 |
+| NodeJS | 16.3.0 | |
+| LDB Toolchain | 0.9.1 | Для ARM рекомендуется 0.21+ |
+| autoconf | 2.69 | Установка из исходного кода |
+| bison | 3.0.4 | |
+| Стандартные системные пакеты | Устанавливаются автоматически с помощью yum/apt | byacc, patch, automake, libtool, make, which, file, ncurses-devel, gettext-devel, unzip, bzip2, zip, util-linux, wget, git, python2 |
+
+### 2.2 Команды для установки программного окружения {#22-commands-to-install-the-software-environment}
+
+<Tabs>
+ <TabItem value="CentOS 7.9" label="CentOS 7.9" default>
+ <div>
+
+1. Создайте корневые каталоги для загружаемых пакетов и установленного программного обеспечения
+
+```shell
+# Create the root directory for downloaded packages
+mkdir /opt/tools
+# Create the root directory for installed software
+mkdir /opt/software
+```
+ </div>
+ <div>
+
+2. Установите зависимости
+
+ - Git
+
+```shell
+ # To skip the compilation hassle, install directly with yum
+ yum install -y git
+```
+
+ - JDK 8
+
+```shell
+ # When compiling Doris 2.1 or earlier versions, you can install JDK 8
+ # Option 1: Install directly with yum. The devel package provides tools such as jps
+ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
+
+ # Option 2: Download the arm64 package, extract it, and configure environment variables
+ cd /opt/tools
+ wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/jdk-8u291-linux-aarch64.tar.gz && \
+ tar -zxvf jdk-8u291-linux-aarch64.tar.gz && \
+ mv jdk1.8.0_291 /opt/software/jdk8
+```
+
+ - JDK 17
+
+```shell
+ # To compile Doris 3.0 (inclusive) or later versions, or the master branch, replace JDK 8 with JDK 17
+ yum install -y java-17-openjdk java-17-openjdk-devel
+```
+
+ - Maven
+
+```shell
+ cd /opt/tools
+ # Download, extract, and configure environment variables
+ wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz && \
+ tar -zxvf apache-maven-3.9.9-bin.tar.gz && \
+ mv apache-maven-3.9.9 /opt/software/maven
+```
+
+ - NodeJS
+
+```shell
+ cd /opt/tools
+ # Download the arm64 package
+ wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/node-v16.3.0-linux-arm64.tar.xz && \
+ tar -xvf node-v16.3.0-linux-arm64.tar.xz && \
+ mv node-v16.3.0-linux-arm64 /opt/software/nodejs
+```
+
+ - LDB Toolchain
+
+```shell
+ cd /opt/tools
+ # Download the ARM version of LDB Toolchain
+ wget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.21/ldb_toolchain_gen.aarch64.sh && \
+ bash ldb_toolchain_gen.aarch64.sh /opt/software/ldb_toolchain/
+```
+ </div>
+ <div>
+
+3. Настройте переменные окружения
+
+```shell
+# Configure environment variables (using JDK 8 as an example)
+vim /etc/profile.d/doris.sh
+export JAVA_HOME=/opt/software/jdk8
+export MAVEN_HOME=/opt/software/maven
+export NODE_JS_HOME=/opt/software/nodejs
+export LDB_HOME=/opt/software/ldb_toolchain
+export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_JS_HOME/bin:$LDB_HOME/bin:$PATH
+
+# Save, exit, and refresh environment variables
+source /etc/profile.d/doris.sh
+
+# Verify the installation (using JDK 8 as an example)
+java -version
+> java version "1.8.0_291"
+mvn -version
+> Apache Maven 3.9.9
+node --version
+> v16.3.0
+gcc --version
+> gcc-11
+```
+ </div>
+ <div>
+
+4. Установите дополнительное программное обеспечение и компоненты
+
+```shell
+# Install common system packages
+sudo yum install -y byacc patch automake libtool make which file ncurses-devel gettext-devel unzip bzip2 bison zip util-linux wget git python2
+
+# Install autoconf-2.69
+cd /opt/tools
+wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \
+ tar zxf autoconf-2.69.tar.gz && \
+ mv autoconf-2.69 /opt/software/autoconf && \
+ cd /opt/software/autoconf && \
+ ./configure && \
+ make && \
+ make install
+```
+ </div>
+ </TabItem>
+ <TabItem value="Ubuntu 20.04" label="Ubuntu 20.04">
+ <div>
+
+1. Обновите список пакетов apt
+
+```shell
+apt-get update
+```
+ </div>
+ <div>
+
+2. Проверьте командную оболочку
+
+ В Ubuntu `/bin/sh` по умолчанию указывает на dash, а не на bash. Чтобы некоторые скрипты могли выполняться, необходимо переключить его на bash. Сначала проверьте, на что сейчас указывает `sh`:
+
+```shell
+ls -al /bin/sh
+```
+
+ Для переключения выполните следующую команду:
+
+```shell
+sudo dpkg-reconfigure dash
+```
+
+ В интерактивном интерфейсе выберите `no` (не использовать dash как оболочку по умолчанию), и `/bin/sh` будет указывать на bash.
+ </div>
+ <div>
+
+3. Создайте корневые каталоги для загружаемых пакетов и установленного программного обеспечения
+
+```shell
+ # Create the root directory for downloaded packages
+ mkdir /opt/tools
+ # Create the root directory for installed software
+ mkdir /opt/software
+```
+ </div>
+ <div>
+
+4. Установите зависимости
+
+ - Git
+
+```shell
+ # Install directly with apt-get
+ apt-get -y install git
+```
+
+ - JDK 8
+
+```shell
+ # Download the arm64 package, extract it, and configure environment variables
+ cd /opt/tools
+ wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/jdk-8u291-linux-aarch64.tar.gz && \
+ tar -zxvf jdk-8u291-linux-aarch64.tar.gz && \
+ mv jdk1.8.0_291 /opt/software/jdk8
+```
+
+ - JDK 17
+
+```shell
+ # To compile Doris 3.0 (inclusive) or later versions, or the master branch, replace JDK 8 with JDK 17
+ apt-get -y install openjdk-17-jdk
+```
+
+ - Maven
+
+```shell
+ cd /opt/tools
+ # Download, extract, and configure environment variables
+ wget https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz && \
+ tar -zxvf apache-maven-3.9.9-bin.tar.gz && \
+ mv apache-maven-3.9.9 /opt/software/maven
+```
+
+ - NodeJS
+
+```shell
+ cd /opt/tools
+ # Download the arm64 package
+ wget https://doris-thirdparty-repo.bj.bcebos.com/thirdparty/node-v16.3.0-linux-arm64.tar.xz && \
+ tar -xvf node-v16.3.0-linux-arm64.tar.xz && \
+ mv node-v16.3.0-linux-arm64 /opt/software/nodejs
+```
+
+ - LDB Toolchain
+
+```shell
+ cd /opt/tools
+ # Download the ARM version of LDB Toolchain
+ wget https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.21/ldb_toolchain_gen.aarch64.sh && \
+ bash ldb_toolchain_gen.aarch64.sh /opt/software/ldb_toolchain/
+```
+ </div>
+ <div>
+
+5. Настройте переменные окружения
+
+```shell
+# Configure environment variables (using JDK 8 as an example)
+vim /etc/profile.d/doris.sh
+export JAVA_HOME=/opt/software/jdk8
+export MAVEN_HOME=/opt/software/maven
+export NODE_JS_HOME=/opt/software/nodejs
+export LDB_HOME=/opt/software/ldb_toolchain
+export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$NODE_JS_HOME/bin:$LDB_HOME/bin:$PATH
+
+# Save, exit, and refresh environment variables
+source /etc/profile.d/doris.sh
+
+# Verify the installation (using JDK 8 as an example)
+java -version
+> java version "1.8.0_291"
+mvn -version
+> Apache Maven 3.9.9
+node --version
+> v16.3.0
+gcc --version
+> gcc-11
+```
+ </div>
+ <div>
+
+6. Установите дополнительное программное обеспечение и компоненты
+
+```shell
+# Install common system packages
+sudo apt install -y build-essential cmake flex automake bison binutils-dev libiberty-dev zip libncurses5-dev curl ninja-build
+sudo apt-get install -y make
+sudo apt-get install -y unzip
+sudo apt-get install -y python2
+sudo apt-get install -y byacc
+sudo apt-get install -y automake
+sudo apt-get install -y libtool
+sudo apt-get install -y bzip2
+sudo apt-get install -y software-properties-common
+sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
+sudo apt update
+sudo apt install gcc-11 g++-11
+sudo apt-get -y install autoconf autopoint
+
+# Install autoconf-2.69
+cd /opt/tools
+wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \
+ tar zxf autoconf-2.69.tar.gz && \
+ mv autoconf-2.69 /opt/software/autoconf && \
+ cd /opt/software/autoconf && \
+ ./configure && \
+ make && \
+ make install
+```
+ </div>
+ </TabItem>
+</Tabs>
+
+## 3. Сборка {#3-compilation}
+
+{/* Knowledge type: Procedure */}
+
+:::tip
+На платформе ARM для сборки рекомендуется использовать только LDB Toolchain. Этот способ применим к версиям Doris после [коммита 7f3564](https://github.com/apache/doris/commit/7f3564cca62de49c9f2ea67fcf735921dbebb4d1).
+:::
+
+Инструкции по загрузке и установке LDB Toolchain приведены в предыдущем разделе. Последующие этапы сборки описаны в документе [Сборка с помощью LDB Toolchain](./compilation-with-ldb-toolchain). JDK и NodeJS необходимо заменить версиями для aarch64 (см. предыдущий раздел).
+
+Если возникают проблемы с загрузкой готовых сторонних библиотек, соберите их самостоятельно с помощью `thirdparty/build-thirdparty.sh`. При сборке сторонних библиотек используйте gcc:
+
+```shell
+export DORIS_TOOLCHAIN=gcc
+```
+
+Следующие параметры сборки работают на ARM иначе, чем на x86_64:
+
+- **AVX2**: `USE_AVX2` применяется только к x86_64, и на ARM его задавать не нужно. Набор инструкций ARM выбирается с помощью `ARM_MARCH` (в версиях 4.0 и новее, значение по умолчанию — `armv8-a+crc`), например: `ARM_MARCH=armv8-a+crc+simd sh build.sh --be`.
+- **libunwind**: В версиях 4.1.3 и более ранних (включая 3.x и 4.0) libunwind не работает на ARM, поэтому перед сборкой необходимо выполнить `export USE_UNWIND=OFF`. Начиная с master (июль 2026 года) и 4.1.4, параметр `USE_UNWIND` удалён ([apache/doris#64093](https://github.com/apache/doris/pull/64093)): libunwind всегда включён на всех платформах Linux, и установка этой переменной больше ни на что не влияет. Входящая в комплект библиотека libunwind 1.6.2 вызывает аварийное завершение BE [...]
+- **Azure**: В версиях 4.1 и более ранних `env.sh` автоматически устанавливает `DISABLE_BUILD_AZURE=ON` на ARM, поэтому ничего задавать не требуется. С августа 2026 года в master ([apache/doris#66908](https://github.com/apache/doris/pull/66908)) библиотеки Azure также собираются на ARM и по умолчанию включаются в BE при компоновке. Чтобы отключить это, задайте `export DISABLE_BUILD_AZURE=ON` (библиотеки не будут включены в BE); при сборке сторонних библиотек `export DISABLE_THIRDPARTY_BU [...]
+
+Если при сборке или запуске по-прежнему возникают проблемы, обратитесь к [часто задаваемым вопросам](#4-faq). Если подходящего решения нет, вы можете [создать issue](https://github.com/apache/doris/issues).
+
+## 4. Часто задаваемые вопросы {#4-faq}
+
+{/* Knowledge type: Troubleshooting */}
+{/* Scenario: Troubleshooting / Compilation failure */}
+
+### 4.1 Проблемы при сборке {#41-compilation-issues}
+
+#### 1. Не удаётся найти каталог при сборке сторонней библиотеки libhdfs3.a {#1-cannot-find-the-directory-when-compiling-the-third-party-library-libhdfs3a}
+
+- Симптом:
+
+ При сборке и установке появляется следующая ошибка:
+
+ > not found lib/libhdfs3.a file or directory
+
+- Причина:
+
+ Не удалось загрузить стороннюю библиотеку, необходимую для сборки.
+
+- Решение:
+
+ Повторно соберите сторонние библиотеки, используя репозиторий для их загрузки.
+
+```shell
+ export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
+ sh /opt/doris/thirdparty/build-thirdparty.sh
+```
+
+`REPOSITORY_URL` содержит исходные пакеты всех сторонних библиотек и их предыдущие версии.
+
+#### 2. Команда python не найдена {#2-python-command-not-found}
+
+- Симптом:
+
+ При выполнении `build.sh` возникает следующее исключение:
+
+ > /opt/doris/env.sh: line 46: python: command not found
+ >
+ > Python 2.7.18
+
+- Причина:
+
+ По умолчанию система вызывает Python с помощью команд вроде `python2.7`, `python3.6`, `python2` или `python3`, но зависимостям Doris нужна команда с именем `python` (подойдёт версия 2.7+).
+
+- Решение:
+
+ Создайте символическую ссылку `/usr/bin/python`.
+
+```shell
+ # Check the python installation directory
+ whereis python
+ # Create the symbolic link
+ sudo ln -s /usr/bin/python2.7 /usr/bin/python
+```
+
+#### 3. После сборки отсутствует каталог output {#3-no-output-directory-after-compilation}
+
+- Симптом:
+
+ После завершения `build.sh` каталог `output` отсутствует в рабочем каталоге.
+
+- Причина:
+
+ Сборка завершилась неудачно. Выполните её повторно.
+
+- Решение:
+
+```shell
+ sh build.sh --clean
+```
+
+#### 4. Ошибка сборки spark-dpp {#4-spark-dpp-compilation-failure}
+
+- Симптом:
+
+ При выполнении `build.sh` возникает ошибка сборки spark-dpp:
+
+ > Failed to execute goal on project spark-dpp
+
+- Причина:
+
+ Репозиторий Maven Central `repo.maven.apache.org` недоступен, поэтому зависимости не удаётся загрузить:
+
+ > Could not transfer artifact org.apache.spark:spark-sql_2.12:jar:2.4.6 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/org/apache/spark/spark-sql_2.12/2.4.6/spark-sql_2.12-2.4.6.jar: Unknown host repo.maven.apache.org
+
+- Решение:
+
+ Проверьте сетевое подключение и повторите сборку.
+
+#### 5. Сбой сборки из-за нехватки свободного места {#5-compilation-fails-due-to-insufficient-free-space}
+
+- Симптом:
+
+ Во время сборки не удаётся собрать объект CXX; появляется сообщение об отсутствии свободного места:
+
+ > fatal error: error writing to /tmp/ccKn4nPK.s: No space left on device
+ >
+ > 1112 | } // namespace doris::vectorized
+ >
+ > compilation terminated.
+
+- Причина:
+
+ На устройстве недостаточно свободного места.
+
+- Решение:
+
+ Освободите место на устройстве, например удалите ненужные файлы.
+
+#### 6. Не найден pkg.m4 в pkg.config {#6-pkgm4-not-found-in-pkgconfig}
+
+- Симптом:
+
+ При сборке появляется ошибка «файл не найден»:
+
+ > Couldn't find pkg.m4 from pkg-config. Install the appropriate package for your distribution or set ACLOCAL_PATH to the directory containing pkg.m4.
+
+ Из журналов видно, что ошибка возникает при сборке сторонней библиотеки `libxml2`.
+
+- Причина:
+
+ При сборке сторонней библиотеки `libxml2` не удаётся найти `pkg.m4`. Возможные причины:
+
+ 1. В Ubuntu возникает проблема при загрузке переменных окружения, из-за чего индекс в каталоге ldb не загружается.
+ 2. Во время сборки libxml2 не удаётся получить переменные окружения, поэтому поиск в каталоге `ldb/aclocal` не выполняется.
+
+- Решение:
+
+ Скопируйте файл `pkg.m4` из `ldb/aclocal` в каталог `libxml2/m4` и повторно соберите сторонние библиотеки:
+
+```shell
+ cp /opt/software/ldb_toolchain/share/aclocal/pkg.m4 /opt/doris/thirdparty/src/libxml2-v2.9.10/m4
+ sh /opt/doris/thirdparty/build-thirdparty.sh
+```
+
+#### 7. Проверка CURL_HAS_TLS_PROXY завершается с ошибкой {#7-test-curl_has_tls_proxy-fails}
+
+- Симптом:
+
+ При сборке сторонних пакетов возникает ошибка:
+
+ > -- Performing Test CURL_HAS_TLS_PROXY - Failed
+ >
+ > CMake Error at cmake/dependencies.cmake:15 (get_property):
+ >
+ > INTERFACE_LIBRARY targets may only have whitelisted properties. The property "LINK_LIBRARIES_ALL" is not allowed.
+
+ Проверка журналов показывает, что не удаётся найти заголовочный файл curl:
+
+ > fatal error: curl/curl.h: No such file or directory
+ >
+ > 2 | #include <curl/curl.h>
+ >
+ > compilation terminated.
+ >
+ > ninja: build stopped: subcommand failed.
+
+- Причина:
+
+ При сборке использовался системный gcc 9.3.0 вместо LDB Toolchain. Необходимо правильно настроить переменные окружения LDB Toolchain.
+
+- Решение:
+
+ Настройте переменные окружения LDB:
+
+```shell
+ # Configure environment variables
+ vim /etc/profile.d/ldb.sh
+ export LDB_HOME=/opt/software/ldb_toolchain
+ export PATH=$LDB_HOME/bin:$PATH
+ # Save, exit, and refresh environment variables
+ source /etc/profile.d/ldb.sh
+ # Test
+ gcc --version
+ > gcc-11
+```
+
+#### 8. Сборка прерывается с сообщением `ninja failed with: signal: killed` {#8-compilation-aborts-with-ninja-failed-with-signal-killed}
+
+- Симптом:
+
+ Сборка BE или сторонних библиотек прерывается в процессе с сообщением, содержащим:
+
+ > ninja failed with: signal: killed
+
+- Причина:
+
+ На машине закончилась оперативная память.
+
+- Решение:
+
+ Используйте для сборки машину с большим объёмом оперативной памяти (не менее 16 GB) или уменьшите число параллельных задач сборки (`-j`).
+
+### 4.2 Проблемы при запуске {#42-startup-issues}
+
+#### 1. FE не запускается, проблема с транзакцией -20 {#1-fe-fails-to-start-transaction--20-issue}
+
+- Симптом:
+
+ При запуске FE возникает ошибка транзакции 20 со статусом UNKNOWN:
+
+ > [BDBEnvironment.setup():198] error to open replicated environment. will exit.
+ >
+ > com.sleepycat.je.rep.ReplicaWriteException: (JE 18.3.12) Problem closing transaction 20. The current state is:UNKNOWN. The node transitioned to this state at:Fri Apr 22 12:48:08 CST 2022
+
+- Причина:
+
+ Недостаточно места на диске.
+
+- Решение:
+
+ Освободите место на диске или смонтируйте новый диск.
+
+#### 2. Исключение при настройке окружения BDB, ошибка поиска диска {#2-bdb-environment-setup-exception-disk-lookup-error}
+
+- Симптом:
+
+ После переноса диска, на котором расположен FE, при запуске FE возникает исключение:
+
+ > 2022-04-22 16:21:44,092 ERROR (MASTER 172.28.7.231_9010_1650606822109(-1)|1) [BDBJEJournal.open():306] catch an exception when setup bdb environment. will exit.
+ >
+ > com.sleepycat.je.DiskLimitException: (JE 18.3.12) Disk usage is not within je.maxDisk or je.freeDisk limits and write operations are prohibited: maxDiskLimit=0 freeDiskLimit=5,368,709,120 adjustedMaxDiskLimit=0 maxDiskOverage=0 freeDiskShortage=1,536,552,960 diskFreeSpace=3,832,156,160 availableLogSize=-1,536,552,960 totalLogSize=4,665 activeLogSize=4,665 reservedLogSize=0 protectedLogSize=0 protectedLogSizeMap={}
+
+- Причина:
+
+ Расположение FE изменилось, и сведения о диске, записанные в метаданных, не соответствуют текущим. Другая возможная причина: диск повреждён или не смонтирован.
+
+- Решение:
+
+ - Убедитесь, что диск исправен, инициализирован и правильно смонтирован.
+ - Восстановите метаданные FE.
+ - В тестовых окружениях можно удалить каталог метаданных и выполнить перезапуск.
+
+#### 3. BE аварийно завершается при запуске с созданием дампа памяти, в стеке вызовов присутствует `libc.so` или `glibc-compatibility/` {#3-be-coredumps-on-startup-with-libcso-or-glibc-compatibility-in-the-core-stack}
+
+- Причина:
+
+ Версия glibc на текущей машине слишком старая. Проверьте её командой `ldd --version`. Эта проблема может возникать в версиях ниже 2.27.
+
+- Решение:
+
+ Повторно соберите BE, добавив следующую переменную окружения:
+
+```shell
+ export GLIBC_COMPATIBILITY=OFF
+```
+
+#### 4. BE на ARM аварийно завершается сразу после запуска с созданием дампа памяти, в стеке вызовов присутствуют `unw_backtrace`, `access_mem`, `is_plt_entry` {#4-be-coredumps-immediately-on-startup-on-arm-with-unw_backtrace-access_mem-is_plt_entry-in-the-core-stack}
+
+- Симптом:
+
+ BE для ARM, собранный из версии 4.1.4 или из master после июля 2026 года, завершается с ошибкой сегментации сразу после `start_be.sh`. В `be.out` отсутствуют строки журнала BE, а стек вызовов в дампе памяти выглядит примерно так (внутренний вызов указан первым):
+
+ ```text
+ access_mem
+ is_plt_entry
+ _ULaarch64_step
+ _ULaarch64_tdep_trace
+ unw_backtrace
+ ...
+ __libc_csu_init
+ ```
+
+ При этом `getconf PAGESIZE` выводит 65536.
+
+- Причина:
+
+ В этих версиях GNU libunwind 1.6.2 статически включается при компоновке на ARM ([apache/doris#64093](https://github.com/apache/doris/pull/64093)). В её коде проверки памяти для AArch64 жёстко задан размер страницы 4 KiB. На ядре со страницами памяти размером 64 KiB все проверки завершаются неудачно, и libunwind разыменовывает неинициализированный адрес ещё до `main()`. Ядра со страницами размером 4 KiB не затронуты, поэтому проблема не воспроизводится на x86_64 и Ubuntu ARM.
+
+- Решение:
+
+ Соберите Doris из кода или используйте выпуск, включающий [apache/doris#67877](https://github.com/apache/doris/pull/67877) (обновление libunwind до 1.8.3); до этого используйте 4.1.3 на ядрах со страницами размером 64 KiB. Сбой происходит до `main()`, поэтому обойти его с помощью настроек `be.conf` невозможно.
+
+### 4.3 Проблемы с другими компонентами {#43-issues-with-other-components}
+
+- Симптом
+
+ Если появляются сообщения об ошибках для любого из следующих компонентов, воспользуйтесь общим решением, приведённым ниже:
+
+ - bison: ошибка fseterr.c при установке bison-3.0.4
+ - flex: команда flex не найдена
+ - cmake: команда cmake не найдена / cmake не может найти зависимые библиотеки / cmake не может найти CMAKE_ROOT / cmake не может найти компилятор, заданный в переменной окружения CXX
+ - boost: ошибка сборки движка Boost.Build
+ - mysql: не удаётся найти файл .a клиентской зависимости mysql
+ - gcc: требуется GCC 11+
+
+- Причина
+
+ При сборке не использовался нужный LDB Toolchain.
+
+- Решение
+
+ - Проверьте, настроены ли переменные окружения LDB Toolchain.
+ - Проверьте, соответствует ли версия gcc рекомендуемой в документе [Сборка с помощью LDB Toolchain](./compilation-with-ldb-toolchain).
+ - Удалите каталог ldb, созданный при выполнении `ldb_toolchain_gen.aarch64.sh`, запустите скрипт повторно, настройте переменные окружения и проверьте версию gcc.
+
+## Связанные документы {#related-documents}
+
+- [Сборка с помощью LDB Toolchain](./compilation-with-ldb-toolchain)
+- [Сборка с помощью образа Docker](./compilation-with-docker)
+- [Сборка непосредственно в Linux](./compilation-linux)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-linux.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-linux.md
new file mode 100644
index 000000000000..71f3677b387b
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-linux.md
@@ -0,0 +1,132 @@
+---
+title: Компиляция Apache Doris непосредственно в Linux
+language: ru
+description: "Компиляция Apache Doris непосредственно в Linux: JDK, зависимости, проверка поддержки набора инструкций AVX2 и команды сборки."
+keywords:
+ - Компиляция в Linux
+ - Apache Doris
+ - Компиляция из исходного кода
+ - Ubuntu
+ - JDK 17
+ - AVX2
+ - build.sh
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: First-time compilation / compiling directly on a physical machine -->
+
+В этом документе описано, как скомпилировать Apache Doris непосредственно в Linux (на примере Ubuntu 24.04 или более поздней версии), без использования образа Docker или LDB Toolchain.
+
+## Целевая аудитория, преимущества и недостатки {#target-audience-pros-and-cons}
+
+| Критерий | Описание |
+| ---- | ---- |
+| Целевая аудитория | Разработчики, использующие современный дистрибутив (например, Ubuntu 24.04+) и желающие работать с GCC, входящим в его состав |
+| Преимущества | Минимум действий; установка зависимостей напрямую через системный менеджер пакетов |
+| Недостатки | В старых дистрибутивах сборка может завершиться ошибкой из-за слишком старой версии GCC или glibc. В этом случае используйте [LDB Toolchain](./compilation-with-ldb-toolchain) |
+
+## Требования к окружению {#environment-requirements}
+
+<!-- Knowledge type: Hardware requirements -->
+
+| Компонент | Требования к версии |
+| ---- | -------- |
+| Операционная система | Ubuntu 24.04+ (или сопоставимая версия другого дистрибутива) |
+| JDK | 8+ (для версии 2.1 и более ранних); 17 (для версии 3.0 и более поздних или ветки master) |
+| GCC | 10+ |
+| Python | 2.7+ |
+| Apache Maven | 3.5+ |
+| CMake | 3.19.2+ |
+| Bison | 3.0+ |
+
+## 1. Установите JDK {#1-install-jdk}
+
+<!-- Knowledge type: Procedure -->
+
+Выберите JDK в зависимости от версии Doris, которую собираетесь компилировать:
+
+```bash
+# To compile Doris 2.1 or earlier, install JDK 8
+sudo apt install openjdk-8-jdk
+
+# To compile Doris 3.0 or later, or the master branch, install JDK 17
+sudo apt install openjdk-17-jdk
+```
+
+## 2. Установите системные зависимости {#2-install-system-dependencies}
+
+```bash
+sudo apt install build-essential maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python
+sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
+sudo apt update
+sudo apt install gcc-10 g++-10
+sudo apt-get install autoconf automake libtool autopoint
+```
+
+## 3. Проверьте, поддерживает ли CPU AVX2 {#3-check-whether-the-cpu-supports-avx2}
+
+```bash
+cat /proc/cpuinfo | grep avx2
+```
+
+Непустой вывод означает, что CPU поддерживает AVX2 и можно использовать параметры компиляции по умолчанию. В противном случае добавьте `USE_AVX2=0` к команде сборки.
+
+## 4. Запустите сборку {#4-run-the-build}
+
+```bash
+# Default build, producing AVX2-enabled artifacts
+sh build.sh
+
+# When the CPU does not support AVX2, append USE_AVX2=0
+USE_AVX2=0 sh build.sh
+
+# Build a Debug version of BE
+BUILD_TYPE=Debug sh build.sh
+```
+
+## 5. Найдите результаты сборки {#5-locate-the-build-artifacts}
+
+После завершения сборки её результаты находятся в каталоге `output/` в корне дерева исходного кода.
+
+## Часто задаваемые вопросы {#faq}
+
+### Q1: Можно ли выполнять компиляцию напрямую в старых версиях Ubuntu или CentOS? {#q1-can-older-versions-of-ubuntu-or-centos-compile-directly}
+
+Старые дистрибутивы обычно поставляются со слишком старыми версиями GCC и glibc. Используйте [LDB Toolchain](./compilation-with-ldb-toolchain) или [образ Docker](./compilation-with-docker).
+
+### Q2: При сборке появляется сообщение `AVX2 not supported`. {#q2-the-build-reports-avx2-not-supported}
+
+CPU не поддерживает набор инструкций AVX2. Повторите сборку с помощью `USE_AVX2=0 sh build.sh` и скачайте предварительно собранные сторонние библиотеки серии `no-avx2`.
+
+### Q3: Сборка завершается ошибкой `Too many open files`. {#q3-the-build-fails-with-too-many-open-files}
+
+Увеличьте лимит файловых дескрипторов для каждого процесса командой `ulimit -n 65536` или задайте его на постоянной основе в `/etc/security/limits.conf`.
+
+### Q4: Сборка принудительно прерывается из-за нехватки памяти. {#q4-the-build-is-killed-midway-due-to-insufficient-memory}
+
+Сообщение `ninja failed with: signal: killed` обычно указывает на нехватку памяти (OOM). Используйте машину с объёмом памяти не менее 16 ГБ или уменьшите степень параллелизма (параметр `-j`).
+
+## Связанные документы {#related-documents}
+
+- [Компиляция с помощью LDB Toolchain](./compilation-with-ldb-toolchain)
+- [Компиляция с использованием образа Docker](./compilation-with-docker)
+- [Компиляция на ARM](./compilation-arm)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-mac.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-mac.md
new file mode 100644
index 000000000000..103275466928
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-mac.md
@@ -0,0 +1,231 @@
+---
+title: Компиляция Apache Doris в macOS
+language: ru
+description: Скомпилируйте Apache Doris в macOS (Intel / Apple Silicon) и подготовьте среду для локальной отладки.
+keywords:
+ - компиляция в macOS
+ - Apple Silicon
+ - Intel Mac
+ - Apache Doris
+ - компиляция из исходного кода
+ - Homebrew
+ - Thrift
+ - JDK 17
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Local development / macOS debugging -->
+
+# Компиляция в macOS {#compiling-on-macos}
+
+В этом документе описано, как установить зависимости, скомпилировать Apache Doris из исходного кода, запустить его и подготовить среду для локальной отладки в macOS (Intel и Apple Silicon).
+
+:::tip
+Компиляция и развёртывание в режиме с разделением вычислений и хранения пока не поддерживаются в macOS.
+:::
+
+## 1. Требования к среде {#1-environment-requirements}
+
+- macOS 12 (Monterey) или более поздняя версия (поддерживаются Intel и Apple Silicon)
+- [Homebrew](https://brew.sh/)
+- JDK 8 или JDK 17 (в настоящее время Doris поддерживает только эти две версии)
+
+## 2. Установка зависимостей {#2-install-dependencies}
+
+Установите основные зависимости с помощью Homebrew:
+
+```Shell
+brew install automake autoconf libtool pkg-config texinfo coreutils gnu-getopt \
+python@3 cmake ninja ccache bison byacc gettext wget pcre maven llvm@22 llvm@20 openjdk@17 npm
+```
+
+> Необходимы обе версии LLVM. `llvm@22` используется для компиляции BE (LLVM 22.1.8 стал первым выпуском, в котором среда выполнения AddressSanitizer запускается в macOS 26.4 и более поздних версиях). `llvm@20` используется для компиляции сторонних библиотек при их сборке из исходного кода: `thirdparty/build-thirdparty.sh` завершает работу, если эта версия отсутствует, а `build.sh` автоматически запускает такую сборку, когда в `thirdparty/installed` нет нужной ему библиотеки. Скрипты сбо [...]
+
+> В версии brew для arm64 в macOS по умолчанию нет JDK 8, поэтому рекомендуется использовать `openjdk@17`. Если вам нужен JDK 8, установите [Zulu JDK 8](https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk#zulu) вручную. Maven также можно скачать отдельно с [сайта Maven](https://maven.apache.org/download.cgi) и настроить с помощью переменных окружения.
+
+Для некоторых зависимостей на Apple Silicon также нужно вручную настроить переменные окружения:
+
+```Shell
+export PATH="/opt/homebrew/opt/bison/bin:$PATH"
+export PATH="/opt/homebrew/opt/texinfo/bin:$PATH"
+ln -s -f /opt/homebrew/bin/python3 /opt/homebrew/bin/python
+```
+
+## 3. Получение исходного кода и настройка DORIS_HOME {#3-pull-the-source-code-and-set-doris_home}
+
+```Shell
+cd ~
+mkdir DorisDev && cd DorisDev
+git clone https://github.com/apache/doris.git
+
+export DORIS_HOME=~/DorisDev/doris
+export PATH=$DORIS_HOME/bin:$PATH
+```
+
+## 4. (Необязательно) Отдельная установка Thrift {#4-optional-install-thrift-separately}
+
+Отдельная установка Thrift требуется только для отладки FE без BE. При отладке BE и FE Thrift уже входит в состав сторонних библиотек BE.
+
+```Shell
+brew install thrift@0.16.0
+
+mkdir -p ./thirdparty/installed/bin
+
+# Apple Silicon
+ln -s /opt/homebrew/Cellar/thrift@0.16.0/0.16.0/bin/thrift ./thirdparty/installed/bin/thrift
+
+# Intel
+ln -s /usr/local/Cellar/thrift@0.16.0/0.16.0/bin/thrift ./thirdparty/installed/bin/thrift
+```
+
+Если при выполнении `brew install thrift@0.16.0` сообщается, что версия не найдена, выполните следующие команды:
+
+```Shell
+brew tap homebrew/core --force
+brew tap-new $USER/local-tap
+brew extract --version='0.16.0' thrift $USER/local-tap
+brew install thrift@0.16.0
+```
+
+Подробнее: <https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c>
+
+## 5. Ускорение сборки с помощью готовых сторонних библиотек (рекомендуется) {#5-speed-up-the-build-with-prebuilt-third-party-libraries-recommended}
+
+Вы можете скачать готовые сторонние библиотеки, предоставленные сообществом, чтобы пропустить их компиляцию:
+
+```Shell
+cd thirdparty
+rm -rf installed
+
+# Intel chip
+curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-x86_64.tar.xz \
+ -o - | tar -Jxf -
+
+# Apple Silicon chip
+curl -L https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuilt-darwin-arm64.tar.xz \
+ -o - | tar -Jxf -
+
+# Verify that protoc and thrift run correctly
+cd installed/bin
+./protoc --version
+./thrift --version
+```
+
+> Если при запуске `protoc` и `thrift` появляется сообщение **невозможно открыть, так как не удаётся проверить разработчика**, перейдите в `Security & Privacy → General` и нажмите `Open Anyway`. Подробнее: <https://support.apple.com/zh-cn/HT202491>
+
+Вы также можете скачать исходный код сторонних библиотек [doris-thirdparty-source.tgz](https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz) со страницы [Готовые сторонние библиотеки Apache Doris](https://github.com/apache/doris-thirdparty/releases/tag/automation) и скомпилировать их самостоятельно.
+
+## 6. Настройка лимита файловых дескрипторов {#6-adjust-the-file-handle-limit}
+
+```Shell
+ulimit -n 65536
+
+# Write to the startup script so it takes effect automatically next time the terminal opens
+# bash
+echo 'ulimit -n 65536' >>~/.bashrc
+# zsh
+echo 'ulimit -n 65536' >>~/.zshrc
+```
+
+## 7. Компиляция {#7-compile}
+
+```Shell
+cd $DORIS_HOME
+bash build.sh
+```
+
+## 8. Запуск BE / FE {#8-start-be--fe}
+
+```Shell
+cd output/be/bin && ./start_be.sh --daemon
+cd output/fe/bin && ./start_fe.sh --daemon
+```
+
+## 9. Настройка среды локальной отладки {#9-configure-the-local-debugging-environment}
+
+```Shell
+# Copy the build output to use as the runtime directory
+cp -r output ../doris-run
+```
+
+Затем внесите следующие изменения в `conf` для FE / BE:
+
+1. Настройте IP и каталоги
+2. Дополнительно задайте `min_file_descriptor_number = 10000` для BE
+
+Далее настройте отладку в своей IDE:
+
+- [Настройка среды разработки FE - IntelliJ IDEA](../developer-guide/fe-idea-dev)
+- [Настройка среды разработки BE - CLion](../developer-guide/be-clion-dev) (см. «Вариант 2: Локальная разработка в macOS»)
+
+## Часто задаваемые вопросы {#faq}
+
+### CMake не может найти OpenMP {#cmake-cannot-find-openmp}
+
+При компиляции BE CMake может не найти OpenMP и сообщить о следующих ошибках:
+
+```text
+Could NOT find OpenMP_C (missing: OpenMP_C_FLAGS OpenMP_C_LIB_NAMES)
+fatal error: 'omp.h' file not found
+```
+
+Установите `libomp`, затем убедитесь, что установленный через Homebrew пакет содержит `omp.h`:
+
+```Shell
+brew install libomp
+LIBOMP_PREFIX="$(brew --prefix libomp)"
+test -f "${LIBOMP_PREFIX}/include/omp.h"
+```
+
+Добавьте следующие переменные окружения в `custom_env.sh` в корневом каталоге исходного кода Doris:
+
+```Shell
+LIBOMP_PREFIX="$(brew --prefix libomp)"
+export CPPFLAGS="-I${LIBOMP_PREFIX}/include ${CPPFLAGS:-}"
+export CFLAGS="-I${LIBOMP_PREFIX}/include ${CFLAGS:-}"
+export CXXFLAGS="-I${LIBOMP_PREFIX}/include ${CXXFLAGS:-}"
+export LDFLAGS="-L${LIBOMP_PREFIX}/lib ${LDFLAGS:-}"
+export EXTRA_CXX_FLAGS="-I${LIBOMP_PREFIX}/include ${EXTRA_CXX_FLAGS:-}"
+```
+
+Файл `be/CMakeLists.txt` сбрасывает `CMAKE_C_FLAGS` и `CMAKE_CXX_FLAGS`, поэтому при проверках OpenMP в CMake значения `CPPFLAGS`, `CFLAGS` и `CXXFLAGS` могут не учитываться. `EXTRA_CXX_FLAGS` передаёт путь к заголовочным файлам `libomp` в сборку BE и необходим для этого обходного решения.
+
+`custom_env.sh` содержит локальные настройки сборки. Не добавляйте этот файл в репозиторий.
+
+### Сборка завершается ошибкой из-за слишком новой версии Node.js {#compilation-fails-due-to-nodejs-version-too-high}
+
+Сообщение об ошибке:
+
+```
+opensslErrorStack: ['error:03000086:digital envelope routines::initialization error']
+library: 'digital envelope routines'
+reason: 'unsupported'
+code: 'ERR_OSSL_EVP_UNSUPPORTED'
+```
+
+Решение:
+
+```Shell
+export NODE_OPTIONS=--openssl-legacy-provider
+```
+
+Подробнее: <https://stackoverflow.com/questions/74726224/opensslerrorstack-error03000086digital-envelope-routinesinitialization-e>
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-win.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-win.md
new file mode 100644
index 000000000000..40869dba83c1
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-win.md
@@ -0,0 +1,112 @@
+---
+title: Компиляция Apache Doris в Windows (WSL2)
+language: ru
+description: Порядок компиляции Apache Doris в Windows с помощью WSL2.
+keywords:
+ - компиляция в Windows
+ - WSL2
+ - WSL
+ - Apache Doris
+ - компиляция из исходного кода
+ - подсистема Linux
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: Windows development machine / WSL2 compilation -->
+
+В этом документе описана компиляция исходного кода Apache Doris на платформе Windows. Doris не поддерживает нативную компиляцию непосредственно в Windows, но с помощью WSL2 (Windows Subsystem for Linux 2) можно запустить подсистему Linux в Windows и выполнить сборку по инструкции для Linux.
+
+:::tip
+Способ с использованием Windows + WSL2 в настоящее время не поддерживает компиляцию и развёртывание для режима разделения хранения и вычислений.
+:::
+
+## Для кого предназначено, преимущества и недостатки {#target-users-pros-and-cons}
+
+| Критерий | Описание |
+| ---- | ---- |
+| Целевая аудитория | Разработчики, которые работают на компьютере с Windows и которым необходимо компилировать и отлаживать Doris |
+| Преимущества | Не требуется система с двойной загрузкой или дополнительный сервер Linux; компиляцию можно выполнять локально |
+| Недостатки | Требуется Windows 10 2004+ или Windows 11, а также определённый объём дискового пространства |
+
+## 1. Требования к среде {#1-environment-requirements}
+
+<!-- Knowledge type: Hardware requirements -->
+
+| Параметр | Требование |
+| ---- | ---- |
+| Версия Windows | Windows 10 2004 (сборка 19041) или более поздняя либо Windows 11 |
+| Версия WSL | WSL2 (рекомендуется дистрибутив Ubuntu 22.04 или Ubuntu 24.04) |
+| Дисковое пространство | Рекомендуется не менее 50 ГБ свободного места (для исходного кода, сторонних библиотек и артефактов сборки) |
+
+## 2. Порядок компиляции {#2-compilation-steps}
+
+### 2.1 Установка WSL2 {#21-install-wsl2}
+
+Ознакомьтесь с официальным [руководством Microsoft по установке WSL](https://learn.microsoft.com/en-us/windows/wsl/install) и выполните следующую команду в PowerShell:
+
+```powershell
+wsl --install
+```
+
+После завершения установки перезагрузите систему и следуйте подсказкам для первоначальной настройки подсистемы Linux (задайте имя пользователя и пароль).
+
+### 2.2 Компиляция Doris в WSL2 {#22-compile-doris-in-wsl2}
+
+Войдите в подсистему Linux, запущенную с помощью WSL2, и выберите один из следующих способов компиляции:
+
+- [Компиляция с помощью LDB Toolchain (рекомендуется)](./compilation-with-ldb-toolchain)
+- [Компиляция с помощью образа Docker (рекомендуется)](./compilation-with-docker)
+- [Компиляция непосредственно в Linux](./compilation-linux)
+
+## 3. Примечания {#3-notes}
+
+- **Диск для хранения данных**: по умолчанию данные дистрибутива WSL2 хранятся на диске C. Если на диске C мало свободного места, перенесите данные WSL2 на другой диск перед установкой, чтобы не заполнить системный диск. Для переноса см. команды [экспорта и импорта WSL](https://learn.microsoft.com/en-us/windows/wsl/basic-commands#export-a-distribution-to-a-tar-file).
+- **Ограничения ресурсов**: по умолчанию WSL2 использует оперативную память хоста. Если процесс компиляции часто принудительно завершается из-за нехватки памяти, увеличьте ограничения `memory` и `processors` в `%UserProfile%\.wslconfig`.
+- **Файловая система**: разместите исходный код в файловой системе ext4 внутри WSL2 (например, в `~/doris`), а не по подключённому пути `/mnt/c/...`. Доступ между файловыми системами сильно замедляет компиляцию.
+
+## Часто задаваемые вопросы {#faq}
+
+### Вопрос 1: установка WSL2 завершается ошибкой «Необходимо обновить Windows»? {#q1-wsl2-installation-fails-with-windows-needs-to-be-updated}
+
+Обновите Windows до версии 10 2004 (сборка 19041) или более поздней либо сразу используйте Windows 11.
+
+### Вопрос 2: компиляция в WSL2 выполняется очень медленно? {#q2-wsl2-compilation-is-extremely-slow}
+
+Убедитесь, что исходный код находится во внутренней файловой системе WSL2 (например, в `~/doris`), а не в `/mnt/c/...`. Доступ между файловыми системами значительно замедляет компиляцию.
+
+### Вопрос 3: WSL2 занимает всю оперативную память хоста? {#q3-wsl2-uses-up-all-the-host-memory}
+
+Ограничьте использование ресурсов WSL2 в `%UserProfile%\.wslconfig`:
+
+```ini
+[wsl2]
+memory=12GB
+processors=8
+```
+
+После изменения файла выполните `wsl --shutdown`, чтобы перезапустить WSL2 и применить изменения.
+
+## Связанные документы {#related-documents}
+
+- [Компиляция с помощью LDB Toolchain](./compilation-with-ldb-toolchain)
+- [Компиляция с помощью образа Docker](./compilation-with-docker)
+- [Компиляция непосредственно в Linux](./compilation-linux)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-docker.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-docker.md
new file mode 100644
index 000000000000..854a43d6157a
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-docker.md
@@ -0,0 +1,211 @@
+---
+title: Компиляция Apache Doris с помощью образов Docker
+language: ru
+description: Компиляция исходного кода Apache Doris с помощью официального образа Docker без необходимости вручную настраивать thirdparty или toolchain.
+keywords:
+ - Компиляция с Docker
+ - Apache Doris
+ - Компиляция из исходного кода
+ - build-env
+ - AVX2
+ - JDK 8
+ - JDK 17
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Applicable scenario: First-time compilation / Environment validation -->
+
+В этом документе описано, как скомпилировать исходный код Doris с помощью официального образа Apache Doris для сборки. Сообщество поддерживает образ и оперативно обновляет его зависимости, поэтому вручную устанавливать toolchain и сторонние библиотеки не требуется. Этот способ компиляции **рекомендуется в первую очередь**.
+
+:::tip
+При использовании образа Docker компиляция и развёртывание в режиме разделения хранения и вычислений пока не поддерживаются.
+:::
+
+## Целевая аудитория, преимущества и недостатки {#target-audience-pros-and-cons}
+
+| Критерий | Описание |
+| ---- | ---- |
+| Целевая аудитория | Разработчики, которым нужно быстро подготовить среду сборки без ручной настройки зависимостей |
+| Преимущества | Образ содержит предустановленные thirdparty, toolchain и JDK и сразу готов к использованию |
+| Недостатки | На локальной машине требуется рабочая среда Docker; образ занимает довольно много места (около 3.3 ГБ) |
+
+Если Docker недоступен на машине, воспользуйтесь [компиляцией с LDB Toolchain](./compilation-with-ldb-toolchain).
+
+## 1. Установка Docker {#1-install-docker}
+
+В CentOS установите Docker напрямую через менеджер пакетов:
+
+```bash
+yum install docker
+```
+
+Для других дистрибутивов см. [официальное руководство по установке Docker](https://docs.docker.com/engine/install/).
+
+## 2. Выбор и загрузка образа для сборки {#2-choose-and-download-the-build-image}
+
+<!-- Knowledge type: Configuration parameters -->
+
+Для разных версий Doris предназначены разные образы для сборки. `apache/doris:build-env-ldb-toolchain-latest` используется для компиляции кода ветки master и непрерывно обновляется вместе с основной веткой.
+
+| Тег образа | Совместимая версия Doris | Примечания |
+| -------- | --------------- | ---- |
+| `apache/doris:build-env-for-2.0` | 2.0.x | Поддерживает набор инструкций AVX2 |
+| `apache/doris:build-env-for-2.0-no-avx2` | 2.0.x | Совместим с CPU без поддержки AVX2 |
+| `apache/doris:build-env-for-2.1` | 2.1.x | Поддерживает набор инструкций AVX2 |
+| `apache/doris:build-env-for-2.1-no-avx2` | 2.1.x | Совместим с CPU без поддержки AVX2 |
+| `apache/doris:build-env-for-3.0` | 3.0.x | Поддерживает набор инструкций AVX2 |
+| `apache/doris:build-env-for-3.0-no-avx2` | 3.0.x | Совместим с CPU без поддержки AVX2 |
+| `apache/doris:build-env-for-3.1` | 3.1.x | Поддерживает набор инструкций AVX2 |
+| `apache/doris:build-env-for-3.1-no-avx2` | 3.1.x | Совместим с CPU без поддержки AVX2 |
+| `apache/doris:build-env-ldb-toolchain-latest` | master | Соответствует основной ветке |
+| `apache/doris:build-env-ldb-toolchain-no-avx2-latest` | master | Совместим с CPU без поддержки AVX2 |
+
+На примере компиляции Doris 2.0 загрузим и проверим образ:
+
+```bash
+# You can also use docker.io/apache/doris:build-env-for-2.0
+docker pull apache/doris:build-env-for-2.0
+
+# Confirm that the image has been downloaded successfully
+docker images
+# REPOSITORY TAG IMAGE ID CREATED SIZE
+# apache/doris build-env-for-2.0 f29cf1979dba 3 days ago 3.3GB
+```
+
+### Примечания по выбору образа {#notes-on-image-selection}
+
+- Теги образов однозначно соответствуют версиям Doris. Выбирайте образ, соответствующий целевой ветке, и избегайте компиляции с образом для другой версии.
+- Сторонние библиотеки в образах `no-avx2` могут работать на CPU без поддержки AVX2. Их необходимо компилировать с параметром `USE_AVX2=0`.
+- Историю изменений образов см. в [журнале изменений thirdparty](https://github.com/apache/doris/blob/master/thirdparty/CHANGELOG.md).
+- Последняя версия образа `apache/doris:build-env-ldb-toolchain-latest` (на данный момент поддерживает только архитектуру x86_64) включает JDK 8 и JDK 17. Для версий 2.1 и более ранних используйте JDK 8, а для версий 3.0 и более поздних или ветки master используйте JDK 17.
+- При компиляции с помощью Docker на архитектуре ARM64 сначала загрузите базовый образ Linux, совместимый с ARM64 (например, `apache/doris:base-latest`, который соответствует Ubuntu 22.04.5 LTS), а затем установите зависимости и выполните компиляцию по инструкциям из документов [Прямая компиляция в Linux](./compilation-linux) и [Компиляция на платформе ARM](./compilation-arm).
+
+Внутри контейнера переключайте JDK с помощью переменных окружения:
+
+```bash
+# Switch to JDK 8
+export JAVA_HOME=/usr/lib/jvm/java-1.8.0
+export PATH=$JAVA_HOME/bin/:$PATH
+
+# Switch to JDK 17
+export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2/
+export PATH=$JAVA_HOME/bin/:$PATH
+```
+
+## 3. Компиляция Doris {#3-compile-doris}
+
+<!-- Knowledge type: Procedure -->
+
+### 3.1 Загрузка исходного кода Doris {#31-download-the-doris-source-code}
+
+На хосте загрузите код нужной ветки (в примере используется branch-2.0):
+
+```bash
+git clone -b branch-2.0 https://github.com/apache/doris.git
+```
+
+Предположим, что исходный код находится в каталоге `~/doris-branch-2.0`.
+
+### 3.2 Запуск контейнера для сборки {#32-start-the-build-container}
+
+```bash
+# Prepare the maven .m2 directory on the host in advance so that Java dependencies can be reused across multiple builds
+mkdir ~/.m2
+
+# Mount the source code and the .m2 directory, then start the build image
+docker run -it --network=host \
+ --name mydocker \
+ -v ~/.m2:/root/.m2 \
+ -v ~/doris-branch-2.0:/root/doris-branch-2.0/ \
+ apache/doris:build-env-for-2.0
+
+# After the command runs successfully, it enters the container automatically
+```
+
+Назначение основных параметров `docker run`:
+
+| Параметр | Назначение |
+| ---- | ---- |
+| `-v` | Подключает каталог хоста к контейнеру для сохранения исходного кода и зависимостей |
+| `--name` | Задаёт имя контейнера для удобства дальнейшего управления |
+| `--network` | Задаёт сетевой режим контейнера. `host` использует общий сетевой стек с хостом и не требует проброса портов |
+
+Рекомендации:
+
+- Всегда подключайте каталог с исходным кодом Doris, чтобы артефакты сборки оставались на хосте и не терялись после завершения работы контейнера.
+- Подключайте каталог `.m2`, чтобы не загружать зависимости Maven повторно при каждом запуске контейнера.
+- Для загрузки сторонних библиотек внутри контейнера требуется доступ в интернет. Рекомендуется использовать режим `--network=host`.
+
+### 3.3 Выполнение сборки {#33-run-the-build}
+
+В контейнере перейдите в каталог исходного кода и выполните:
+
+```bash
+# By default, compile artifacts that support AVX2
+sh build.sh
+
+# When the CPU does not support AVX2, append USE_AVX2=0
+USE_AVX2=0 sh build.sh
+
+# Compile the Debug version of BE
+BUILD_TYPE=Debug sh build.sh
+```
+
+По завершении сборки артефакты будут находиться в подкаталоге `output/` каталога с исходным кодом.
+
+:::tip
+**Как проверить, поддерживает ли машина набор инструкций AVX2?**
+
+```bash
+cat /proc/cpuinfo | grep avx2
+```
+
+Непустой вывод означает, что AVX2 поддерживается.
+:::
+
+## 4. Создание собственного образа для разработки {#4-build-your-own-development-image}
+
+Чтобы настроить базовый образ под свои задачи (например, выбрать другой базовый дистрибутив или добавить инструменты отладки), обратитесь к файлу `docker/README.md` в исходном коде.
+
+## Часто задаваемые вопросы {#faq}
+
+### Вопрос 1: Что произойдёт, если версия образа не соответствует версии Doris? {#q1-what-happens-if-the-image-version-does-not-match-the-doris-version}
+
+Библиотеки thirdparty и toolchain в образе тесно связаны с исходным кодом Doris. Использование компонентов разных версий с высокой вероятностью приведёт к ошибкам компоновки, таким как `undefined reference` или `incompatible library`, во время компиляции. Выбирайте образ строго по таблице.
+
+### Вопрос 2: При сборке появляется сообщение `AVX2 not supported`? {#q2-the-build-reports-avx2-not-supported}
+
+CPU хоста или целевой машины, на которой будет запускаться Doris, не поддерживает набор инструкций AVX2. Перейдите на образ с суффиксом `no-avx2` и задайте `USE_AVX2=0` при сборке.
+
+### Вопрос 3: Образ загружается слишком медленно с помощью `docker pull`? {#q3-docker-pull-is-too-slow-to-pull-the-image}
+
+Настройте зеркало Docker для ускорения загрузки образов или используйте полный путь `docker.io/apache/doris:...`.
+
+### Вопрос 4: В контейнере не удаётся загрузить библиотеки Java? {#q4-java-library-downloads-fail-inside-the-container}
+
+Убедитесь, что контейнер запущен с параметром `--network=host`, а каталог `~/.m2` подключён к контейнеру, чтобы прокси или сетевая изоляция не препятствовали доступу к центральному репозиторию Maven.
+
+## Связанные документы {#related-documents}
+
+- [Компиляция с LDB Toolchain](./compilation-with-ldb-toolchain)
+- [Прямая компиляция в Linux](./compilation-linux)
+- [Компиляция на платформах ARM](./compilation-arm)
diff --git a/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-ldb-toolchain.md b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-ldb-toolchain.md
new file mode 100644
index 000000000000..d9321239219f
--- /dev/null
+++ b/i18n/ru/docusaurus-plugin-content-docs-community/current/source-install/compilation-with-ldb-toolchain.md
@@ -0,0 +1,217 @@
+---
+title: Компиляция Apache Doris с помощью LDB Toolchain
+language: ru
+description: Компиляция Apache Doris в Linux с помощью LDB Toolchain. Подробные инструкции по установке набора инструментов и сборке.
+keywords:
+ - LDB Toolchain
+ - Apache Doris
+ - компиляция из исходного кода
+ - компиляция в Linux
+ - предварительно собранные сторонние библиотеки
+ - AVX2
+---
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<!-- Knowledge type: Procedure -->
+<!-- Use case: First-time compilation / No Docker environment -->
+
+В этом документе описано, как скомпилировать Apache Doris в Linux с помощью LDB Toolchain. Этот способ дополняет [компиляцию с использованием образа Docker](./compilation-with-docker) и подходит разработчикам, у которых нет среды Docker.
+
+:::tip
+Название LDB Toolchain расшифровывается как **Linux Distribution Based Toolchain Generator**. Это автономный, переносимый и современный набор инструментов для компиляции C++, позволяющий собирать современные проекты C++ практически в любом дистрибутиве Linux.
+:::
+
+Благодарим [Amos Bird](https://github.com/amosbird) за вклад в проект.
+
+## Соответствие версий {#version-mapping}
+
+<!-- Knowledge type: Configuration parameters -->
+
+| Версия Doris | Рекомендуемая версия LDB Toolchain | Компиляторы в составе набора |
+| ---------- | ----------------------- | ---------- |
+| master | 0.25 | clang-20, gcc-15 |
+| 3.1 / 3.0 / 2.1 | 0.19 | clang-17, gcc-13 |
+
+## Целевая аудитория, преимущества и недостатки {#target-audience-pros-and-cons}
+
+| Аспект | Описание |
+| ---- | ---- |
+| Целевая аудитория | Разработчики без среды Docker, которые хотят выполнять компиляцию непосредственно на физической или виртуальной машине |
+| Преимущества | Нет зависимости от Docker; набор инструментов автономен и не затрагивает системный компилятор |
+| Недостатки | Java, Maven, Node и системные зависимости необходимо устанавливать вручную |
+
+## 1. Подготовка среды компиляции {#1-prepare-the-compilation-environment}
+
+<!-- Knowledge type: Procedure -->
+<!-- Use case: First-time compilation -->
+
+Инструкции подходят для большинства дистрибутивов Linux (CentOS, Ubuntu и других).
+
+### 1.1 Скачивание `ldb_toolchain_gen.sh` {#11-download-ldb_toolchain_gensh}
+
+Скачайте соответствующую версию со страницы [релизов ldb_toolchain_gen](https://github.com/amosbird/ldb_toolchain_gen/releases):
+
+- Архитектура x86_64: скачайте `ldb_toolchain_gen.sh`
+- Архитектура ARM: скачайте `ldb_toolchain_gen.aarch64.sh`
+
+:::tip
+Главная страница проекта: <https://github.com/amosbird/ldb_toolchain_gen>
+:::
+
+### 1.2 Создание LDB Toolchain {#12-generate-the-ldb-toolchain}
+
+Запустите скрипт для создания набора инструментов:
+
+```bash
+bash ldb_toolchain_gen.sh /path/to/ldb_toolchain/
+```
+
... 1668 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org