[blog] Add five technical posts and automate Recent posts (#4606) Adds five complete English technical posts and replaces the fixed article-footer recommendations with the latest published posts from Docusaurus blog metadata. ## Changes - Add articles covering Lance vector search, incremental computing in Doris 5.0, Lance lazy materialization, Doris + Vane, and Peer Read. Include 34 compressed images, with new covers and English versions of Chinese diagrams and charts. Remove commercial promotion while retaining the anonymized Doris cloud service benchmark. - Generate Recent posts automatically by publication date, showing up to four articles and excluding the current article, drafts, and unlisted posts. Preserve native localized links and English fallback titles. - Update the publishing guide and localized section headings. Refresh the affected translation target digests without changing source hashes or review status. ## Validation - All five posts passed Docusaurus Markdown compilation, front matter, heading, local image, and link checks. - `node --test config/recent-blogs-plugin.test.cjs`: 4 tests passed, covering ordering, visibility, localization, duplicate routes, empty lists, and newly added articles. - Verified English and Chinese navigation, current-article exclusion, publication-date hot reload, mobile layout, theme tokens, and translation publication-state checks in local development. - `git diff --check` passed. No production site build was run, following the blog publishing guide. ## Versions Not applicable: this PR changes blog content and shared blog rendering, with no versioned documentation changes. - [ ] dev - [ ] 4.x - [ ] 3.x - [ ] 2.1 or older (not covered by version/language sync gate) ## Languages - [x] Chinese - [x] English The articles are English translations of the supplied Chinese sources. Section headings are updated for Chinese, Japanese, Korean, and Russian; no localized article copies are added. ## Docs Checklist - [x] Checked by AI - [x] Test Cases Built - [x] Updated required version and language counterparts, or explained why not - [x] If only one language changed, confirmed whether source/translation counterparts need sync --------- Co-authored-by: morningman <moringman@apache.org>
Source code for doris.apache.org, built with Docusaurus 3.
Use local_dev.sh to run the site locally. It handles dependency installation, version filtering, and memory settings automatically.
# Start English dev server (default: only 'current' version, 2 GB memory) ./local_dev.sh # Start Chinese dev server ./local_dev.sh start-zh # Start on a custom port ./local_dev.sh start --port 8080 # Build a specific doc version ./local_dev.sh start --versions "4.x" # Build English docs (production build) ./local_dev.sh build # Build all locales (en + zh-CN) ./local_dev.sh build-all # Clean build artifacts and caches ./local_dev.sh clean
Run ./local_dev.sh help for all available commands and options.
export NODE_OPTIONS=--max-old-space-size=8192 yarn install yarn docusaurus build --locale en --locale zh-CN
The output is generated in the build/ directory.
. ├── docs/ # Current (dev) version docs (English) ├── versioned_docs/ │ ├── version-4.x/ # 4.x version docs (English) │ └── version-3.x/ # 3.x version docs (English) ├── i18n/zh-CN/ │ └── docusaurus-plugin-content-docs/ │ ├── current/ # Current (dev) version docs (Chinese) │ ├── version-4.x/ # 4.x version docs (Chinese) │ └── version-3.x/ # 3.x version docs (Chinese) ├── archived_docs/ # Frozen 2.1, 2.0, and 1.2 sources │ ├── versioned_docs/ # Archived English docs │ ├── i18n/zh-CN/ # Archived Chinese docs and translation metadata │ └── versioned_sidebars/ # Archived sidebars ├── blog/ # Blog posts ├── community/ # Community docs ├── src/ # React components and pages ├── static/ # Static assets (images, JS, CSS) ├── sidebars.ts # Sidebar for current (dev) docs ├── versioned_sidebars/ # Sidebar files per version │ ├── version-4.x-sidebars.json │ └── version-3.x-sidebars.json ├── sidebarsCommunity.json # Sidebar for community docs ├── versions.json # Active doc versions ├── docusaurus.config.js # Docusaurus configuration └── local_dev.sh # Local development helper script
For general contribution guidelines, see:
When modifying docs, you typically need to update both the English and Chinese versions in the corresponding directories:
| Version | English | Chinese | Sidebar |
|---|---|---|---|
| Current (dev) | docs/ | i18n/zh-CN/.../current/ | sidebars.ts |
| 4.x | versioned_docs/version-4.x/ | i18n/zh-CN/.../version-4.x/ | versioned_sidebars/version-4.x-sidebars.json |
| 3.x | versioned_docs/version-3.x/ | i18n/zh-CN/.../version-3.x/ | versioned_sidebars/version-3.x-sidebars.json |
Versions 2.1, 2.0, and 1.2 are archived and no longer maintained. Their sources and sidebar metadata are kept in archived_docs/ for historical reference, redirects, and PDF exports. Make documentation updates only in the active versions above; do not restore the archived version directories to the active documentation trees. Published PDFs remain available at /archived-docs.
Note: When adding a new page, you must also add its path to the corresponding sidebar file, otherwise it will not appear in the navigation.
Blog posts are located in the blog/ directory. Submit a PR to add or modify blog content.
Community docs are in community/, with navigation controlled by sidebarsCommunity.json. Chinese community content lives under i18n/zh-CN/docusaurus-plugin-content-docs-community/.
All images are stored in static/images/. Use hyphens to separate words in filenames (e.g., query-profile-example.png).

The site is deployed via GitHub Actions:
| Workflow | Trigger | Description |
|---|---|---|
cron-deploy-website.yml | Push to master; daily at 01:00 UTC | Builds and deploys the site; the daily run refreshes dynamic data and provides a fallback |
manual-deploy-website.yml | Manual | Deploy from a specified branch |
build-check.yml | On PR | Validates the build passes (incrementally by detected version) |