Skip to content

Bundle go-search-replace next to vip-next - #3027

Draft
mokagio wants to merge 6 commits into
ainfra-3030-refine-the-vip-cli-signing-implementation-from-3013from
mokagio/bundle-go-search-replace
Draft

Bundle go-search-replace next to vip-next#3027
mokagio wants to merge 6 commits into
ainfra-3030-refine-the-vip-cli-signing-implementation-from-3013from
mokagio/bundle-go-search-replace

Conversation

@mokagio

@mokagio mokagio commented Sep 1, 2026

Copy link
Copy Markdown

The agents I worked with for #3019 flagged that the vip-next search-replace command requires and additional Go binary, go-search-replace. I stacked this PR to handle code signing it, but I'm unsure about the design decision of shipping two binaries of one CLI. This is the first Go CLI I work with, so I must be missing something. Pinging @rinatkhaziev for more information. Thanks!

AI-generated details

Description

Stacked on #3019. Each platform job fetches the pinned go-search-replace helper (public GitHub release + MANIFEST sha256, no gh auth), signs it the same way as vip-next on macOS and Windows, and ships a per-arch tarball of vip-next + go-search-replace so ResolveBinary finds a sibling.

Without this, a signed vip-next still fails import sql --search-replace and dev-env sync sql unless the helper is already on PATH.

Changelog Description

No customer-facing change until these artifacts are published.

Pull request checklist

Steps to Test

  1. Wait for the Buildkite macOS/Windows/Linux jobs.
  2. Download a dist/vip-next-*.tar.gz artifact.
  3. Extract it. Confirm it contains vip-next and go-search-replace (.exe on Windows).
  4. On a machine without the helper on PATH, ./vip-next --version and ./vip-next search-replace --help should not say the binary is missing.

mokagio and others added 2 commits September 1, 2026 15:47
Public release assets do not need `gh`. TARGETS selects arches so a job that
cross-compiles can pull both slices.

---

Generated with the help of Grok, https://grok.x.ai

Co-Authored-By: Grok 4.6 <grok@x.ai>
Each arch is a tarball of `vip-next` plus the helper, so ResolveBinary finds
a sibling. macOS notarizes both Mach-Os; Windows Authenticode-signs both PEs.

---

Generated with the help of Grok, https://grok.x.ai

Co-Authored-By: Grok 4.6 <grok@x.ai>
Copilot AI lite review requested due to automatic review settings September 1, 2026 05:52
@mokagio mokagio self-assigned this Sep 1, 2026
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Buildkite Go release pipeline to bundle the pinned go-search-replace helper alongside vip-next in per-OS/arch tarballs, ensuring ResolveBinary can find a sibling helper without requiring it on PATH.

Changes:

  • Replace the Makefile’s helper-vendoring implementation with a dedicated .buildkite/fetch-search-replace.sh (curl + MANIFEST sha256 verification).
  • Package vip-next + go-search-replace into dist/vip-next-<os>-<arch>.tar.gz via .buildkite/pack-release.sh, and update Buildkite artifact collection accordingly.
  • Update macOS/Windows/Linux Buildkite build scripts and signing steps to fetch/sign/package the helper.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Makefile Delegates helper fetching/verifying to .buildkite/fetch-search-replace.sh for vendoring.
docs/BUILD-SIGNING.md Updates documentation to reflect new bundled tarball artifacts and CI fetch/sign/package flow.
.buildkite/pipeline.yml Updates artifact paths to upload per-arch .tar.gz bundles (and checksums).
.buildkite/pack-release.sh New script to stage and tar vip-next + go-search-replace into dist/.
.buildkite/fetch-search-replace.sh New script to download pinned helper releases via curl and verify against MANIFEST sha256.
.buildkite/build-windows.ps1 Fetches/signs helper, packages tarball, and emits tarball checksum.
.buildkite/build-macos.sh Fetches helper, signs/notarizes both binaries, packages tarballs, and emits tarball checksums.
.buildkite/build-linux.sh Fetches helper, builds both arches, packages tarballs, and emits tarball checksums.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .buildkite/pack-release.sh
Comment thread Makefile
@mokagio
mokagio marked this pull request as draft September 1, 2026 06:13
mokagio and others added 3 commits September 1, 2026 16:16
Callers checksum dist/${BIN_BASE}-…; a hard-coded vip-next prefix would miss
the file if BIN_BASE is overridden.

---

Generated with the help of Grok, https://grok.x.ai

Co-Authored-By: Grok 4.6 <grok@x.ai>
The tag comes from MANIFEST; TAG= is no longer an override.

---

Generated with the help of Grok, https://grok.x.ai

Co-Authored-By: Grok 4.6 <grok@x.ai>
---

Generated with the help of Grok, https://grok.x.ai

Co-Authored-By: Grok 4.6 <grok@x.ai>
Comment thread .buildkite/build-linux.sh Outdated
Co-authored-by: Gio Lodi <giovanni.lodi42@gmail.com>
@sonarqubecloud

sonarqubecloud Bot commented Sep 1, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants