This is an automated email from the ASF dual-hosted git repository. lukaszlenart pushed a commit to branch ci/javadocs-flatten-maven-site in repository https://gitbox.apache.org/repos/asf/struts-site.git
commit 55e3470510119c57760de1cb64619ea953ea0b8d Author: Lukasz Lenart <[email protected]> AuthorDate: Wed Jul 1 14:29:43 2026 +0200 ci: publish only the menu-linked Maven site modules, flattened The struts reactor stages module sites nested by POM inheritance (struts2-bom/struts2-parent/struts2-core/...), which does not match the /maven/... links in the website menu, so those links 404. Instead of moving the whole staged tree, publish only what the menu references: the top-level aggregate site at the root, plus struts2-core and struts2-plugins flattened to /maven/<module>/. Each module site is self-contained and struts2-plugins carries its submodule sites, so moving whole directories preserves their links. This also drops the unreferenced modules (jakarta, apps, assembly) and the bom/parent scaffolding. Co-Authored-By: Claude Opus 4.8 <[email protected]> --- Jenkinsfile.javadocs | 21 ++++++++++++++++++++- .../plans/2026-07-01-jenkins-javadocs-pipeline.md | 18 +++++++++++++++++- .../2026-07-01-jenkins-javadocs-pipeline-design.md | 12 +++++++++++- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile.javadocs b/Jenkinsfile.javadocs index 1df390474..7f660d148 100644 --- a/Jenkinsfile.javadocs +++ b/Jenkinsfile.javadocs @@ -61,9 +61,28 @@ pipeline { # origin/main, so a bare `git checkout main` is ambiguous across two remotes. git checkout -B main asf/main + # The struts reactor stages module sites nested by POM inheritance, e.g. + # struts2-bom/struts2-parent/struts2-core/. Publish only what the website + # menu links to: the top-level aggregate site at the root, plus struts2-core + # and struts2-plugins flattened to /maven/<module>/. Each module site is + # self-contained (own css/js/images) and struts2-plugins carries its own + # submodule sites, so moving whole directories keeps their links intact. + STAGING=target/struts/target/staging + PARENT="${STAGING}/struts2-bom/struts2-parent" + rm -rf source/maven mkdir -p source/maven - mv target/struts/target/staging/* source/maven/ + + # Top-level aggregate site (index.html, project-info.html, aggregate apidocs, + # dependency reports), skipping the deeply-nested reactor tree. + for entry in "${STAGING}"/*; do + [ "$(basename "${entry}")" = "struts2-bom" ] && continue + cp -r "${entry}" source/maven/ + done + + # Flatten the two module sites the website menu references. + cp -r "${PARENT}/struts2-core" source/maven/struts2-core + cp -r "${PARENT}/struts2-plugins" source/maven/struts2-plugins git add source/maven git status diff --git a/docs/superpowers/plans/2026-07-01-jenkins-javadocs-pipeline.md b/docs/superpowers/plans/2026-07-01-jenkins-javadocs-pipeline.md index a130d5d9d..a318e004c 100644 --- a/docs/superpowers/plans/2026-07-01-jenkins-javadocs-pipeline.md +++ b/docs/superpowers/plans/2026-07-01-jenkins-javadocs-pipeline.md @@ -100,9 +100,25 @@ pipeline { # origin/main, so a bare `git checkout main` is ambiguous across two remotes. git checkout -B main asf/main + # The struts reactor stages module sites nested by POM inheritance, e.g. + # struts2-bom/struts2-parent/struts2-core/. Publish only what the website + # menu links to: the top-level aggregate site at the root, plus struts2-core + # and struts2-plugins flattened to /maven/<module>/. Each module site is + # self-contained (own css/js/images) and struts2-plugins carries its own + # submodule sites, so moving whole directories keeps their links intact. + STAGING=target/struts/target/staging + PARENT="${STAGING}/struts2-bom/struts2-parent" + rm -rf source/maven mkdir -p source/maven - mv target/struts/target/staging/* source/maven/ + + for entry in "${STAGING}"/*; do + [ "$(basename "${entry}")" = "struts2-bom" ] && continue + cp -r "${entry}" source/maven/ + done + + cp -r "${PARENT}/struts2-core" source/maven/struts2-core + cp -r "${PARENT}/struts2-plugins" source/maven/struts2-plugins git add source/maven git status diff --git a/docs/superpowers/specs/2026-07-01-jenkins-javadocs-pipeline-design.md b/docs/superpowers/specs/2026-07-01-jenkins-javadocs-pipeline-design.md index 92cf21159..f153c3210 100644 --- a/docs/superpowers/specs/2026-07-01-jenkins-javadocs-pipeline-design.md +++ b/docs/superpowers/specs/2026-07-01-jenkins-javadocs-pipeline-design.md @@ -104,7 +104,17 @@ Mirror the existing `Jenkinsfile` deploy pattern: - `git checkout -B main asf/main` (explicit remote: a bare `git checkout main` is ambiguous because the Pipeline SCM checkout also leaves an `origin/main`) - `rm -rf source/maven && mkdir -p source/maven` -- `mv target/struts/target/staging/* source/maven/` +- Publish selectively (the struts reactor nests module sites by POM inheritance, e.g. + `struts2-bom/struts2-parent/struts2-core/`, which does not match the website menu): + - copy the top-level aggregate site (everything at the staging root **except** the + nested `struts2-bom` tree) → `source/maven/` — gives `/maven/project-info.html`, + `/maven/index.html`, aggregate `/maven/apidocs/` + - copy `…/struts2-bom/struts2-parent/struts2-core` → `source/maven/struts2-core` + - copy `…/struts2-bom/struts2-parent/struts2-plugins` → `source/maven/struts2-plugins` + - This flattening makes all four `/maven/…` menu links in `source/_includes/header.html` + resolve with no menu change. Safe because each module site is self-contained + (own css/js/images) and `struts2-plugins` carries its submodule sites. Trade-off: + secondary "up"/breadcrumb links inside the Maven pages may not resolve. - `git add source/maven` - `git diff --cached --quiet || git commit -m "Updates Maven site by Jenkins"` - `git push asf main`
