chore: polish release automation and installer docs#108
Conversation
📝 WalkthroughWalkthroughRemoves Windows-installer and Docker publishing steps from CI/release, updates GoReleaser checksum naming, adds shell-specific PATH guidance to the installer, normalizes displayed Cobra ChangesRelease Pipeline Simplification and UX Improvements
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
scripts/install.sh (1)
69-75: ⚡ Quick winConsider using idiomatic Fish shell PATH setup.
The current instructions echo
fish_add_pathintoconfig.fish, causing it to execute on every shell startup. While functional, this is inefficient becausefish_add_pathmodifies universal variables and is designed to run once. The idiomatic Fish approach runs the command directly:🐟 Proposed idiomatic Fish instructions
fish) echo "$install_dir is not in your PATH. Add it with:" echo "" - echo " mkdir -p ~/.config/fish" - echo " echo 'fish_add_path $install_dir' >> ~/.config/fish/config.fish" - echo " source ~/.config/fish/config.fish" + echo " fish -c 'fish_add_path $install_dir'" ;;This approach:
- Runs from any shell (bash, zsh, or fish)
- Executes
fish_add_pathonce, persisting via Fish universal variables- Avoids redundant execution on every shell startup
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/install.sh` around lines 69 - 75, The fish case currently appends "fish_add_path $install_dir" to config.fish causing it to run on every startup; instead, invoke Fish once to add the path using a one-time universal change: replace the echo+append lines in the fish) block that reference install_dir with a command that runs fish -c 'fish_add_path "<install_dir>"' (or equivalent invocation using the install_dir variable) and remove the lines that write to ~/.config/fish/config.fish and source it so fish_add_path is applied once via Fish universal variables rather than on every shell startup.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@scripts/install.sh`:
- Around line 69-75: The fish case currently appends "fish_add_path
$install_dir" to config.fish causing it to run on every startup; instead, invoke
Fish once to add the path using a one-time universal change: replace the
echo+append lines in the fish) block that reference install_dir with a command
that runs fish -c 'fish_add_path "<install_dir>"' (or equivalent invocation
using the install_dir variable) and remove the lines that write to
~/.config/fish/config.fish and source it so fish_add_path is applied once via
Fish universal variables rather than on every shell startup.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: b1755cb5-65c5-4723-9dbb-373ca6efcdf8
⛔ Files ignored due to path filters (2)
docs/images/pb-promql-tui.pngis excluded by!**/*.pngdocs/images/pb-sql-tui.pngis excluded by!**/*.png
📒 Files selected for processing (5)
.github/workflows/build.yaml.github/workflows/release.yaml.goreleaser.ymlREADME.mdscripts/install.sh
💤 Files with no reviewable changes (3)
- .github/workflows/release.yaml
- .github/workflows/build.yaml
- .goreleaser.yml
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@Makefile`:
- Around line 21-22: The Makefile currently downloads the golangci-lint
installer from the mutable master branch; change the curl invocation in the
Makefile (the target that runs the line "curl -sSfL
https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh
-s -- -b $(GOPATH)/bin $(GOLANGCI_LINT_VERSION)") to pin the installer URL to a
specific commit SHA (replace "master" with the commit hash in the
raw.githubusercontent URL) or, alternatively, vendor the install.sh into the
repo and point the Makefile at the vendored file; ensure the invoked symbol
remains the same (the install.sh installer used by the Makefile target) and
update any documentation/variables if you add a new VENDORED_INSTALLER path.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 6159ee42-bc99-4eaf-a122-c059d530d4ac
📒 Files selected for processing (2)
DockerfileMakefile
💤 Files with no reviewable changes (1)
- Dockerfile
| # TODO: Make dependency installation more robust and reproducible. | ||
| @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin $(GOLANGCI_LINT_VERSION) |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify whether installer scripts are pinned to immutable refs vs branch heads.
set -euo pipefail
echo "Checking for mutable raw GitHub installer refs..."
rg -n 'raw\.githubusercontent\.com/.+/(master|main)/.+\|\s*sh' Makefile .github/workflows || true
echo
echo "Checking existing golangci-lint installer invocations..."
rg -n 'golangci-lint.+install\.sh|raw\.githubusercontent\.com/golangci/golangci-lint' Makefile .github/workflows || trueRepository: parseablehq/pb
Length of output: 472
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Searching workflows for `make verifiers`..."
rg -n 'make\s+verifiers\b' .github/workflows || true
echo
echo "Searching workflows for golangci-lint-related make targets..."
rg -n 'golangci-lint|verifiers|verifier' .github/workflows/ || true
echo
echo "Locating the Makefile target(s) around lines 21-22..."
nl -ba Makefile | sed -n '1,120p'Repository: parseablehq/pb
Length of output: 429
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Finding `verifiers` target(s) in Makefile..."
rg -n '^[[:space:]]*verifiers[[:space:]]*:' Makefile || true
echo
echo "Finding golangci-lint references in Makefile..."
rg -n 'golangci-lint' Makefile || true
echo
echo "Printing Makefile lines 1-120 for context..."
sed -n '1,120p' Makefile
echo
echo "Printing Makefile lines 1-200 around the golangci-lint installer location..."
# Try to include the installer region even if line numbers differ; grep nearby by searching for raw.githubusercontent.com golangci-lint
line=$(rg -n 'raw\.githubusercontent\.com/golangci/golangci-lint' Makefile | head -n1 | cut -d: -f1 || true)
if [ -n "${line:-}" ]; then
start=$(( line > 40 ? line-40 : 1 ))
end=$(( line + 40 ))
echo "Installer match at line $line; showing Makefile:$start-$end"
sed -n "${start},${end}p" Makefile
fiRepository: parseablehq/pb
Length of output: 4109
🏁 Script executed:
#!/bin/bash
# Verify whether golangci-lint installer scripts are pinned to immutable refs vs branch heads.
set -euo pipefail
echo "Checking for mutable golangci-lint installer URLs..."
rg -n 'raw\.githubusercontent\.com/golangci/golangci-lint/(master|main)/install\.sh' Makefile .github/workflows || true
echo
echo "Checking for any golangci-lint install.sh executions..."
rg -n 'golangci-lint.*install\.sh|raw\.githubusercontent\.com/golangci/golangci-lint/.+/(install\.sh)' Makefile .github/workflows || trueRepository: parseablehq/pb
Length of output: 474
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Checking for mutable golangci-lint installer URLs..."
rg -n 'raw\.githubusercontent\.com/golangci/golangci-lint/(master|main)/install\.sh' Makefile .github/workflows || trueRepository: parseablehq/pb
Length of output: 264
Pin the golangci-lint installer script URL to an immutable revision.
CI runs make verifiers (which invokes getdeps) and downloads https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh, so the executed script can change independently of this repo. Pin install.sh to a specific commit SHA (or vendor it).
Suggested hardening diff
- `@curl` -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin $(GOLANGCI_LINT_VERSION)
+ `@curl` -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/<PINNED_COMMIT_SHA>/install.sh | sh -s -- -b $(GOPATH)/bin $(GOLANGCI_LINT_VERSION)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@Makefile` around lines 21 - 22, The Makefile currently downloads the
golangci-lint installer from the mutable master branch; change the curl
invocation in the Makefile (the target that runs the line "curl -sSfL
https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh
-s -- -b $(GOPATH)/bin $(GOLANGCI_LINT_VERSION)") to pin the installer URL to a
specific commit SHA (replace "master" with the commit hash in the
raw.githubusercontent URL) or, alternatively, vendor the install.sh into the
repo and point the Makefile at the vendored file; ensure the invoked symbol
remains the same (the install.sh installer used by the Makefile target) and
update any documentation/variables if you add a new VENDORED_INSTALLER path.
Summary
Polishes the release setup after the initial release automation work.
Changes
install.shwith clearer PATH guidance for bash, zsh, and fish users~/.local/bininstallsNotes
HOMEBREW_TAP_GITHUB_TOKENis still required for Homebrew tap updatesSummary by CodeRabbit
Documentation
Installation Improvements
Release / CI
Packaging
Style