Commit graph

50 commits

Author SHA1 Message Date
George Adams
78af96c188 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
2026-03-09 08:23:43 +00: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
Dmitry Shibanov
0c52d547c9
Update dependencies for node20 (#445) 2023-12-05 17:50:42 +01: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
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
Milos Pantic
38dbe75f81
Add stable and oldstable aliases (#300) 2022-12-12 10:58:49 +01:00
Dmitry Shibanov
27b43e1b0d
Pass the token input through on GHES (#277) 2022-11-02 12:21:18 +01:00
n33pm
c4a742cab1
fix(): cache resolve version input (#267) 2022-10-17 18:33:22 +02:00
Milos Pantic
268d8c0ca0
Add support for arm32 go arch (#253) 2022-08-12 12:29:48 +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
Nick
4a4352b330
Add 'go-version' Output (#85)
* Add go-version to action outputs

This provides the semver version of Go that has been installed. This is useful
if only a major or minor version has been provided as the input go-version
value.

* Convert version extraction to a function

Simplify how the version is extracted and add a simple test at the same
time.

Co-authored-by: Peter Mescalchin <peter@magnetikonline.com>
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>

Co-authored-by: Peter Mescalchin <peter@magnetikonline.com>
Co-authored-by: Brian Cristante <33549821+brcrista@users.noreply.github.com>
2022-04-08 12:23:10 -04:00
Fraser Waters
0b4fbc55f6 await io.mkdirP 2022-03-28 10:54:44 +01:00
Josh Gross
802876f7c7
Fix formatting 2022-03-14 12:23:03 -04:00
Josh Gross
2a34c33bd7
Export GOROOT for versions < 1.9 2022-03-14 12:21:30 -04:00
Manuel Mendez
83124a14b6 Do not export GOROOT
This has not been necessary since [Go 1.9](https://go.dev/doc/go1.9#goroot) at
least (although clunky to do so then) but definitely not since
[Go 1.10](https://go.dev/doc/go1.10#goroot).

This is cargo culting code that is more than 2 years out of date and runs into
issues when multiple go versions are used in an action run.

Signed-off-by: Manuel Mendez <mmendez534@gmail.com>
2022-03-11 08:26:16 -05:00
Dmitry Shibanov
f6164bd8c8
Remove stable input and fix SemVer notation (#195) 2022-02-28 10:16:32 +03:00
Dmitry Shibanov
bfdd3570ce
Implement "check-latest" flag to check if pre-cached version is latest one (#186) 2022-02-09 14:59:04 +03:00
Dmitry Shibanov
1616116e1b
Use GitHub releases to download Go versions. (#58) 2020-06-29 11:41:13 -04:00
Bryan MacFarlane
6613fc89fc go env block 2020-04-06 08:42:55 -04:00
Bryan MacFarlane
0dbc7e4965 toString 2020-03-31 10:40:32 -04:00
Bryan MacFarlane
f32657ccaf output version of go it resolved to 2020-03-31 10:37:33 -04:00
Bryan MacFarlane
cec6ecefb4 output version of go it resolved to 2020-03-31 10:32:03 -04:00
Bryan MacFarlane
1c06f0e82e couple tests 2020-03-27 00:55:12 -04:00
Bryan MacFarlane
262468e92f only needed to do once 2020-03-26 13:46:15 -04:00
Bryan MacFarlane
4e8106ca18 create profiles go dir if go installed but not exists 2020-03-26 13:00:45 -04:00
Bryan MacFarlane
93ddff5bef lint 2020-03-26 12:55:08 -04:00
Bryan MacFarlane
3d89e603f2 more debug 2020-03-26 12:54:21 -04:00
Bryan MacFarlane
1fea44b3f0 create bin if not under go env GOPATH 2020-03-26 12:40:41 -04:00
Bryan MacFarlane
3e014ec8a4 lint 2020-03-26 12:23:38 -04:00
Bryan MacFarlane
75899f8cdf add debug 2020-03-26 12:17:32 -04:00
Bryan MacFarlane
1fdcb9b160 oops 2020-03-26 12:06:36 -04:00
Bryan MacFarlane
3d0e3826ed prefer globally installed bin 2020-03-26 12:02:52 -04:00
Bryan MacFarlane
43880314e9 CR feedback 2020-02-10 15:21:04 -05:00
Bryan MacFarlane
7ea80d8e5f casing 2020-02-09 22:42:10 -05:00
Bryan MacFarlane
a6a701e18e better user output 2020-02-09 22:39:44 -05:00
Bryan MacFarlane
cfc658b90a format 2020-02-09 08:47:38 -05:00
Bryan MacFarlane
3c844703e7 bugs 2020-02-09 08:44:32 -05:00
Bryan MacFarlane
dc575ee3b3 format 2020-02-09 00:29:21 -05:00
Bryan MacFarlane
4282769cc0 starting v2 and proxy support 2020-02-09 00:21:39 -05:00