Skip to content

x/build: publish periodic tip binary builds for CI tooling #80014

Description

@qmuntal

It would be useful for the Go project to publish periodic binary builds of Go tip, so CI tooling can make testing against a recent development version of Go as easy as:

- uses: actions/setup-go@vN
  with:
    go-version: tip

The main motivation is to make it easier for Go package maintainers to find compatibility problems before a major Go release ships. Today, projects that want early signal can use golang.org/dl/gotip, which is very flexible: it can build the latest commit, a specific older commit on the main branch, a development branch, or even a CL still in review.

However, gotip works by downloading source and building Go. For many GitHub Actions users, that is enough friction that they do not add tip testing to their CI matrix. Pre-built tip archives would make the common case much easier: “test against a reasonably recent Go development build and report failures as non-fatal signal.”

There is related interest on the actions/setup-go side: actions/setup-go#21. That action can already install released Go versions from binary archives, but supporting go-version: tip well likely needs an upstream source of official or semi-official tip build artifacts and machine-readable metadata.

There was prior discussion of nightly or periodic pre-release builds in #29205. At the time, one blocker was that the Go release process was still too manual. Since then, much of that automation work has landed, which may make periodic tip binary builds more feasible now.

This issue is not necessarily asking for a formal proposal immediately. Since this is mostly in x/build / release infrastructure territory, it may be enough to discuss the shape here first and promote it later only if needed.

A possible target state:

  • The Go project publishes binary archives for a selected recent tip commit on a regular cadence, perhaps nightly.
  • The builds are available for the same or a useful subset of supported release platforms.
  • A machine-readable manifest exposes the latest available tip build, commit hash, build time, archive URLs, and checksums.
  • CI integrations such as actions/setup-go can resolve go-version: tip to the latest published tip build.
  • The builds are clearly framed as development snapshots, not supported Go releases, and not covered by the Go security policy.
  • gotip remains the tool for arbitrary commits, branches, and CLs.

Example CI usage using setup-go:

strategy:
  matrix:
    go-version: ['1.25.x', 'tip']

continue-on-error: ${{ matrix.go-version == 'tip' }}

steps:
  - uses: actions/checkout@vN

  - uses: actions/setup-go@vN
    with:
      go-version: ${{ matrix.go-version }}

  - run: go test ./...

@golang/release @dmitshur

Metadata

Metadata

Assignees

No one assigned

    Labels

    Buildersx/build issues (builders, bots, dashboards)FeatureRequestIssues asking for a new feature that does not need a proposal.NeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions