-
Notifications
You must be signed in to change notification settings - Fork 72
Add CI workflows to test install scripts and support local binary override #480
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add CI workflows to test install scripts and support local binary override #480
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡 install.ps1 prints misleading "Downloading" message when using a local binary override
When GIT_AI_LOCAL_BINARY is set, the install.ps1 script unconditionally prints "Downloading git-ai (release: local)..." at line 299, even though no download occurs — the binary is copied locally. The install.sh script correctly handles this with a conditional message ("Using local git-ai binary" vs "Downloading git-ai" at lines 246/252).
Root Cause
The Write-Host at install.ps1:299 was not updated to be conditional when the local binary override was added. In install.sh, the message was properly split:
if [ -n "${GIT_AI_LOCAL_BINARY:-}" ]; then
echo "Using local git-ai binary (release: ${RELEASE_TAG})..."
...
else
echo "Downloading git-ai (release: ${RELEASE_TAG})..."
...
fiBut in install.ps1, the message at line 299 is always printed before the conditional logic at line 316:
Write-Host ("Downloading git-ai (release: {0})..." -f $releaseTag) # line 299 - always says "Downloading"
...
if (-not [string]::IsNullOrWhiteSpace($env:GIT_AI_LOCAL_BINARY)) { # line 316
Copy-Item ... # actually copies, not downloads
}Impact: Users and CI logs will show a misleading "Downloading" message when the local binary override is in use, causing confusion during debugging.
(Refers to line 299)
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Motivation
install.sh/install.ps1) are exercised automatically across supported OSes and shells.git-aibinary instead of the latest release to catch regressions in the local build + install script interaction.Description
GIT_AI_LOCAL_BINARYininstall.shandinstall.ps1, copying the provided binary instead of downloading a release..github/workflows/install-scripts-local.ymlwhich buildsgit-aifrom source and runsinstall.sh/install.ps1in CI (Ubuntu, macOS, Windows), prepares a fake HOME and a fakeclaudebinary, and verifies shell config updates and Claude hooks..github/workflows/install-scripts-nightly.ymlwhich runs the public install scripts nightly (and on-demand) across Ubuntu/macOS/Windows, prepares a fake environment for Claude detection, and verifies PATH and hook installation.HOME/USERPROFILEviaGITHUB_ENVand add fake bin directories toGITHUB_PATHso the installer detects the fakeclaudebinary and writes~/.claude/settings.json.Testing
cargo build --release --bin git-aiand then run the install scripts withGIT_AI_LOCAL_BINARYset, and the nightly workflow is configured to exercise the public install endpoints; both will report results when CI runs.Codex Task