Skip to content

build: bump CI and Docker Go version to 1.26.0#10566

Open
Roasbeef wants to merge 1 commit intolightningnetwork:masterfrom
Roasbeef:ci-go-1-25
Open

build: bump CI and Docker Go version to 1.26.0#10566
Roasbeef wants to merge 1 commit intolightningnetwork:masterfrom
Roasbeef:ci-go-1-25

Conversation

@Roasbeef
Copy link
Member

This PR updates the Go version used across the entire CI and build infrastructure from 1.25.5 to 1.26.0. The prior PR (#10563) bumped the minimum Go version in all go.mod files and documentation to 1.25.5, and this change now brings the build toolchain forward to 1.26.0 so we compile and test with the latest stable release.

The following files have been updated: the Makefile GO_VERSION reference, both GitHub Actions workflows (CI and release), the golangci-lint configuration, all six Dockerfiles (production, dev, btcd, lnrpc, builder, and tools), and the protobuf generation script. Each of these previously pinned golang:1.25.5 as the base image or version string, and now references golang:1.26.0 instead. A comment example in the setup-go action was also updated for consistency.

Go 1.26 includes improvements to the compiler toolchain, standard library, and runtime that we want to take advantage of in both local development and CI. Building with the latest Go release also ensures we pick up any upstream security fixes and performance improvements that have landed since the 1.25 series.

No functional code changes are included in this PR -- only version string updates in build configuration files. The change is intentionally minimal and mechanical to make review straightforward.

All CI jobs will now build and test against Go 1.26.0, which validates that our codebase compiles cleanly under the new toolchain.

In this commit, we update the Go version used across the entire build
and CI infrastructure from 1.25.5 to 1.26.0. This covers the Makefile
reference version, all Dockerfiles (production, dev, btcd, lnrpc,
tools, builder), GitHub Actions workflows (CI and release), the
golangci-lint configuration, and the protobuf generation script.
@gemini-code-assist
Copy link

Summary of Changes

Hello @Roasbeef, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request systematically upgrades the Go version used throughout the project's continuous integration and build environment from 1.25.5 to 1.26.0. This update aligns the development toolchain with the latest stable Go release, enabling the project to leverage recent compiler optimizations, standard library enhancements, runtime improvements, and critical security updates. The changes are purely configuration-based, involving no functional code modifications, and aim to maintain a modern and secure build pipeline.

Highlights

  • Go Version Update: The Go version used across the entire CI and build infrastructure has been updated from 1.25.5 to 1.26.0.
  • Configuration Files Modified: The Makefile, GitHub Actions workflows (CI and release), golangci-lint configuration, all six Dockerfiles (production, dev, btcd, lnrpc, builder, and tools), and the protobuf generation script have been updated to reflect the new Go version.
  • No Functional Code Changes: This pull request contains only version string updates in build configuration files, with no functional code changes.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .github/actions/setup-go/action.yml
    • Updated the Go version in the cache key example comment from 1.25.5 to 1.26.0.
  • .golangci.yml
    • Updated the 'go' version configuration from 1.25.5 to 1.26.0.
  • Dockerfile
    • Updated the base Docker image from golang:1.25.5-alpine to golang:1.26.0-alpine.
  • Makefile
    • Updated the GO_VERSION variable from 1.25.5 to 1.26.0.
  • dev.Dockerfile
    • Updated the base Docker image from golang:1.25.5-alpine to golang:1.26.0-alpine.
  • docker/btcd/Dockerfile
    • Updated the base Docker image from golang:1.25.5-alpine to golang:1.26.0-alpine.
  • lnrpc/Dockerfile
    • Updated the base Docker image from golang:1.25.5-bookworm to golang:1.26.0-bookworm.
  • lnrpc/gen_protos_docker.sh
    • Updated the GO_IMAGE variable from golang:1.25.5-alpine to golang:1.26.0-alpine.
  • make/builder.Dockerfile
    • Updated the base Docker image from golang:1.25.5-bookworm to golang:1.26.0-bookworm.
  • tools/Dockerfile
    • Updated the base Docker image from golang:1.25.5 to golang:1.26.0.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/main.yml
    • .github/workflows/release.yaml
Activity
  • No human activity has occurred on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request correctly updates the Go version from 1.25.5 to 1.26.0 across the CI and build infrastructure, as intended. The changes are consistent across Makefiles, Dockerfiles, and GitHub Actions configurations.

I've added a few suggestions to further improve the project's maintainability by ensuring version consistency in go.mod and enhancing the automated version checking scripts. These changes will help make future version bumps even more straightforward and less error-prone.

# - The base part is made from the OS name, Go version and a
# job-specified key prefix. Example: `linux-go-1.25.5-unit-test-`.
# It ensures that a job running on Linux with Go 1.25 only looks for
# job-specified key prefix. Example: `linux-go-1.26.0-unit-test-`.

Choose a reason for hiding this comment

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

medium

Thanks for updating the example in this comment. To prevent this from being missed in future version bumps, you might consider enhancing scripts/check-go-version-yaml.sh to also check for Go version strings in comments within YAML files, for example by looking for patterns like go-X.Y.Z.

# GitHub Actions. This is the reference version for the project. All other Go
# versions are checked against this version.
GO_VERSION = 1.25.5
GO_VERSION = 1.26.0

Choose a reason for hiding this comment

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

medium

While you've updated the GO_VERSION here, the go.mod file still specifies go 1.25.5. To maintain consistency and ensure that the minimum required version reflects the build toolchain, it's recommended to update the go directive in go.mod as well. The comment within go.mod itself suggests that this version should be kept in sync with the GO_VERSION in the Makefile.

I suggest changing it to go 1.26.0 to match the GO_VERSION. This will also allow developers to start using Go 1.26 language features, with the toolchain enforcing this minimum version.

@lightninglabs-deploy lightninglabs-deploy added the severity-low Best-effort review label Feb 11, 2026
ziggie1984

This comment was marked as outdated.

@ziggie1984
Copy link
Collaborator

Cross-compilation is broken for the arm CI matrix entry due to Go 1.26 dropping support for the windows/arm (32-bit ARM) target.

Reproduction:

make release sys="darwin-arm64 freebsd-arm linux-armv6 linux-armv7 linux-arm64 windows-arm"

All targets build successfully except windows-arm, which fails with:

go: unsupported GOOS/GOARCH pair windows/arm

Root cause: Go 1.26 removed the windows/arm port (deprecated since Go 1.24). The supported Windows targets are now windows/386, windows/amd64, and windows/arm64 only.

Proposed fix: Replace windows-arm with windows-arm64 in two files:

  1. make/release_flags.mk (line 29):
-windows-arm
+windows-arm64
  1. .github/workflows/main.yml (line 179):
-            sys: darwin-arm64 freebsd-arm linux-armv6 linux-armv7 linux-arm64 windows-arm
+            sys: darwin-arm64 freebsd-arm linux-armv6 linux-armv7 linux-arm64 windows-arm64

This drops 32-bit ARM Windows (dead platform — only ever used on Windows RT/Surface RT circa 2012) and adds 64-bit ARM Windows (Surface Pro X, Snapdragon laptops), which is the actively supported modern ARM Windows platform.

Copy link
Collaborator

@ziggie1984 ziggie1984 left a comment

Choose a reason for hiding this comment

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

Please remove the windows 32 bit arm support

@lightninglabs-deploy
Copy link
Collaborator

@Roasbeef, remember to re-request review from reviewers when ready

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants