Skip to content

Commit e8edca4

Browse files
committed
ci(docs): make site root reachable before the first release
The main-branch deploy publishes only a 'dev' alias, but the root redirect is written by mike set-default, which previously ran only on the release path. With no release yet, the site had no root index.html, so the root URL 404'd until the first release. On a dev deploy, set the default to 'dev' when no 'latest' alias exists yet, so the root always redirects somewhere valid. Once a release has set the default to 'latest', later dev deploys leave it untouched.
1 parent 6ce147d commit e8edca4

1 file changed

Lines changed: 21 additions & 10 deletions

File tree

dev-tools/docs/mike_deploy.sh

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,23 @@ case "$MODE" in
6969
--config-file docs/mkdocs.yml \
7070
--branch gh-pages \
7171
dev
72+
73+
# Set root default to 'dev' only when no 'latest' alias exists yet
74+
# (i.e. pre-first-release). Once a release sets default=latest we
75+
# must never stomp it back to dev on subsequent dev pushes.
76+
echo "==> Checking whether a 'latest' alias exists..."
77+
if uv run mike list \
78+
--config-file docs/mkdocs.yml \
79+
--branch gh-pages 2>/dev/null \
80+
| grep -q '\blatest\b'; then
81+
echo "==> 'latest' alias found — leaving default unchanged (root stays on latest)."
82+
else
83+
echo "==> 'latest' alias not found — setting default to 'dev' so site root is reachable."
84+
uv run mike set-default \
85+
--config-file docs/mkdocs.yml \
86+
--branch gh-pages \
87+
dev
88+
fi
7289
;;
7390
release)
7491
uv run mike deploy \
@@ -111,17 +128,11 @@ if [ ! -f "docs/site/versions.json" ]; then
111128
exit 1
112129
fi
113130

114-
# Root index.html (redirect to default alias) is only created by 'mike set-default'.
115-
# On the very first dev deploy, no default has been set yet, so index.html may be
116-
# absent — that is expected. The release path always calls set-default, so by the
117-
# time the full site is live, index.html will exist.
131+
# Root index.html (redirect to default alias) is created by 'mike set-default'.
132+
# Both paths now call set-default, so index.html must always be present after deploy.
118133
if [ ! -f "docs/site/index.html" ]; then
119-
if [ "$MODE" = "release" ]; then
120-
echo "ERROR: docs/site/index.html not found after release deploy — root redirect is missing." >&2
121-
exit 1
122-
else
123-
echo "==> NOTE: docs/site/index.html not present yet (no default alias set). This is expected on first dev deploy."
124-
fi
134+
echo "ERROR: docs/site/index.html not found after ${MODE} deploy — root redirect is missing." >&2
135+
exit 1
125136
fi
126137

127138
echo "==> docs/site contents (top-level):"

0 commit comments

Comments
 (0)