Commit Graph

101 Commits

Author SHA1 Message Date
George Adams
8f19afcc70 feat: add go-download-base-url input for custom Go distributions (#721)
* feat: add go-download-base-url input for custom Go distributions

Add support for downloading Go from custom sources such as Microsoft Go
(aka.ms). Users can specify a custom download base URL via the
`go-download-base-url` input or the `GO_DOWNLOAD_BASE_URL` environment
variable (input takes precedence).

When a custom URL is provided, the action skips the GitHub-hosted
manifest and attempts to resolve versions from the custom URL's JSON
listing. If the listing is unavailable (as with aka.ms redirect links),
it falls back to constructing the download URL directly from the
version, platform, and architecture.

Usage:
  - uses: actions/setup-go@v6
    with:
      go-version: '1.25'
      go-download-base-url: 'https://aka.ms/golang/release/latest'

Changes:
- action.yml: add go-download-base-url optional input
- installer.ts: add getInfoFromDirectDownload() for URL construction
  fallback, thread custom URL through getGo/getInfoFromDist/findMatch
- main.ts: read new input and GO_DOWNLOAD_BASE_URL env var
- setup-go.test.ts: add 12 unit tests for custom URL behavior
- microsoft-validation.yml: add E2E workflow testing Microsoft build of Go
  across ubuntu/windows/macos with versions 1.24 and 1.25
- README.md: document new input with Microsoft build of Go examples

* run prettier

* fixup PR review

* revert cache-save

* fixup

* handle distinct cache

* skip json for known URL

* fix bug in JSON with custom URL
2026-03-16 12:43:44 -05:00
Masahiro Furudate
4b73464bb3 Fix golang download url to go.dev (#469)
* Fix golang download url to go.dev

* Fix const name

* Run `npm run build`
2026-02-25 13:26:30 -06:00
Priya Gupta
a5f9b05d2d Update default Go module caching to use go.mod (#705)
* Update module cache to use go.mod as key

* Fix typo

* Revise breaking changes in README for V6

Updated breaking changes section with enhanced formatting and clarified toolchain management details.
2026-01-26 10:59:03 -06:00
priya-kinthali
faf52423ec Add support for .tool-versions file in setup-go, update workflow (#673)
* setup go in local

* add .tool-versions file support
2025-10-28 10:26:52 -05:00
Nicholas Ngai
7bc60db215 Fall back to downloading from go.dev/dl instead of storage.googleapis.com/golang (#665)
* Fall back to downloading from dl.google.com/go instead of storage.googleapis.com/golang

* Use go.dev/dl instead
2025-10-27 15:43:21 -05:00
Salman Chishti
e093d1e9bb Node 24 upgrade (#624)
* Node 24 upgrade

Doing an upgrade for node 24, node 24 is stricter with types so need to add a type for achitecture

* format

* package updates

* fix for check failures

* upgrade @types/node

* update package.json version

* check failure fix

* package-lock.json update

* update node24

* npm run format

* npm run format

* node update from the workflows

* Upgrade `actions/checkout` to v5 and `actions/setup-go` to v6 in README.md

---------

Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
Co-authored-by: Priya Gupta <147705955+priyagupta108@users.noreply.github.com>
2025-09-03 21:54:45 -05:00
Matthew Hughes
1d76b952eb Improve toolchain handling (#460)
* Configure environment to avoid toolchain installs

Force `go` to always use the local toolchain (i.e. the one the one that
shipped with the go command being run) via setting the `GOTOOLCHAIN`
environment variable to `local`[1]:

> When GOTOOLCHAIN is set to local, the go command always runs the
bundled Go toolchain.

This is how things are setup in the official Docker images (e.g.[2], see
also the discussion around that change[3]). The motivation behind this
is to:

* Reduce duplicate work: if the `toolchain` version in `go.mod` was
  greated than the `go` version, the version from the `go` directive
  would be installed, then Go would detect the `toolchain` version and
  additionally install that
* Avoid Unexpected behaviour: if you specify this action runs with some Go
  version (e.g. `1.21.0`) but your go.mod contains a `toolchain` or `go`
  directive for a newer version (e.g. `1.22.0`) then, without any other
  configuration/environment setup, any go commands will be run using go
  `1.22.0`

This will be a **breaking change** for some workflows. Given a `go.mod`
like:

    module proj

    go 1.22.0

Then running any `go` command, e.g. `go mod tidy`, in an environment
where only go versions before `1.22.0` were installed would previously
trigger a toolchain download of Go `1.22.0` and that version being used
to execute the command. With this change the above would error out with
something like:

> go: go.mod requires go >= 1.22.0 (running go 1.21.7;
GOTOOLCHAIN=local)

[1] https://go.dev/doc/toolchain#select
[2] dae3405a32/Dockerfile-linux.template (L163)
[3] https://github.com/docker-library/golang/issues/472

* Prefer installing version from `toolchain` directive

Prefer this over the version from the `go` directive. Per the docs[1]

> The toolchain line declares a suggested toolchain to use with the
module or workspace

It seems reasonable to use this, since running this action in a
directory containing a `go.mod` (or `go.work`) suggests the user is
wishing to work _with the module or workspace_.

Link: https://go.dev/doc/toolchain#config [1]
Issue: https://github.com/actions/setup-go/issues/457

* squash! Configure environment to avoid toolchain installs

Only modify env if `GOTOOLCHAIN` is not set

* squash! Prefer installing version from `toolchain` directive

Avoid installing from `toolchain` if `GOTOOLCHAIN` is `local`, also
better regex for matching toolchain directive
2025-08-28 22:21:56 -05:00
Priya Gupta
29694d72cd Add manifest validation and improve error handling (#586) 2025-05-05 22:00:04 -05:00
Priya Gupta
dca8468d37 Update self-hosted environment validation and bump undici version (#556)
* Fix self-hosted environment check

* Update isSelfHosted logic
2025-04-01 10:32:30 -05:00
Tobias
3041bf56c9 feat: fallback to "raw" endpoint for manifest when rate limit is reached (#496)
* feat: fallback to "raw" endpoint for manifest when rate limit is reached

* add information about raw access to the README

* prettier

* update cross-spawn to 7.0.6 to fix vulnerability
2024-11-25 12:37:21 -06:00
John Wesley Walker III
941977282c Revise isGhes logic (#511)
* Revise `isGhes` logic

* ran `npm run format`

* added unit test

* tweaked unit test

* ran `npm run format`
2024-10-21 11:56:08 -05:00
Zxilly
b26d40294f fix: add arch to cache key (#493) 2024-08-26 15:19:57 -05:00
Dmitry Shibanov
0c52d547c9 Update dependencies for node20 (#445) 2023-12-05 17:50:42 +01:00
galargh
48ac8fd236 chore: format 2023-08-12 23:57:09 +02:00
Piotr Galar
89a192af9d fix: sync .complete marker when caching tools on windows 2023-08-12 23:52:21 +02:00
Sergey Dolin
93397bea11 Fix Install on Windows is very slow (#393)
* Fix Install on Windows is very slow

* Add unit test

* Improve readability

* Add e2e test

* fix lint

* Fix unit tests

* Fix unit tests

* limit to github hosted runners

* test hosted version of go

* AzDev environment

* rename lnkSrc

* refactor conditions

* improve tests

* refactoring

* Fix e2e test

* improve isHosted readability
2023-08-03 14:33:56 +02:00
Sergey Dolin
4e0b6c77c6 Limit to Linux only 2023-07-10 10:39:55 +02:00
Sergey Dolin
a4d10f0ea4 Add imageOS to primaryKey
https://github.com/actions/setup-go/issues/368
2023-07-10 10:17:28 +02:00
Dmitry Shibanov
fdc0d672a1 Add Go bin if go-version input is empty (#351) 2023-03-14 16:29:10 +01:00
Dmitry Shibanov
ebfdf6ac95 add warning if go-version is empty (#350) 2023-03-14 16:07:41 +01:00
Sergey Dolin
c51a720768 Enable caching by default with default input (#332) 2023-03-10 16:25:35 +01:00
Ivan
7406d654ad Add and configure ESLint and update configuration for Prettier (#341)
* Turn on ESLint and update Prettier

* Update eslint config

* Update eslint config

* Update dependencies

* Update ESLint and Prettier configurations

* update package.json

* Update prettier command

* Update prettier config file

* Change CRLF to LF

* Update docs

* Update docs
2023-03-08 10:45:16 +02:00
Evgenii Korolevskii
b8eec33327 Merge branch 'main' into use-actual-version-in-cache 2023-01-31 13:39:54 +01:00
Serghei Iakovlev
807559307d Use const declarations for variables that are never reassigned (#322) 2023-01-31 11:46:49 +01:00
Evgenii Korolevskii
b27afcd9c2 format 2023-01-20 10:28:57 +01:00
Evgenii Korolevskii
65f50caf42 use actual version in key 2023-01-20 01:30:38 +01:00
Evgenii Korolevskii
89d7939d38 use real version instead of spec 2023-01-20 01:28:58 +01:00
Evgenii Korolevskii
2e7414f276 try get path 2023-01-20 01:27:11 +01:00
Evgenii Korolevskii
de201a09c0 log version-spec 2023-01-20 01:21:36 +01:00
Evgenii Korolevskii
17106403fa Allow to use only GOCACHE for cache (#305) 2022-12-19 11:22:17 +01:00
Jongwoo Han
bb5ff97ab9 refactor: Use early return pattern to avoid nested conditions (#302) 2022-12-16 15:05:54 +01:00
Dmitry Shibanov
6edd4406fa fix log for stable aliases (#303) 2022-12-12 15:45:36 +01:00
Milos Pantic
38dbe75f81 Add stable and oldstable aliases (#300) 2022-12-12 10:58:49 +01:00
Marko Zivic
e983b65a44 Merge pull request #283 from koba1t/add_support_gowork_for_go-version-file
add support go.work file for go-version-file
2022-11-08 11:45:09 +01:00
Dmitry Shibanov
27b43e1b0d Pass the token input through on GHES (#277) 2022-11-02 12:21:18 +01:00
koba1t
7678c83214 add support gowork for go-version-file 2022-11-01 21:25:30 +09:00
n33pm
c4a742cab1 fix(): cache resolve version input (#267) 2022-10-17 18:33:22 +02:00
Evgenii Korolevskii
c4e169859f prettier format 2022-09-08 15:11:06 +02:00
Evgenii Korolevskii
db58e98a43 format 2022-09-08 14:53:17 +02:00
Evgenii Korolevskii
5547b9ed8d fix(cache): Not throw err if no cache folders 2022-09-08 13:18:41 +02:00
Evgenii Korolevskii
be45b2722d build 2022-09-08 12:29:13 +02:00
Milos Pantic
268d8c0ca0 Add support for arm32 go arch (#253) 2022-08-12 12:29:48 +02:00
Javier Romero
e0dce94eb0 Use explicit filename when downloading Windows go package
Using the explicit filename for Windows is necessary to
satisfy `Expand-Archive`'s requirement on '.zip' extension.

Signed-off-by: Javier Romero <root@jromero.codes>
2022-07-28 19:01:53 -05:00
Vladimir Safonkin
9eecd2d0d7 Minor fix 2022-07-01 09:25:30 +02:00
Vladimir Safonkin
0fd92001e9 Rework cache handling 2022-06-28 14:17:12 +02:00
Vladimir Safonkin
6036aa2424 Add cache error handling 2022-06-14 10:57:37 +02:00
IvanZosimov
b22fbbc292 Implementation of caching functionality for setup-go action (#228) 2022-05-25 12:07:29 +02:00
So Jomura
265edc1beb Add go-version-file option (#62) 2022-05-12 10:04:39 +02:00
Brian Cristante
193b404f8a Successfully set up (#231) 2022-05-03 08:43:40 -04:00
Vladimir Safonkin
ad70bef2ef Fix condition for old go versions 2022-04-17 17:36:51 +02:00