diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml index c4d65dc0295..fec81eecb4d 100644 --- a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/meta.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/meta-schema.json product: EDB Postgres AI - AI Accelerator shortname: ai-accelerator title: EDB Postgres AI - AI Accelerator 1.0.0 release notes diff --git a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.7.yml b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.7.yml index 2c0f9b74d62..21a090d84ae 100644 --- a/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.7.yml +++ b/advocacy_docs/edb-postgres-ai/ai-accelerator/rel_notes/src/rel_notes_1.0.7.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: AI Accelerator - Pipelines version: 1.0.7 date: 10 December 2024 diff --git a/package-lock.json b/package-lock.json index bf1b2fddf1d..736df8221de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,6 +52,7 @@ "react-helmet": "^6.1.0", "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", + "relgen": "file:tools/automation/generators/relgen", "remark-admonitions": "github:josh-heyer/remark-admonitions", "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", @@ -78,6 +79,37 @@ "node": "18.x || 20.x" } }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" + }, "node_modules/@algolia/cache-browser-local-storage": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", @@ -2149,6 +2181,14 @@ "node": ">= 4" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" + } + }, "node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.10.0.tgz", @@ -4582,6 +4622,11 @@ "@types/node": "*" } }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, "node_modules/@types/node": { "version": "18.15.11", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", @@ -7664,6 +7709,27 @@ "node": ">=0.10.0" } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-named-character-reference/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", @@ -7958,6 +8024,18 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -9422,6 +9500,11 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==" + }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -15286,6 +15369,39 @@ "parse-entities": "^2.0.0" } }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, "node_modules/micromark-extension-footnote": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", @@ -15372,6 +15488,339 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", + "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -18427,6 +18876,10 @@ "invariant": "^2.2.4" } }, + "node_modules/relgen": { + "resolved": "tools/automation/generators/relgen", + "link": true + }, "node_modules/remark": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-10.0.1.tgz", @@ -21184,6 +21637,14 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -21349,6 +21810,17 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/unherit": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", @@ -22680,6 +23152,154 @@ "type": "github", "url": "https://github.com/sponsors/wooorm" } + }, + "tools/automation/generators/relgen": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@actions/core": "^1.10.1", + "ajv": "^8.17.1", + "fast-glob": "^3.3.2", + "js-yaml": "^4.1.0", + "js-yaml-source-map": "^0.2.2", + "micromark": "^4.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "relgen": "relgen.js" + } + }, + "tools/automation/generators/relgen/node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "tools/automation/generators/relgen/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "tools/automation/generators/relgen/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "tools/automation/generators/relgen/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "tools/automation/generators/relgen/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "tools/automation/generators/relgen/node_modules/js-yaml-source-map": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/js-yaml-source-map/-/js-yaml-source-map-0.2.2.tgz", + "integrity": "sha512-z45Aww8oXJh9GuWUnwmvHsAkB7I/oWrkoHU554UQ8Ik4dyhVrk/nwClTI435feU7QIy7E0XaW8jHvZ4QxaAjog==", + "peerDependencies": { + "js-yaml": "^4.0.0" + } + }, + "tools/automation/generators/relgen/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "tools/automation/generators/relgen/node_modules/micromark": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "tools/automation/generators/relgen/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "tools/automation/generators/relgen/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "tools/automation/generators/relgen/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } } } } diff --git a/package.json b/package.json index b7fd88f98fd..71e2a453f95 100644 --- a/package.json +++ b/package.json @@ -20,15 +20,17 @@ "install-docs:build": "docker compose -f docker/docker-compose.install-template.yaml run --rm install-docs-template-renderer", "install-docs:deploy": "docker compose -f docker/docker-compose.install-template.yaml run --rm install-docs-template-renderer sh -c 'npm i && node deploy.mjs product_docs/docs advocacy_docs'", "install-docs:rebuild-docker-image": "docker compose -f docker/docker-compose.install-template.yaml build --pull --no-cache", + "links:check": "docker compose -f docker/docker-compose.check-links.yaml run --rm docs-link-checker", + "links:rebuild-docker-image": "docker compose -f docker/docker-compose.check-links.yaml build --pull --no-cache", "logs": "docker compose -f docker/docker-compose.quickstart.yaml logs -f", "pdf:build": "docker compose -f docker/docker-compose.build-pdf.yaml run --rm --entrypoint scripts/pdf/generate_pdf.py docs-pdf-builder", "pdf:build-all": "for i in product_docs/docs/**/*/ ; do echo \"$i\"; npm run pdf:build ${i%} || exit 1; done", "pdf:build-all-ci": "for i in product_docs/docs/**/*/ ; do echo \"$i\"; python3 scripts/pdf/generate_pdf.py ${i%} || exit 1; done", "pdf:rebuild-docker-image": "docker compose -f docker/docker-compose.build-pdf.yaml build --pull --no-cache", - "links:check": "docker compose -f docker/docker-compose.check-links.yaml run --rm docs-link-checker", - "links:rebuild-docker-image": "docker compose -f docker/docker-compose.check-links.yaml build --pull --no-cache", "prepare": "./scripts/husky-install.sh", "presetup": "./scripts/npm-preinstall.sh", + "releasenotes:generate": "relgen -p", + "releasenotes:generate-all": "for rnmetapath in `find . -wholename './product_docs/*/src/meta.yml' -o -wholename './advocacy_docs/*/src/meta.yml'`; do relgen -p ${rnmetapath%/src/meta.yml}; done", "serve-build": "gatsby serve --prefix-paths", "setup": "./scripts/npm-install.sh", "shell": "docker exec -it edb-docs /bin/sh", @@ -80,6 +82,7 @@ "react-helmet": "^6.1.0", "react-instantsearch": "^7.8.1", "rehype-parse": "^7.0.1", + "relgen": "file:tools/automation/generators/relgen", "remark-admonitions": "github:josh-heyer/remark-admonitions", "sass": "^1.77.6", "truncate-utf8-bytes": "^1.0.2", diff --git a/product_docs/docs/pgd/5.6/rel_notes/index.mdx b/product_docs/docs/pgd/5.6/rel_notes/index.mdx index e9940e7e004..3b71917efbc 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/index.mdx +++ b/product_docs/docs/pgd/5.6/rel_notes/index.mdx @@ -2,11 +2,13 @@ title: EDB Postgres Distributed 5.6+ release notes navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later +indexCards: none navigation: - pgd_5.6.1_rel_notes - pgd_5.6.0_rel_notes --- + The EDB Postgres Distributed documentation describes the latest version of EDB Postgres Distributed 5, including minor releases and patches. The release notes provide information on what was new in each release. For new functionality introduced in a minor or patch release, the content also indicates the release that introduced the feature. @@ -14,4 +16,3 @@ The EDB Postgres Distributed documentation describes the latest version of EDB P |---|---|---|---|---| | 25 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | | 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | - diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/meta.yml b/product_docs/docs/pgd/5.6/rel_notes/src/meta.yml index bfda8f205ad..7c0c5fc6276 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/meta.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/meta.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/meta-schema.json product: EDB Postgres Distributed shortname: pgd title: EDB Postgres Distributed 5.6+ release notes diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.0.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.0.yml index 14347451483..5c2cf06a08e 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.0.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.0.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: EDB Postgres Distributed version: 5.6.0 date: 15 October 2024 diff --git a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml index 9091df27928..fa37bc44e9c 100644 --- a/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml +++ b/product_docs/docs/pgd/5.6/rel_notes/src/relnote_5.6.1.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: EDB Postgres Distributed version: 5.6.1 date: 25 November 2024 diff --git a/product_docs/docs/tpa/23/rel_notes/index.mdx b/product_docs/docs/tpa/23/rel_notes/index.mdx index 2eddffa4239..0a80a8767c3 100644 --- a/product_docs/docs/tpa/23/rel_notes/index.mdx +++ b/product_docs/docs/tpa/23/rel_notes/index.mdx @@ -2,6 +2,7 @@ title: Trusted Postgres Architect release notes navTitle: Release notes description: Release notes for Trusted Postgres Architect and later +indexCards: none navigation: - tpa_23.35.0_rel_notes - tpa_23.34.1_rel_notes diff --git a/product_docs/docs/tpa/23/rel_notes/src/meta.yml b/product_docs/docs/tpa/23/rel_notes/src/meta.yml index 6a6b069cdad..69f2c7e7cc7 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/meta.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/meta.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/meta-schema.json product: Trusted Postgres Architect shortname: tpa title: Trusted Postgres Architect release notes diff --git a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35.0_rel_notes.yml b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35.0_rel_notes.yml index ceef28c7ea8..869e115521b 100644 --- a/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35.0_rel_notes.yml +++ b/product_docs/docs/tpa/23/rel_notes/src/tpa_23.35.0_rel_notes.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: Trusted Postgres Architect version: 23.35.0 date: 25 November 2024 diff --git a/tools/automation/generators/relgen/meta-schema.json b/tools/automation/generators/relgen/meta-schema.json new file mode 100644 index 00000000000..5263f3257a1 --- /dev/null +++ b/tools/automation/generators/relgen/meta-schema.json @@ -0,0 +1,93 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Release notes metadata", + "description": "Metadata used to structure release notes for a given product (or software collection)", + "type": "object", + "properties": { + "product": { + "description": "Full and formal name for the product", + "type": "string" + }, + "shortname": { + "description": "Short product name for the product - used in filename generation", + "type": "string" + }, + "title": { + "description": "Title for the index page.", + "type": "string" + }, + "description": { + "description": "Description for the index page.", + "type": "string" + }, + "columns": { + "description": "Details on the index pages columns, numbered 0 to at least 1.", + "type": "array", + "items": { + "type": "object", + "description": "column definition", + "patternProperties": { + "^\\d+$": { + "description": "column index", + "type": "null" + } + }, + "properties": { + "label": { + "description": "Column heading", + "type": "string" + }, + "key": { + "description": "key to use when generatings the column data", + "anyOf": [ + { + "type": "string", + "enum": ["shortdate", "version-link"] + }, + { + "type": "string" + } + ] + } + }, + "minProperties": 3 + } + }, + "components": { + "type": "array", + "description": "List of valid components for product", + "items": { "type": "string" } + }, + "intro": { + "description": "Multi-line string that provides a brief introduction to the release notes. Supports Markdown.", + "type": "string" + }, + "precursor": { + "description": "list of preceding releases which already have release notes. Required if there are preceding releases to be included. Will be appended to the table and navigation. If meta fields are in use, they are required in the precursor list under meta, too.", + "type": "array", + "items": { + "type": "object", + "properties": { + "version": { + "description": "version string used for this 'precursor' version.", + "type": "string" + }, + "date": { + "description": "date this version was released", + "type": "string" + } + }, + "additionalProperties": { + "description": "whatever values are needed for each of the meta columns defined above", + "type": "string" + } + } + } + }, + "required": [ + "product", + "shortname", + "title", + "columns" + ] +} \ No newline at end of file diff --git a/tools/automation/generators/relgen/package-lock.json b/tools/automation/generators/relgen/package-lock.json index 31b0b625fbd..e85891c6d5e 100644 --- a/tools/automation/generators/relgen/package-lock.json +++ b/tools/automation/generators/relgen/package-lock.json @@ -9,10 +9,55 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@actions/core": "^1.10.1", + "ajv": "^8.17.1", "fast-glob": "^3.3.2", "js-yaml": "^4.1.0", + "js-yaml-source-map": "^0.2.2", "micromark": "^4.0.0", "yargs": "^17.7.2" + }, + "bin": { + "relgen": "relgen.js" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==" + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "engines": { + "node": ">=14" } }, "node_modules/@nodelib/fs.scandir": { @@ -60,6 +105,21 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -197,6 +257,11 @@ "node": ">=6" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -212,6 +277,11 @@ "node": ">=8.6.0" } }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==" + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -296,6 +366,19 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/js-yaml-source-map": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/js-yaml-source-map/-/js-yaml-source-map-0.2.2.tgz", + "integrity": "sha512-z45Aww8oXJh9GuWUnwmvHsAkB7I/oWrkoHU554UQ8Ik4dyhVrk/nwClTI435feU7QIy7E0XaW8jHvZ4QxaAjog==", + "peerDependencies": { + "js-yaml": "^4.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -759,6 +842,14 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -825,6 +916,25 @@ "node": ">=8.0" } }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/tools/automation/generators/relgen/package.json b/tools/automation/generators/relgen/package.json index caa63900e82..d019dcff27a 100644 --- a/tools/automation/generators/relgen/package.json +++ b/tools/automation/generators/relgen/package.json @@ -4,6 +4,9 @@ "description": "Release Notes Generator Generic", "main": "relgen.js", "type": "module", + "bin": { + "relgen": "./relgen.js" + }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -14,8 +17,11 @@ "author": "Dj", "license": "ISC", "dependencies": { + "@actions/core": "^1.10.1", + "ajv": "^8.17.1", "fast-glob": "^3.3.2", "js-yaml": "^4.1.0", + "js-yaml-source-map": "^0.2.2", "micromark": "^4.0.0", "yargs": "^17.7.2" } diff --git a/tools/automation/generators/relgen/relgen.js b/tools/automation/generators/relgen/relgen.js index 9116f3fabbc..2600db5e700 100755 --- a/tools/automation/generators/relgen/relgen.js +++ b/tools/automation/generators/relgen/relgen.js @@ -9,11 +9,74 @@ import { appendFileSync, existsSync, } from "fs"; +import core from "@actions/core"; import { load } from "js-yaml"; +import SourceMap from "js-yaml-source-map"; +import Ajv from "ajv"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; import path from "path"; import { micromark } from "micromark"; +import { exit } from "process"; + +let ghCore = core; + +if (!process.env.GITHUB_REF) { + ghCore = { + getInput: (key) => undefined, + summary: { + addRaw: (markup) => { + console.log(markup); + }, + write: () => {}, + stringify: () => {}, + }, + setFailed: (message) => { + console.error(message); + }, + error: (message, properties = {}) => { + console.error( + "⚠️⚠️ " + + formatErrorPath( + properties.file, + properties.startLine, + properties.startColumn, + ) + + "\n\t" + + message, + ); + }, + warning: (message, properties = {}) => { + console.warn( + "⚠️ " + + formatErrorPath( + properties.file, + properties.startLine, + properties.startColumn, + ) + + "\n\t" + + message, + ); + }, + notice: (message, properties = {}) => { + console.log( + formatErrorPath( + properties.file, + properties.startLine, + properties.startColumn, + ) + + "\n\t" + + message, + ); + }, + }; + + function formatErrorPath(filePath, line, column) { + return filePath + ? `${path.relative(docsBase, filePath)}:${line}:${column}` + : ""; + } +} let argv = yargs(hideBin(process.argv)) .usage("Usage: $0 -p ") @@ -83,11 +146,50 @@ function titles(type) { } } +const loadWithSchema = (() => { + const ajv = new Ajv({ allErrors: true }); + const validators = {}; + + return (yamlFile, schemaFile) => { + let validator = validators[schemaFile]; + if (!validator) { + const schema = JSON.parse( + readFileSync(path.join(import.meta.dirname, schemaFile)), + ); + validator = validators[schemaFile] = ajv.compile(schema); + } + + const sourceMap = new SourceMap(); + let result = load(readFileSync(yamlFile, "utf8"), { + listener: sourceMap.listen(), + }); + if (!validator(result)) { + for (let error of validator.errors) { + let yamlPath = error.instancePath.split("/"); + let targetProp = yamlPath.at(-1); + let loc = null; + while (!loc && yamlPath.length) { + loc = sourceMap.lookup(yamlPath.join(".")); + yamlPath.pop(); + } + ghCore.warning(`${targetProp}: ${error.message}`, { + file: path.relative(docsBase, yamlFile), + startLine: loc?.line, + startColumn: loc?.column, + }); + } + } + return result; + }; +})(); + let basedir = false; let basepath = argv.path; +const docsBase = basepath.split(/product_docs|advocacy_docs/)[0]; // Open the src/meta.yml file and parse it. -let meta = load(readFileSync(path.join(basepath, "src/meta.yml"), "utf8")); +const metaFilename = path.join(basepath, "src/meta.yml"); +let meta = loadWithSchema(metaFilename, "meta-schema.json"); // Now we scan the other files in src, on this pass, acquiring the meta data @@ -105,7 +207,10 @@ let relnotes = new Map(); for (let i = 0; i < files.length; i++) { let file = files[i]; - let relnote = load(readFileSync(path.join(basepath, "src", file), "utf8")); + let relnote = loadWithSchema( + path.join(basepath, "src", file), + "relnote-schema.json", + ); relnotes.set(file, relnote); } @@ -176,7 +281,7 @@ function makeShortDate(date) { let relindexfilename = path.join(basepath, "index.mdx"); // Use this to write the file let err = writeFileSync(relindexfilename, ""); if (err) { - console.error(err); + ghCore.setFailed(err); process.exit(1); } @@ -244,7 +349,9 @@ for (let [file, relnote] of relnotes) { let key = col.key.replace("$", ""); line += ` ${relnote.meta[key]} |`; } else { - console.err(`Unknown column key: ${col.key}`); + ghCore.error(`Unknown column key: ${col.key}`, { + file: path.relative(docsBase, metaFilename), + }); } break; } @@ -270,7 +377,9 @@ if (meta.precursor !== undefined) { let key = col.key.replace("$", ""); line += ` ${prec.meta[key]} |`; } else { - console.err(`Unknown column key: ${col.key}`); + ghCore.error(`Unknown column key: ${col.key}`, { + file: path.relative(docsBase, metaFilename), + }); } break; } @@ -292,7 +401,7 @@ function prepareRelnote(meta, file, note) { let rlout = path.join(basepath, relnotefilename + ".mdx"); let err = writeFileSync(rlout, ""); if (err) { - console.error(err); + ghCore.setFailed(err); process.exit(1); } diff --git a/tools/automation/generators/relgen/relnote-schema.json b/tools/automation/generators/relgen/relnote-schema.json new file mode 100644 index 00000000000..567bdc638cd --- /dev/null +++ b/tools/automation/generators/relgen/relnote-schema.json @@ -0,0 +1,120 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Release notes", + "description": "Release notes for a specific release of a product (or software collection)", + "type": "object", + "properties": { + "product": { + "description": "Full and formal name for the product that was released", + "type": "string" + }, + "version": { + "description": "version of the product that was released. Semver preferred.", + "type": "string" + }, + "date": { + "description": "date of the release. Parsed - try to make this a valid date.", + "type": "string" + }, + "updated": { + "description": "date these release notes were last updated. Parsed - try to make this a valid date.", + "type": "string" + }, + "meta": { + "type": "object", + "description": "collection of component versions that correspond to this release. Can be referenced by $name in meta.yml", + "additionalProperties": { + "type": "string" + } + }, + "intro": { + "description": "Multi-line string that provides a brief introduction to the release notes. Supports Markdown.", + "type": "string" + }, + "highlights": { + "description": "Short description of the highlights of the release. Supports Markdown. Can use lists for effect.", + "type": "string" + }, + "relnotes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "relnote": { + "description": "Short text for the release note entry", + "type": "string" + }, + "component": { + "description": "Component name - required if components is specified in meta.yml", + "type": "string" + }, + "component_version": { + "description": "Component version - required if components is specified in meta.yml", + "type": "string" + }, + "details": { + "description": "Optional multi-line string that provides more details about the release note. Supports Markdown.", + "type": "string" + }, + "jira": { + "description": "Jira number for tracking - not required but recommended", + "anyOf": [ + { "type": "string" }, + { "type": "null" }, + { + "type": "array", + "items": { "type": "string" } + } + ] + }, + "addresses": { + "description": "String with the issue numbers that this release note addresses. May move to markdown if requested - required as a field, not required to have content.", + "anyOf": [ + { "type": "string"}, + { "type": "number"}, + { "type": "null"} + ] + }, + "type": { + "description": "Type of release note - required.", + "anyOf": [ + { + "enum": ["Feature", "Enhancement", "Change", "Bug fix", "Bug Fix", "Deprecation", "Security", "Other"], + "type": "string" + }, + { + "enum": ["feature", "enhancement", "change", "bug fix", "deprecation", "security", "other"], + "type": "string" + } + ] + }, + "impact": { + "description": "determines sort order within section - required.", + "anyOf": [ + { + "enum": ["Lowest", "Low", "Medium", "High", "Highest"], + "type": "string" + }, + { + "enum": ["lowest", "low", "medium", "high", "highest"], + "type": "string" + } + ] + } + }, + "required": [ + "relnote", + "addresses", + "type", + "impact" + ] + } + } + }, + "required": [ + "product", + "version", + "date", + "relnotes" + ] +} \ No newline at end of file diff --git a/tools/automation/generators/relgen/test/index.mdx b/tools/automation/generators/relgen/test/index.mdx index 829d4a65456..af8a8a0eecf 100644 --- a/tools/automation/generators/relgen/test/index.mdx +++ b/tools/automation/generators/relgen/test/index.mdx @@ -1,15 +1,18 @@ --- title: EDB Postgres Distributed 5.6+ release notes +navTitle: Release notes description: Release notes for EDB Postgres Distributed 5.6 and later +indexCards: none navigation: - pgd_5.6.1_rel_notes - pgd_5.6.0_rel_notes --- + The EDB Postgres Distributed documentation describes the latest version of EDB Postgres Distributed 5, including minor releases and patches. The release notes provide information on what was new in each release. For new functionality introduced in a minor or patch release, the content also indicates the release that introduced the feature. | Release Date | EDB Postgres Distributed | BDR extension | PGD CLI | PGD Proxy | |---|---|---|---|---| -| 17 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes.md) | 5.6.1 | 5.6.1 | 5.6.1 | -| 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes.md) | 5.6.0 | 5.6.0 | 5.6.0 | +| 17 Nov 2024 | [5.6.1](./pgd_5.6.1_rel_notes) | 5.6.1 | 5.6.1 | 5.6.1 | +| 15 Oct 2024 | [5.6.0](./pgd_5.6.0_rel_notes) | 5.6.0 | 5.6.0 | 5.6.0 | diff --git a/tools/automation/generators/relgen/test/pgd_5.6.0_rel_notes.mdx b/tools/automation/generators/relgen/test/pgd_5.6.0_rel_notes.mdx index 5ae66218926..0280f1af33f 100644 --- a/tools/automation/generators/relgen/test/pgd_5.6.0_rel_notes.mdx +++ b/tools/automation/generators/relgen/test/pgd_5.6.0_rel_notes.mdx @@ -3,14 +3,12 @@ title: EDB Postgres Distributed 5.6.0 release notes navTitle: Version 5.6.0 --- - Released: 15 October 2024 - EDB Postgres Distributed 5.6.0 includes a number of enhancements and bug fixes. - ## Highlights + - Improved observability with new monitoring functions and SQL views. - Improvements to commit scopes including: - GROUP COMMIT and SYNCHRONOUS COMMIT support graceful degrading using DEGRADE ON. @@ -26,10 +24,9 @@ EDB Postgres Distributed 5.6.0 includes a number of enhancements and bug fixes. - CREATE SCHEMA AUTHORIZATION - Streaming Transaction support with Decoding Worker. - ## Enhancements - +
ComponentVersionRelease NoteAddresses
-
ComponentVersionDescriptionAddresses
BDR5.6.0
Decoding Worker supports Streaming Transactions

One of the main advantages of streaming is that the WAL sender sends the partial transaction before it commits, which reduces replication lag. Now, with streaming support, the WAL decoder does the same thing, but it streams to the LCRs segments. Eventually, the WAL sender will read the LCRs and mimic the same behavior of streaming large transactions before they commit. This provides the benefits of decoding worker, such as reduced CPU and disk space, as well as the benefits of streaming, such as reduced lag and disk space, since ".spill" files are not generated. The WAL decoder always streams the transaction to LCRs, but based on downstream requests, the WAL sender either streams the transaction or just mimics the normal BEGIN..COMMIT scenario. In addition to the normal LCRs segment files, we create streaming files with the starting names TR_TXN_<file-name-format> and CAS_TXN_<file-name-format> for each streamed transaction.

@@ -120,14 +117,14 @@ any node in a subgroup and does not need to be redefined for every subgroup anymore. This is particularly useful when combined with ORIGIN\_GROUP keyword to reduce the complexity of commit scope setup.

CLI5.6.0
Use bdr.bdr_file_settings view in verify-settings

Use bdr.bdr_file_settings view to get the current settings for the proxy.

+
PGD CLI5.6.0
Use bdr.bdr_file_settings view in verify-settings

Use bdr.bdr_file_settings view to get the current settings for the proxy.

## Bug Fixes - +
ComponentVersionRelease NoteAddresses
diff --git a/tools/automation/generators/relgen/test/pgd_5.6.1_rel_notes.mdx b/tools/automation/generators/relgen/test/pgd_5.6.1_rel_notes.mdx index eb2037e4c20..3264fe94f19 100644 --- a/tools/automation/generators/relgen/test/pgd_5.6.1_rel_notes.mdx +++ b/tools/automation/generators/relgen/test/pgd_5.6.1_rel_notes.mdx @@ -3,20 +3,17 @@ title: EDB Postgres Distributed 5.6.1 release notes navTitle: Version 5.6.1 --- - Released: 17 November 2024 - EDB Postgres Distributed 5.6.1 includes a number of enhancements and bug fixes. - ## Highlights -- Super new feature +- Super new feature ## Enhancements -
ComponentVersionDescriptionAddresses
BDR5.6.0
Fixed buffer overrun in the writer

Include an extra zero byte at the end of a column value allocation in shared memory queue insert/update/delete messages.

98966
BDR5.6.0Fixes for some race conditions to prevent node sync from entering a hung state with the main subscription disabled.
+
ComponentVersionRelease NoteAddresses
ComponentVersionDescriptionAddresses
BDR5.6.1
Super new feature

This feature rocks so hard

diff --git a/tools/automation/generators/relgen/test/src/meta.yml b/tools/automation/generators/relgen/test/src/meta.yml index 4cf60b70d86..ae8a8faa9b2 100644 --- a/tools/automation/generators/relgen/test/src/meta.yml +++ b/tools/automation/generators/relgen/test/src/meta.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/meta-schema.json product: EDB Postgres Distributed shortname: pgd title: EDB Postgres Distributed 5.6+ release notes diff --git a/tools/automation/generators/relgen/test/src/relnote_5.6.0.yml b/tools/automation/generators/relgen/test/src/relnote_5.6.0.yml index a256d3420ae..af5372ea61a 100644 --- a/tools/automation/generators/relgen/test/src/relnote_5.6.0.yml +++ b/tools/automation/generators/relgen/test/src/relnote_5.6.0.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: EDB Postgres Distributed version: 5.6.0 date: 15 October 2024 @@ -51,6 +52,7 @@ relnotes: - [`bdr.stat_routing_state`](/pgd/5.6/reference/catalogs-visible#bdrstat_routing_state) : The state of the connection routing which PGD Proxy uses to route the connections. - [`bdr.stat_routing_candidate_state`](/pgd/5.6/reference/catalogs-visible#bdrstat_routing_candidate_state) : Information about routing candidate nodes on the Raft leader node (empty on other nodes). jira: BDR-5316 + addresses: "" type: Enhancement severity: High impact: High @@ -62,6 +64,7 @@ relnotes: `CREATE TABLE` or with `ALTER TABLE` and uses similar conflict detection to resolve conflicts as for `UNIQUE` constraints. jira: BDR-4851 + addresses: "" type: Enhancement severity: High impact: High @@ -284,6 +287,7 @@ relnotes: details: | Subscriber-only node groups have a leader elected by top-level Raft. There is now a bdr.leader catalog that tracks leadership of subgroups and subscriber-only nodes. If the node that is the leader of a subscriber-only node group goes down or becomes unreachable, a new leader is elected from that group. jira: BDR-5089 + addresses: "" type: Enhancement severity: High impact: High @@ -293,6 +297,7 @@ relnotes: details: | Subscriber-only nodes earlier used to have subscriptions to each data node. Now if optimized topology is enabled, only the leaders of subscriber-only node groups have subscriptions to routing leaders of data node subsgroups. The subscriber only nodegroup leaders route data to other nodes of that subscriber-only nodegroup. This reduces the load on all data nodes so they do not have to send data to all subscriber-only nodes. The GUC `bdr.force_full_mesh=false` enables this optimized topology. It is off by default. jira: BDR-5214 + addresses: "" type: Enhancement severity: High impact: High @@ -302,6 +307,7 @@ relnotes: details: | New subscription types that forward data from all nodes of the subgroup via a routing leader (mode: l), and those that forward data from the entire cluster via a subscriber-only group leader (mode: w) are introduced. jira: BDR-5186 + addresses: "" type: Enhancement severity: High impact: High @@ -311,6 +317,7 @@ relnotes: details: | A write leader has a version. Every time a new leader is elected, the version is incremented and timestamp noted via Raft. This is to build a foundation for better conflict resolution. jira: BDR-3589 + addresses: "" type: Enhancement severity: High impact: High @@ -322,6 +329,7 @@ relnotes: 'could not lookup equality operator for type, optype in opfamily' or 'function "amgettuple" is not defined for index "brinidx"' jira: BDR-5523 , BDR-5361 + addresses: "" type: Bug Fix severity: High impact: High @@ -333,6 +341,7 @@ relnotes: useful with generated columns, for example: `ALTER TABLE gtest_tableoid ADD COLUMN c regclass GENERATED ALWAYS AS (tableoid) STORED;` jira: BDR-5385 + addresses: "" type: Enhancement severity: High impact: High @@ -345,6 +354,7 @@ relnotes: replication would not take this into consideration, resulting in different role privileges on different nodes. jira: BDR-5403 + addresses: "" type: Bug fix severity: High impact: High @@ -354,6 +364,7 @@ relnotes: details: | Previously, this would throw "cannot change current role within security-restricted operation" error jira: BDR-5368 + addresses: "" type: Bug fix severity: High impact: High @@ -363,6 +374,7 @@ relnotes: details: | Both REINDEX and REINDEX CONCURRENTLY are now replicated commands. jira: BDR-5363 + addresses: "" type: Enhancement severity: High impact: High @@ -374,6 +386,7 @@ relnotes: where tables contain data which would not be allowed by current definition of such domain. jira: BDR-5369 + addresses: "" type: Bug fix severity: High impact: High @@ -385,6 +398,7 @@ relnotes: actually started. This could on rare occasions break replication after configuration changes until Postgres was restarted. jira: + addresses: "" type: Enhancement severity: High impact: High @@ -396,6 +410,7 @@ relnotes: and `bdr.local_node_id` are automatically reported to clients when using CAMO or GROUP COMMIT. This has now been optimized to use less resources. jira: BDR-3212 + addresses: "" type: Enhancement severity: High impact: High @@ -408,6 +423,7 @@ relnotes: anymore. This is particularly useful when combined with `ORIGIN\_GROUP` keyword to reduce the complexity of commit scope setup. jira: BDR-5433 + addresses: "" type: Enhancement severity: High impact: High @@ -415,6 +431,7 @@ relnotes: component: Utilities component_version: 5.6.0 jira: BDR-5306 + addresses: "" type: Bug Fix severity: High impact: High @@ -424,6 +441,7 @@ relnotes: details: | Use bdr.bdr_file_settings view to get the current settings for the proxy. jira: BDR-5049 + addresses: "" type: Enhancement severity: High impact: High \ No newline at end of file diff --git a/tools/automation/generators/relgen/test/src/relnote_5.6.1.yml b/tools/automation/generators/relgen/test/src/relnote_5.6.1.yml index 86ddfddea2f..609fdbc9ffc 100644 --- a/tools/automation/generators/relgen/test/src/relnote_5.6.1.yml +++ b/tools/automation/generators/relgen/test/src/relnote_5.6.1.yml @@ -1,3 +1,4 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/EnterpriseDB/docs/automation/josh/validation-for-relgen/tools/automation/generators/relgen/relnote-schema.json product: EDB Postgres Distributed version: 5.6.1 date: 17 November 2024