diff --git a/docs/installation-steps-advanced/AdditionalConfigurationParameters.md b/docs/installation-steps-advanced/AdditionalConfigurationParameters.md index 5488600a5..d71a1adaf 100644 --- a/docs/installation-steps-advanced/AdditionalConfigurationParameters.md +++ b/docs/installation-steps-advanced/AdditionalConfigurationParameters.md @@ -16,7 +16,7 @@ description: Optimize ReportPortal setup with customizable parameters - ports, s | POSTGRES_USER | rpuser | API,UAT,MIGRATIONS | PostgreSQL user name | | POSTGRES_PASSWORD | rppass | API,UAT,MIGRATIONS | PostgreSQL user password | | POSTGRES_DB | reportportal | API,UAT,MIGRATIONS | PostgreSQL database name | -| RABBITMQ_DEFAULT_USER | rabbitmq | API,ANALYZER | PostgreSQL database name | -| RABBITMQ_DEFAULT_PASS | rabbitmq | API,ANALYZER | PostgreSQL database name | +| RABBITMQ_DEFAULT_USER | rabbitmq | API,ANALYZER | RabbitMQ Default user name | +| RABBITMQ_DEFAULT_PASS | rabbitmq | API,ANALYZER | RabbitMQ Default password | [Example of docker compose](https://github.com/reportportal/reportportal/blob/master/docker-compose.yml) with filled out configuration parameters. diff --git a/docs/releases/Version26.0.1.md b/docs/releases/Version26.0.1.md index 539351144..5dfaa2eed 100644 --- a/docs/releases/Version26.0.1.md +++ b/docs/releases/Version26.0.1.md @@ -1,6 +1,8 @@ --- sidebar_position: 3 sidebar_label: Version 26.0.1 +last_update: + date: '2026-02-16' --- # Version 26.0.1 diff --git a/docs/releases/Version26.0.2.md b/docs/releases/Version26.0.2.md index c7ffe44bb..4dff3fb45 100644 --- a/docs/releases/Version26.0.2.md +++ b/docs/releases/Version26.0.2.md @@ -1,6 +1,8 @@ --- sidebar_position: 2 sidebar_label: Version 26.0.2 +last_update: + date: '2026-03-12' --- # Version 26.0.2 diff --git a/docs/releases/Version26.0.3.md b/docs/releases/Version26.0.3.md index a688dbbdc..c32ea9cc6 100644 --- a/docs/releases/Version26.0.3.md +++ b/docs/releases/Version26.0.3.md @@ -1,6 +1,8 @@ --- sidebar_position: 1 sidebar_label: Version 26.0.3 +last_update: + date: '2026-05-29' --- # Version 26.0.3 diff --git a/docs/work-with-reports/TestCaseId.md b/docs/work-with-reports/TestCaseId.md index 439654a43..5e551c1c9 100644 --- a/docs/work-with-reports/TestCaseId.md +++ b/docs/work-with-reports/TestCaseId.md @@ -25,7 +25,7 @@ Test case id is using for: You can find a test case ID in the 'Edit' modal. -## How you can report items with Test case ID? +## How can you report items with Test case ID? You can [report test case id via agents](https://github.com/reportportal/client-java/wiki/Test-case-ID). diff --git a/docusaurus.config.js b/docusaurus.config.js index f33da416c..2fb8fecaf 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -3,6 +3,10 @@ import { themes } from 'prism-react-renderer'; +const fs = require('fs'); +const path = require('path'); +const matter = require('gray-matter'); + const lightCodeTheme = themes.github; const darkCodeTheme = themes.dracula; @@ -11,6 +15,28 @@ require('dotenv').config(); // the default baseUrl is for production deployment, for dev running specify it via DOCS_BASE_URL environment variable const baseUrl = process.env.DOCS_BASE_URL || '/docs/'; +const RELEASES_DIR = path.join(__dirname, 'docs', 'releases'); + +function readReleaseLastmodDates() { + const dates = {}; + let files = []; + try { + files = fs.readdirSync(RELEASES_DIR); + } catch { + return dates; + } + for (const file of files) { + if (!file.endsWith('.md')) continue; + const { data } = matter.read(path.join(RELEASES_DIR, file)); + const rawDate = data?.last_update?.date; + if (!rawDate) continue; + const date = new Date(rawDate); + if (Number.isNaN(date.getTime())) continue; + dates[path.basename(file, '.md')] = date.toISOString().split('T')[0]; + } + return dates; +} + /** @type {import('@docusaurus/types').Config} */ const config = { title: 'ReportPortal Documentation', @@ -39,6 +65,7 @@ const config = { sitemap: { changefreq: 'weekly', priority: 0.9, + lastmod: 'date', ignorePatterns: ['/docs/search', '/docs/search/'], filename: 'sitemap.xml', createSitemapItems: async (params) => { @@ -46,6 +73,7 @@ const config = { const items = await defaultCreateSitemapItems(rest); const seen = new Set(); const fileExtensions = ['.html', '.htm', '.xml', '.pdf', '.jpg', '.png', '.css', '.js']; + const releaseLastmod = readReleaseLastmodDates(); return items .map((item) => { const u = new URL(item.url); @@ -53,7 +81,10 @@ const config = { if (!hasFileExtension && !u.pathname.endsWith('/')) { u.pathname += '/'; } - return { ...item, url: u.toString() }; + const releaseMatch = u.pathname.match(/\/releases\/(Version[^/]+)\/?$/); + const releaseDate = releaseMatch ? releaseLastmod[releaseMatch[1]] : undefined; + const lastmod = releaseDate ?? item.lastmod; + return { ...item, url: u.toString(), lastmod }; }) .filter((item) => { if (seen.has(item.url)) return false; diff --git a/scripts/update-release.js b/scripts/update-release.js index 848c6745c..ff9b6fd49 100644 --- a/scripts/update-release.js +++ b/scripts/update-release.js @@ -21,12 +21,20 @@ async function main() { const sidebarPosition = readExistingSidebarPosition(filePath); const sidebarLabel = buildSidebarLabel(releaseName); const body = transformBody(release.body || ''); + const lastUpdateDate = toDateOnly(release.published_at || release.created_at); - const content = [ + const frontMatter = [ '---', `sidebar_position: ${sidebarPosition}`, `sidebar_label: ${sidebarLabel}`, - '---', + ]; + if (lastUpdateDate) { + frontMatter.push('last_update:', ` date: '${lastUpdateDate}'`); + } + frontMatter.push('---'); + + const content = [ + ...frontMatter, '', `# ${sidebarLabel}`, '', @@ -39,6 +47,12 @@ async function main() { console.log(`Updated: ${fileName}`); } +function toDateOnly(value) { + if (!value) return null; + const date = new Date(value); + return Number.isNaN(date.getTime()) ? null : date.toISOString().split('T')[0]; +} + function readExistingSidebarPosition(filePath) { if (!fs.existsSync(filePath)) return 1; const text = fs.readFileSync(filePath, 'utf-8');