Skip to content

Migrates CLI to Kong and updates Go 1.26 and Envoy 1.38#491

Draft
codefromthecrypt wants to merge 1 commit intomasterfrom
bumps
Draft

Migrates CLI to Kong and updates Go 1.26 and Envoy 1.38#491
codefromthecrypt wants to merge 1 commit intomasterfrom
bumps

Conversation

@codefromthecrypt
Copy link
Copy Markdown
Contributor

Replacing urfave/cli with Kong makes the command surface a typed model instead of a set of mutable command builders. That keeps command parsing separate from the run path and gives tests direct entry points for globals and command behavior.

The version bump moves func-e onto Go 1.26.2 and Envoy 1.38.0 while updating the lint, site and packaging tools that gate releases. Most of the remaining changes are the cleanup required by the newer stack and stricter analyzers.

This preserves Envoy flag passthrough with Kong, handles --flag=value forms when detecting config and admin arguments, keeps process command-line parsing on argv slices, adopts os.Root for tar extraction, adds the small in-memory HTTP seam used for synctest coverage of the admin/install/startup paths, and records the Go 1.24-1.26 stdlib audit notes.

@codefromthecrypt codefromthecrypt force-pushed the bumps branch 2 times, most recently from f7afb48 to b3d7fee Compare April 30, 2026 11:03
Replacing urfave/cli with Kong makes the command surface a typed model instead of a set of mutable command builders. That keeps command parsing separate from the run path and gives tests direct entry points for globals and command behavior.

The version bump moves func-e onto Go 1.26.2 and Envoy 1.38.0 while updating the lint, site and packaging tools that gate releases. Most of the remaining changes are the cleanup required by the newer stack and stricter analyzers.

This preserves Envoy flag passthrough with Kong, handles --flag=value forms when detecting config and admin arguments, keeps process command-line parsing on argv slices, adopts os.Root for tar extraction, adds the small in-memory HTTP seam used for synctest coverage of the admin/install/startup paths, and records the Go 1.24-1.26 stdlib audit notes.

A `-version` shim in cmd/func-e/main coerces the legacy single-dash flag to Kong's `--version` so old shell scripts keep working.

CI workflows pin every OS label and action version explicitly. Hosted runners move to ubuntu-24.04, ubuntu-24.04-arm (free for public repos since 2025-08-07) and macos-26 (GA since 2026-02-26). The internal-images Ubuntu parent moves to ubuntu:24.04 to match its runs-on label, fixing a long-standing inconsistency where parent_image was ubuntu:20.04 while image_tag was already ubuntu-24.04. The CentOS parent stays on quay.io/centos/centos:stream9 (supported through 2027-05-31) since the centos-9 image is already published on ghcr.io and bumping the tag would require dispatching internal-images.yml before any PR could pass. Action references stay at major-version tags. The Dockerfile comment is rewritten now that arm64 is available natively on GitHub-hosted runners.

CLI decruft on top of the Kong migration inlines the four single-call *Action wrappers (RunAction, UseAction, VersionsAction, WhichAction) into their cmd*.Run methods, replaces the nopExit panic dance with an *ExitError sentinel returned through DoMain, and compresses the six identical override blocks in initOpts into a slice walker. The transient go-stdlib-audit-1.24-1.26.md checklist is removed once its findings landed in code.

RATIONALE.md loses the "Why do we use Travis" section. Travis config was removed in d79511b (#469) and arm64 hosted runners are now GA on GitHub Actions, so the section's premise no longer holds.

Signed-off-by: Adrian Cole <adrian@tetrate.io>
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.

1 participant