Skip to content

Commit e74dd32

Browse files
authored
fix: improve install script behavior in CI environments (#1012)
* fix: improve install script behavior in CI environments - Skip legacy v1/v2 migration in CI environments where it's not applicable - Use non-interactive sudo (-n) to prevent hanging on password prompts - Fix symlink removal detection to check both file existence and symlink status - Exit with error code when binary fails to execute in CI (fail loudly) - Test migration path by unsetting CI environment variables in test workflow * fix: remove is_ci guard from migrate_from_v1 to fix CI test The is_ci early return in migrate_from_v1 skipped migration entirely in CI, causing the v1-to-v2 migration test to fail. The env overrides (CI="", GITHUB_ACTIONS="") did not effectively disable CI detection. Migration is safe to run in CI: sudo -n prevents hangs, error suppression handles permission issues, and real CI has no legacy installs to clean up. Remove the guard and the now-unnecessary workflow env overrides.
1 parent b0e15af commit e74dd32

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

docs/public/install.sh

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ migrate_from_v1() {
202202
else
203203
# Try with sudo if available
204204
if command -v sudo >/dev/null 2>&1; then
205-
sudo rm -f "$OLD_SYSTEM_PATH" 2>/dev/null || true
205+
sudo -n rm -f "$OLD_SYSTEM_PATH" 2>/dev/null || true
206206
if [ ! -e "$OLD_SYSTEM_PATH" ] && [ ! -L "$OLD_SYSTEM_PATH" ]; then
207207
echo "✓ Removed old system symlink (required sudo)" >&2
208208
migrated=1
@@ -282,16 +282,16 @@ do_uninstall() {
282282
fi
283283
fi
284284

285-
# 3. Remove old system symlink (from v1/v2)
286-
if [ -L "$OLD_SYSTEM_PATH" ]; then
285+
# 3. Remove old system symlink (from v1/v2) — skip in CI (no legacy installs)
286+
if ! is_ci && [ -L "$OLD_SYSTEM_PATH" ]; then
287287
rm -f "$OLD_SYSTEM_PATH" 2>/dev/null || true
288-
if [ ! -e "$OLD_SYSTEM_PATH" ]; then
288+
if [ ! -e "$OLD_SYSTEM_PATH" ] && [ ! -L "$OLD_SYSTEM_PATH" ]; then
289289
echo "✓ Removed old system symlink: $OLD_SYSTEM_PATH" >&2
290290
removed_any=1
291291
else
292292
if command -v sudo >/dev/null 2>&1; then
293-
sudo rm -f "$OLD_SYSTEM_PATH" 2>/dev/null || true
294-
if [ ! -e "$OLD_SYSTEM_PATH" ]; then
293+
sudo -n rm -f "$OLD_SYSTEM_PATH" 2>/dev/null || true
294+
if [ ! -e "$OLD_SYSTEM_PATH" ] && [ ! -L "$OLD_SYSTEM_PATH" ]; then
295295
echo "✓ Removed old system symlink: $OLD_SYSTEM_PATH" >&2
296296
removed_any=1
297297
else
@@ -301,7 +301,7 @@ do_uninstall() {
301301
echo "⚠ Could not remove $OLD_SYSTEM_PATH (may need sudo)" >&2
302302
fi
303303
fi
304-
elif [ -e "$OLD_SYSTEM_PATH" ]; then
304+
elif ! is_ci && [ -e "$OLD_SYSTEM_PATH" ]; then
305305
echo "⚠ Found existing non-symlink file at $OLD_SYSTEM_PATH; not removing automatically." >&2
306306
fi
307307

@@ -508,4 +508,7 @@ else
508508
echo " Then verify: ${BIN_DIR}/fvm --version"
509509
echo ""
510510
echo " PATH: export PATH=\"$BIN_DIR:\$PATH\""
511+
if is_ci; then
512+
exit 1
513+
fi
511514
fi

0 commit comments

Comments
 (0)