Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-52669

Provide ways to centralize Go version management

    XMLWordPrintable

Details

    • Improvement
    • Resolution: Fixed
    • Major
    • 7.1.2
    • None
    • build
    • 1
    • Build Team 2022 Sprint 13, Build Team 2022 Sprint 14

    Description

      We need to upgrade Go more frequently due to security vulnerabilities and Golang's short EOL schedule. Currently, every Go target in the build (40 such targets in Elixir today) have to explicitly specify which Go version to use, which makes sweeping upgrades a challenging task. However, some teams do have reasons to care about their Go version and can't necessarily be updated without their interaction. So a suggestion:

      1. Make GOVERSION optional, with a centralized default value that Build will keep up-to-date based on Go releases. This can be used by targets that really don't care, such as internal tools, test programs, and some simple shipping tools.
      2. Make GOVERSION accept only X.Y, and keep a centralized list of "the newest .Z for each X.Y". The Golang authors are pretty conscientious about not putting major changes into patch releases, and the kind of things Dev teams have worried about in the past (in particular, changes to GC that had significant performance impact) will only be in major (.Y) releases, so we should be able to update all users of (say) 1.18.x to the latest 1.18 version en masse.

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              ceej Chris Hillery
              ceej Chris Hillery
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 10h
                  10h

                  PagerDuty