Skip to content

chore: polish release automation and installer docs#108

Merged
nitisht merged 4 commits into
parseablehq:mainfrom
pratik50:feat/release-follow-up
Jun 7, 2026
Merged

chore: polish release automation and installer docs#108
nitisht merged 4 commits into
parseablehq:mainfrom
pratik50:feat/release-follow-up

Conversation

@pratik50

@pratik50 pratik50 commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Polishes the release setup after the initial release automation work.

Changes

  • Removes Docker image publishing from GoReleaser
  • Removes Docker Hub login from the release workflow
  • Keeps release output focused on binaries, archives, checksums, and Homebrew tap updates
  • Removes installer testing from the regular build workflow
  • Updates install.sh with clearer PATH guidance for bash, zsh, and fish users
  • Keeps Linux/macOS quick install behavior aligned with ~/.local/bin installs
  • Updates README install/docs and enables SQL/PromQL TUI screenshots

Notes

  • HOMEBREW_TAP_GITHUB_TOKEN is still required for Homebrew tap updates
  • Docker secrets are no longer required for release
  • Installer workflows are intentionally not included for now; install scripts will be tested manually

Summary by CodeRabbit

  • Documentation

    • Added interactive screenshots for SQL TUI and PromQL TUI in the README; added Homebrew install instructions
  • Installation Improvements

    • Installer detects user shell and shows shell-specific PATH setup instructions
  • Release / CI

    • Simplified CI to a single Linux build-and-test job; removed Windows installer CI steps
    • Release workflow no longer performs Docker Hub login
  • Packaging

    • Release tooling emits a custom checksum filename and no longer builds/publishes Docker images
  • Style

    • CLI help and command usage text simplified for clearer subcommand listings while preserving aliases

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Removes Windows-installer and Docker publishing steps from CI/release, updates GoReleaser checksum naming, adds shell-specific PATH guidance to the installer, normalizes displayed Cobra Use strings and renders aliases in CLI help, and embeds README screenshots.

Changes

Release Pipeline Simplification and UX Improvements

Layer / File(s) Summary
Platform and distribution removals
.github/workflows/build.yaml, .github/workflows/release.yaml, .goreleaser.yml
Windows installer job removed from build workflow; Docker Hub login step removed from release workflow; GoReleaser dockers block removed and checksum.name_template updated to produce ${binary}_${version}_checksums.txt.
Shell-specific PATH setup in installer
scripts/install.sh
Added detect_user_shell() and print_path_instructions() helpers; post-install PATH check now calls print_path_instructions "$INSTALL_DIR" when INSTALL_DIR is not in PATH.
Documentation screenshots
README.md
Added Homebrew installation subsection and inline Markdown images for the interactive SQL TUI and interactive PromQL TUI, replacing commented placeholders.
CLI usage string cleanup and help rendering
cmd/*, main.go
Removed shorthand segments from Cobra Use strings (keeping shorthands as Aliases) across dataset, profile, query list, role, and user commands; renderCommandHelp updated to print `name
Makefile dependency layout and VERSION
Makefile
Reorganized dependency-install grouping and getdeps notes; retained `VERSION ?= $(shell git describe --tags 2>/dev/null

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • parseablehq/pb#106: Modifies Cobra Use strings for the same CLI subcommands (overlapping edits to help text and aliases).
  • parseablehq/pb#104: Related to installer PATH guidance and GoReleaser checksum/name template changes.

Suggested reviewers

  • nitisht

Poem

🐰 I hopped through CI and trimmed the trees,
Installer now whispers PATH by shell with ease,
Docs glow brighter with screenshots in sight,
CLI names show aliases — concise and polite,
A tiny rabbit applauds the leaner release!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 12.50% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'chore: polish release automation and installer docs' accurately summarizes the main changes: refining release workflows, removing Docker publishing, and updating installer documentation.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
scripts/install.sh (1)

69-75: ⚡ Quick win

Consider using idiomatic Fish shell PATH setup.

The current instructions echo fish_add_path into config.fish, causing it to execute on every shell startup. While functional, this is inefficient because fish_add_path modifies 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_path once, 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

📥 Commits

Reviewing files that changed from the base of the PR and between 706d987 and 76a6e9c.

⛔ Files ignored due to path filters (2)
  • docs/images/pb-promql-tui.png is excluded by !**/*.png
  • docs/images/pb-sql-tui.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • .github/workflows/build.yaml
  • .github/workflows/release.yaml
  • .goreleaser.yml
  • README.md
  • scripts/install.sh
💤 Files with no reviewable changes (3)
  • .github/workflows/release.yaml
  • .github/workflows/build.yaml
  • .goreleaser.yml

@pratik50 pratik50 self-assigned this Jun 6, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between e7d1102 and 180b925.

📒 Files selected for processing (2)
  • Dockerfile
  • Makefile
💤 Files with no reviewable changes (1)
  • Dockerfile

Comment thread Makefile
Comment on lines +21 to 22
# 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)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 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 || true

Repository: 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
fi

Repository: 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 || true

Repository: 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 || true

Repository: 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.

@nitisht nitisht merged commit 3a91d79 into parseablehq:main Jun 7, 2026
3 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 7, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants