rename enterprise apps to aistor/ac, drop community minio/mc - #26
Conversation
The enterprise products were rebranded: minio-enterprise -> aistor and mc-enterprise -> ac. Re-key every appName switch onto the new names. Only the app name changes. The release directory, the binary read out of it, the package name and every dl.min.io path segment are deliberately left alone, so published artifacts are byte-identical across the rename: aistor -> minio-release/, reads minio.<release>, packages as minio ac -> mc-release/, reads mc.<release>, packages as mcli The dl.min.io path segments were already hardcoded literals rather than interpolated from appName, so no download URL moves. The metadata filename does: downloads-minio-enterprise.json -> downloads-aistor.json. Also drop the community minio and mc apps. They were the only consumers of ppc64le, so the arch list collapses to amd64+arm64 for every remaining app (aistor, ac, sidekick, warp, memkv, aimem, minfs) and the eight per-app arch guards in doPackage collapse to a single pkgArches loop. generateDownloadsJSON stays, now returning an empty document, because memkv/aimem/minfs still route through it and need valid JSON. minfs-cache-server is removed; it is not needed. A --package-name rename changes the package filename, which would break every already-published URL built from the old name. Symlink the old alias, the old versioned filename and its .sha256sum onto the new package so both resolve: aistor-<ver>-1.x86_64.rpm (real) aistor.rpm, minio.rpm -> aistor-<ver>-1.x86_64.rpm minio-<ver>-1.x86_64.rpm -> aistor-<ver>-1.x86_64.rpm minio-<ver>-1.x86_64.rpm.sha256sum -> ...rpm.sha256sum Without --package-name nothing is aliased, so the default path is unchanged. Both halves are pinned by tests that build real packages. The --appName default moves from minio (a removed app) to aistor. CLAUDE.md and README are rewritten for the final app set; two inherited claims were wrong and are corrected -- minio.service is not vendored in this repo, and sidekick metadata is not package-only.
|
@coderabbitai review |
|
Warning Review limit reached
Next review available in: 36 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (6)
📝 WalkthroughWalkthroughThe PR updates pkger for the ChangesPackaging and release alignment
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
✅ Action performedReview finished.
|
The repo only ran govulncheck, so the unit tests never ran in CI -- including the ones this branch adds, which build real packages to pin the rename's symlink compatibility. Adds a Go workflow running gofmt -l, go build, go vet and go test -v ./..., on the same Go version and trigger branches as the existing VulnCheck workflow.
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 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 `@CLAUDE.md`:
- Around line 174-187: Add the text language identifier to the fenced
repository-layout block in CLAUDE.md (lines 174-187) and the package-artifact
listing block in README.md (lines 104-110), without changing their contents.
In `@main_test.go`:
- Around line 207-210: Rename the real slice variable in the affected test to a
descriptive non-predeclared identifier, and update all references to it while
preserving the existing test behavior.
- Around line 516-518: Update the empty fallback assertion in the test to also
verify that result.Docker and result.Kubernetes contain no entries, alongside
Linux, MacOS, and Windows. Preserve the existing empty-document validation and
error message context.
- Around line 176-195: The runDoPackage test fixture currently creates only the
linux-amd64 input while doPackage packages both amd64 and arm64. Update the
fixture setup around archDir and src to also create the corresponding
linux-arm64 directory and binary with the expected naming and permissions,
ensuring every architecture in pkgArches has a valid source file.
In `@main.go`:
- Around line 997-1021: The link setup around the local link closure must stop
discarding Remove, Symlink, and Chdir failures: build release, alias, legacy
package, and checksum link paths as absolute paths, return any operation error,
and remove the process-working-directory mutation via Chdir. Preserve creation
of all latest and legacy aliases, versioned package links, and checksum links
when packageName is renamed.
- Around line 991-994: Update the package-name selection logic around the
appName mapping so both default and renamed “ac” outputs preserve the historical
“mc” latest alias, while retaining the existing “mcli” compatibility artifacts
for renamed packages. Add regression coverage verifying artifact names for both
default and explicitly renamed ac builds.
🪄 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: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: d1c93dee-01ac-4a68-87b6-ce29643c2fe0
📒 Files selected for processing (4)
CLAUDE.mdREADME.mdmain.gomain_test.go
Return link failures instead of discarding them. A failed Remove/Symlink left a required alias absent while packaging reported success -- the exact way this PR's "old download links keep working" guarantee would break silently. Link paths are now absolute and errors propagate; targets stay bare filenames so the symlinks remain relative, which is what the os.Chdir dance was for, so the process-cwd mutation is gone too. Stage fixtures for every arch in pkgArches. runDoPackage only created linux-amd64, so the arm64 iteration was silently skipped via --ignore and the tests only ever covered amd64. Both arches are now staged and --ignore is off, so a packaging failure on any arch fails the test. This also caught a latent bug in the helper: it derived the release dir from defaultPkgName, which happens to match for aistor (minio-release) but not for ac (mcli-release vs mc-release); it now calls releaseDirName(). Extend both symlink tests to ac as well as aistor, pinning ac's default alias (ac.*, package mcli_*) and its renamed output (acli.* plus legacy mcli.* aliases and versioned links). Assert link targets are relative. Rename the `real` local, which shadowed a predeclared identifier, and assert Docker and Kubernetes are empty in the fallback JSON test. Docs: mark the two bare fenced blocks as text (MD040) and correct the stale "Go 1.25+" note -- go.mod requires 1.26. Not applied: the suggestion to derive the ac alias from defaultBinarySrcName. It passes two arguments to a one-arg function so it would not compile, and it conflates the binary name with the alias. mc-enterprise historically published mc-enterprise.*, not mc.*, so there is no mc alias to preserve; the shipping config (--package-name acli) now emits both acli.* and mcli.*. Covered by tests instead.
Fixes Applied SuccessfullyFixed 4 file(s) based on 6 CodeRabbit feedback item(s) — 5 applied, 1 covered by tests instead. Files modified:
Commit: Applied
Not appliedPreserve the Validation: The latest autofix changes are on the |
Neither workflow had workflow_dispatch, so there was no way to re-run them when a run is needed on an unchanged commit -- which came up when GitHub created no runs at all for a pushed commit on this PR.
Rebrands the enterprise apps and removes the community ones.
Rename
minio-enterprise→aistor,mc-enterprise→ac.Only the app name changes. The release directory, the binary read out of it, the package name and every
dl.min.iopath segment are deliberately unchanged, so published artifacts are byte-identical:--appNameaistorminio-release/minio.<release>minioacmc-release/mc.<release>mcliThe
dl.min.iopath segments were already hardcoded literals rather than interpolated fromappName, so no download URL moves. The metadata filename does:downloads-minio-enterprise.json→downloads-aistor.json.Verified by building real packages, not just asserting:
Community minio/mc removed
They were the only consumers of ppc64le, so the arch list collapses to amd64+arm64 for every remaining app (aistor, ac, sidekick, warp, memkv, aimem, minfs). The eight per-app arch guards in
doPackagecollapse to onepkgArchesloop.generateDownloadsJSONstays — now returning an empty document — because memkv/aimem/minfs still route through it and need valid JSON.minfs-cache-serveris removed as unneeded.--appNamenow defaults toaistorinstead ofminio, which named a removed app. q always passes-aexplicitly, so this only affects bare invocations.Existing download links keep working
A
--package-namerename changes the package filename, which would break every already-published URL built from the old name. The old alias, the old versioned filename and its checksum are now symlinked onto the new package:The installed binary is untouched:
/usr/local/bin/aistoris the only real file and/usr/local/bin/miniois a symlink, so no new binary is built andminiokeeps working. Without--package-namenothing is aliased and the default path is unchanged — both halves are pinned byTestPackageRenameKeepsOldLinksandTestPackageDefaultsEmitNoLegacyLinks, which build real packages in a temp dir.Docs
CLAUDE.md and README rewritten for the final app set. Two inherited claims were wrong and are corrected:
minio.serviceis not vendored in this repo (q fetches it viaservice_file), and sidekick metadata is not "package-only" — it emits Linux binary + RPM + DEB plus Windows.Coordination
This is a breaking change to the
--appNamecontract and must land with:miniohq/q— pipeline + asset scripts, and newpackaging.binary_name/packaging.package_namekeysminiohq/aistorandminiohq/ec—.qreleaser.ymlapp_name+package_nameMerge order: this PR and a pkger release first, then q, then the product repos.
q/legacy-v1/is intentionally left on the old names.🤖 Generated with Claude Code
Summary by CodeRabbit