Repository navigation
ci: split website build and documentation build into separate jobs - #194
Merged
Merged
Conversation
Decouple the monolithic CI workflow into two independent, parallel jobs to resolve apache#180: - build-website: builds the Jekyll static site using Ruby/Bundler and deploys website updates to asf-site while strictly preserving existing content/docs/. Runs on PRs and website commits in ~1-2 minutes. - build-docs: builds Sphinx documentation using Python/Pipenv and the incremental release doc restoration engine, deploying content/docs/ independently to asf-site. - concurrency: add workflow concurrency group 'asf-site-publish' to guarantee sequential, collision-free pushes to asf-site. - publish.sh: add modular --website, --docs, and --all modes with safety directory guards and cp -a preservation. Prevents Sphinx documentation build errors from blocking website release announcements and updates. Fixes apache#180 Signed-off-by: Swatantra Yadav <maverickswatantra@gmail.com>
xiaoxiang781216
approved these changes
Oct 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Decouples the monolithic website and documentation build pipeline in
.github/workflows/main.ymlinto two independent, parallel jobs to resolve #180.Previously, website generation (Jekyll/Ruby) and documentation compilation (Sphinx/Python) ran within a single monolithic job where artifacts were uploaded at the end. When Sphinx documentation encountered build errors, the entire workflow halted, completely blocking website updates, download link fixes, and release announcements (such as the historical issue seen in #179 during the NuttX 13.0.0 release).
Key Changes
.github/workflows/main.yml:build-website: Builds the Jekyll static site using Ruby/Bundler and deploys toasf-sitewhile strictly preserving existingcontent/docs/. Runs on website PRs and commits, completing in ~1-2 minutes. Skips scheduled doc crons and NuttX core doc dispatch events.build-docs: Builds Sphinx documentation using Python/Pipenv, PlantUML, and the incremental release doc restoration engine from ci: build only affected documentation and preserve historical releases #193, deploying compiled documentation tocontent/docs/independently.publish.sh:--website(-w) mode: builds Jekyll intotarget/, checks outasf-site, and safely stagescontent/while backing up and restoring existingcontent/docs/.--docs(-d) mode: safely moves compileddocs/across the branch switch and stagescontent/docs/without touching website HTML pages.if [ ! -d "target" ]; then exit 1; fi) to prevent destructiverm -rf contentoperations on failed builds.cp -a "$TEMP_STAGE_DOCS/docs/." content/docs/to safely handle hidden files and empty directory edge cases.--all(-a) default mode for local development.group: asf-site-publish, cancel-in-progress: false) ensuring sequential, collision-free deployments to theasf-sitebranch.git pull --rebase origin asf-sitebefore pushing to guarantee clean branch rebasing.website-sitefrom the website job anddocs-sitefrom the documentation job, allowing reviewers to preview each artifact independently.Impact
Testing
publish.shsyntax viabash -n publish.sh..github/workflows/main.ymlsyntax via PyYAML parser.git diff --check.Fixes #180
Signed-off-by: Swatantra Yadav maverickswatantra@gmail.com