mirror of
https://github.com/actions/setup-go.git
synced 2026-11-09 22:53:39 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
802e89cd73 | ||
|
|
7d2730e317 | ||
|
|
b2a9ab24f0 | ||
|
|
3c1b57c66a | ||
|
|
90ad2b35f6 | ||
|
|
0464ec84ca | ||
|
|
3bfff43db6 | ||
|
|
e626ada899 | ||
|
|
468e940882 | ||
|
|
34829cb9ac | ||
|
|
addc0880c9 | ||
|
|
fba3fb4ead | ||
|
|
5064d95ba1 |
No files matched your search
@@ -20,7 +20,7 @@ jobs:
|
|||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
go-version: ['1.25', '1.24']
|
go-version: ['1.25', '1.24']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Setup Microsoft build of Go ${{ matrix.go-version }}
|
- name: Setup Microsoft build of Go ${{ matrix.go-version }}
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -59,7 +59,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GO_DOWNLOAD_BASE_URL: 'https://aka.ms/golang/release/latest'
|
GO_DOWNLOAD_BASE_URL: 'https://aka.ms/golang/release/latest'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Setup Microsoft build of Go via environment variable
|
- name: Setup Microsoft build of Go via environment variable
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -95,7 +95,7 @@ jobs:
|
|||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
architecture: arm64
|
architecture: arm64
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Setup Microsoft build of Go with architecture
|
- name: Setup Microsoft build of Go with architecture
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -116,7 +116,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Setup Microsoft build of Go with caching
|
- name: Setup Microsoft build of Go with caching
|
||||||
uses: ./
|
uses: ./
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checking out
|
- name: Checking out
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Publish
|
- name: Publish
|
||||||
id: publish
|
id: publish
|
||||||
uses: actions/publish-immutable-action@v0.0.4
|
uses: actions/publish-immutable-action@v0.0.4
|
||||||
@@ -18,9 +18,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go Stable
|
- name: Setup Go Stable
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -33,9 +33,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go oldStable
|
- name: Setup Go oldStable
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -43,21 +43,46 @@ jobs:
|
|||||||
- name: Verify Go
|
- name: Verify Go
|
||||||
run: go version
|
run: go version
|
||||||
|
|
||||||
|
go-env-outputs:
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
- name: Setup Go
|
||||||
|
id: setup-go
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
go-version: stable
|
||||||
|
- name: Show Go environment outputs
|
||||||
|
run: |
|
||||||
|
echo "GOPATH: ${{ steps.setup-go.outputs.GOPATH }}"
|
||||||
|
echo "GOBIN: ${{ steps.setup-go.outputs.GOBIN }}"
|
||||||
|
echo "go-bin-path: ${{ steps.setup-go.outputs.go-bin-path }}"
|
||||||
|
echo "GOROOT: ${{ steps.setup-go.outputs.GOROOT }}"
|
||||||
|
echo "GOCACHE: ${{ steps.setup-go.outputs.GOCACHE }}"
|
||||||
|
echo "GOMODCACHE: ${{ steps.setup-go.outputs.GOMODCACHE }}"
|
||||||
|
echo "GOOS: ${{ steps.setup-go.outputs.GOOS }}"
|
||||||
|
echo "GOARCH: ${{ steps.setup-go.outputs.GOARCH }}"
|
||||||
|
echo "GOTOOLDIR: ${{ steps.setup-go.outputs.GOTOOLDIR }}"
|
||||||
|
|
||||||
aliases-arch:
|
aliases-arch:
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
version: [stable, oldstable]
|
version: [stable, oldstable]
|
||||||
architecture: [x64, x32]
|
architecture: [x64, x32]
|
||||||
exclude:
|
exclude:
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
architecture: x32
|
architecture: x32
|
||||||
- os: macos-latest-large
|
- os: macos-15-intel
|
||||||
architecture: x32
|
architecture: x32
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }}
|
- name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }}
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -72,7 +97,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest, macos-latest-large]
|
os: [macos-latest, windows-latest, ubuntu-latest, macos-15-intel]
|
||||||
go: [1.21.13, 1.22.8, 1.23.2]
|
go: [1.21.13, 1.22.8, 1.23.2]
|
||||||
include:
|
include:
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
@@ -82,7 +107,7 @@ jobs:
|
|||||||
go: 1.23.2
|
go: 1.23.2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: setup-go ${{ matrix.go }}
|
- name: setup-go ${{ matrix.go }}
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -98,10 +123,10 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
go-version: ['1.20', '1.21', '1.22', '1.23']
|
go-version: ['1.20', '1.21', '1.22', '1.23']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go and check latest
|
- name: Setup Go and check latest
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -115,9 +140,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go and check latest
|
- name: Setup Go and check latest
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -131,9 +156,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go and check latest
|
- name: Setup Go and check latest
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -147,9 +172,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go and check latest
|
- name: Setup Go and check latest
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -163,9 +188,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go from .go-version file
|
- name: Setup Go from .go-version file
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
@@ -179,11 +204,11 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [macos-latest, windows-latest, ubuntu-latest, macos-latest-large]
|
os: [macos-latest, windows-latest, ubuntu-latest, macos-15-intel]
|
||||||
go: [1.20.14, 1.21.10, 1.22.8, 1.23.2]
|
go: [1.20.14, 1.21.10, 1.22.8, 1.23.2]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: setup-go ${{ matrix.go }}
|
- name: setup-go ${{ matrix.go }}
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -199,11 +224,11 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest, ubuntu-latest, macos-latest-large]
|
os: [windows-latest, ubuntu-latest, macos-15-intel]
|
||||||
go: [1.11.12]
|
go: [1.11.12]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: setup-go ${{ matrix.go }}
|
- name: setup-go ${{ matrix.go }}
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -219,7 +244,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large]
|
os: [ubuntu-latest, windows-latest, macos-latest, macos-15-intel]
|
||||||
go-version: [1.20.14, 1.21, 1.22, 1.23]
|
go-version: [1.20.14, 1.21, 1.22, 1.23]
|
||||||
include:
|
include:
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
@@ -228,10 +253,10 @@ jobs:
|
|||||||
architecture: x64
|
architecture: x64
|
||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
architecture: x64
|
architecture: x64
|
||||||
- os: macos-latest-large
|
- os: macos-15-intel
|
||||||
architecture: x64
|
architecture: x64
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Go and check latest
|
- name: Setup Go and check latest
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ jobs:
|
|||||||
cache: [false, true]
|
cache: [false, true]
|
||||||
go: [1.20.1]
|
go: [1.20.1]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: 'Setup ${{ matrix.cache }}, cache: ${{ matrix.go }}'
|
- name: 'Setup ${{ matrix.cache }}, cache: ${{ matrix.go }}'
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -88,7 +88,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
cache: [false, true]
|
cache: [false, true]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: 'Setup default go, cache: ${{ matrix.cache }}'
|
- name: 'Setup default go, cache: ${{ matrix.cache }}'
|
||||||
uses: ./
|
uses: ./
|
||||||
@@ -121,7 +121,7 @@ jobs:
|
|||||||
cache: [false]
|
cache: [false]
|
||||||
go: [1.20.1]
|
go: [1.20.1]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}'
|
- name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}'
|
||||||
uses: ./
|
uses: ./
|
||||||
|
|||||||
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
File renamed without changes.
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
File renamed without changes.
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
File renamed without changes.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
File renamed without changes.
Generated
BIN
Binary file not shown.
@@ -35,7 +35,7 @@ See [action.yml](action.yml).
|
|||||||
|
|
||||||
<!-- start usage -->
|
<!-- start usage -->
|
||||||
```yaml
|
```yaml
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
# Version or version range of Go to use
|
# Version or version range of Go to use
|
||||||
go-version: '1.23'
|
go-version: '1.23'
|
||||||
@@ -70,8 +70,8 @@ See [action.yml](action.yml).
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25' # The Go version to download (if necessary) and use.
|
go-version: '1.25' # The Go version to download (if necessary) and use.
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -94,6 +94,7 @@ the [check-latest input](docs/advanced-usage.md#check-latest-version).
|
|||||||
The `go-version` input supports the following syntax:
|
The `go-version` input supports the following syntax:
|
||||||
|
|
||||||
- Specific versions: `1.25`, `1.24.11`, `1.24.0-rc.1`, `1.23.0-beta.1`
|
- Specific versions: `1.25`, `1.24.11`, `1.24.0-rc.1`, `1.23.0-beta.1`
|
||||||
|
- Native Go versions: `go1.21`, `go1.21.5`, `go1.18beta2`, `go1.21rc2`. `go1.21` resolves to exactly `1.21.0`, unlike `1.21`, which matches patch releases.
|
||||||
- SemVer version range syntax: `^1.25.1`, `~1.24.1`, `>=1.25.0-rc.1`, `<1.25.0`, `>=1.22.0 <1.24.0`
|
- SemVer version range syntax: `^1.25.1`, `~1.24.1`, `>=1.25.0-rc.1`, `<1.25.0`, `>=1.22.0 <1.24.0`
|
||||||
- Aliases: `stable`, `oldstable`
|
- Aliases: `stable`, `oldstable`
|
||||||
- Wildcards: `1.25.x`, `1.x`
|
- Wildcards: `1.25.x`, `1.x`
|
||||||
|
|||||||
@@ -1,4 +1,181 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"stable": false,
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.src.tar.gz",
|
||||||
|
"os": "",
|
||||||
|
"arch": "",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "3cb14e2c82da366f7393c988f1f3fc2c16b71a5492bd3d49d35886cdf27a9d13",
|
||||||
|
"size": 22816245,
|
||||||
|
"kind": "source"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.darwin-amd64.tar.gz",
|
||||||
|
"os": "darwin",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "83fa94b3101d1a00dc5685645e4b49809a5dad18ce19ab449392806a85c05125",
|
||||||
|
"size": 143466224,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.darwin-amd64.pkg",
|
||||||
|
"os": "darwin",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "fcab5fbe2b9a78bd677c008914df4ee1079178e1c96592b85fa0bd04e2e8e099",
|
||||||
|
"size": 143951639,
|
||||||
|
"kind": "installer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.darwin-arm64.tar.gz",
|
||||||
|
"os": "darwin",
|
||||||
|
"arch": "arm64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "b442585cbd50759bd11d7a9971e02ec3b2e8cfc1ff1094fa23afadc9e3889689",
|
||||||
|
"size": 137682754,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.darwin-arm64.pkg",
|
||||||
|
"os": "darwin",
|
||||||
|
"arch": "arm64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "61425e05dfffce91066bf3625d945baa377c13c659b4ca6fded39bcb391ef2c7",
|
||||||
|
"size": 138172943,
|
||||||
|
"kind": "installer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.freebsd-386.tar.gz",
|
||||||
|
"os": "freebsd",
|
||||||
|
"arch": "386",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "f45899dcc440c9943b3af11a2856959e1ffd9fb11d0dbdbe6398615a96715751",
|
||||||
|
"size": 112424968,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.freebsd-amd64.tar.gz",
|
||||||
|
"os": "freebsd",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "f5688d21a0e02991445b7992f01fc5fda459c84a1812b3b08c2ada4a98e74b5e",
|
||||||
|
"size": 141351456,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-386.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "386",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "74ac524d7d17df606cc74059bf30efce35bb6930f950110dd79cc58ba057f186",
|
||||||
|
"size": 112609338,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-amd64.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "b5dacafa59737cfb0d657902b70c2ad1b6bb4ed15e85ea2806f72ce3d4824688",
|
||||||
|
"size": 141429704,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-arm64.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "arm64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "21e4248594401568c2e8704b9d26c6185a61f46b4f17e1a628bf1b5d9a010503",
|
||||||
|
"size": 108461508,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-armv6l.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "armv6l",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "bc958a63b51c44762ec026ab587b0261e94cf6337613bfbbcfbd0414fb95f7b6",
|
||||||
|
"size": 109806288,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-ppc64le.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "ppc64le",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "573916974201745360883102c80482e1d6730683d1a4a6bb4b469978d4f99d30",
|
||||||
|
"size": 108654946,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.linux-s390x.tar.gz",
|
||||||
|
"os": "linux",
|
||||||
|
"arch": "s390x",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "860ee3e5cd68fd36d3d49654adc37b9450584d07f0745f7f461080d9cc7749e1",
|
||||||
|
"size": 111316368,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-386.zip",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "386",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "666b808f6835f928aa9d8ffa065304af61540b579b4d0eb5c55b7f2a7ec9fff2",
|
||||||
|
"size": 128931729,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-386.msi",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "386",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "b3ea5bb064c87e47871488cd15bc99ebd0919529acc97a684e44ef683e459acb",
|
||||||
|
"size": 113459200,
|
||||||
|
"kind": "installer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-amd64.zip",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "e2a3e0ee984205be36d59f333a7e327ab14517b7c3a11d9b8651e02895ced69a",
|
||||||
|
"size": 157785083,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-amd64.msi",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "amd64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "36df8cad76eff69033b748cf71343c8d3f73b72067d57be52ec4996eb05539e4",
|
||||||
|
"size": 138551296,
|
||||||
|
"kind": "installer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-arm64.zip",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "arm64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "9ed027803361cab0b8c338e698e16586d83d973f01815e17d2ab2990e29b8c66",
|
||||||
|
"size": 123458965,
|
||||||
|
"kind": "archive"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename": "go1.18beta2.windows-arm64.msi",
|
||||||
|
"os": "windows",
|
||||||
|
"arch": "arm64",
|
||||||
|
"version": "go1.18beta2",
|
||||||
|
"sha256": "cfbe500daed74dd26e556619a9f0e0b3d20f8a4cf31b48618c4285f47dca1f0c",
|
||||||
|
"size": 108797952,
|
||||||
|
"kind": "installer"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"version": "go1.13.7",
|
"version": "go1.13.7",
|
||||||
"stable": true,
|
"stable": true,
|
||||||
|
|||||||
+353
-3
@@ -17,6 +17,7 @@ import goTestManifest from './data/versions-manifest.json' with {type: 'json'};
|
|||||||
|
|
||||||
import type {IGoVersion} from '../src/installer.js';
|
import type {IGoVersion} from '../src/installer.js';
|
||||||
import type {IToolRelease} from '@actions/tool-cache';
|
import type {IToolRelease} from '@actions/tool-cache';
|
||||||
|
import {GO_ENV_OUTPUTS} from '../src/constants.js';
|
||||||
|
|
||||||
const httpClientGetJson = jest.fn();
|
const httpClientGetJson = jest.fn();
|
||||||
|
|
||||||
@@ -28,6 +29,8 @@ jest.unstable_mockModule('@actions/core', () => ({
|
|||||||
getBooleanInput: jest.fn(),
|
getBooleanInput: jest.fn(),
|
||||||
info: jest.fn(),
|
info: jest.fn(),
|
||||||
debug: jest.fn(),
|
debug: jest.fn(),
|
||||||
|
warning: jest.fn(),
|
||||||
|
setOutput: jest.fn(),
|
||||||
exportVariable: jest.fn()
|
exportVariable: jest.fn()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -110,6 +113,8 @@ describe('setup-go', () => {
|
|||||||
let findSpy: jest.Mock;
|
let findSpy: jest.Mock;
|
||||||
let cnSpy: jest.SpiedFunction<typeof process.stdout.write>;
|
let cnSpy: jest.SpiedFunction<typeof process.stdout.write>;
|
||||||
let logSpy: jest.Mock;
|
let logSpy: jest.Mock;
|
||||||
|
let setOutputSpy: jest.Mock<typeof core.setOutput>;
|
||||||
|
let warningSpy: jest.Mock<typeof core.warning>;
|
||||||
let getSpy: jest.Mock;
|
let getSpy: jest.Mock;
|
||||||
let platSpy: jest.Mock;
|
let platSpy: jest.Mock;
|
||||||
let archSpy: jest.Mock;
|
let archSpy: jest.Mock;
|
||||||
@@ -198,6 +203,8 @@ describe('setup-go', () => {
|
|||||||
// writes
|
// writes
|
||||||
cnSpy = jest.spyOn(process.stdout, 'write');
|
cnSpy = jest.spyOn(process.stdout, 'write');
|
||||||
logSpy = core.info as jest.Mock;
|
logSpy = core.info as jest.Mock;
|
||||||
|
setOutputSpy = core.setOutput as jest.Mock<typeof core.setOutput>;
|
||||||
|
warningSpy = core.warning as jest.Mock<typeof core.warning>;
|
||||||
dbgSpy = core.debug as jest.Mock;
|
dbgSpy = core.debug as jest.Mock;
|
||||||
getSpy.mockImplementation(() => goJsonData as IGoVersion[] | null);
|
getSpy.mockImplementation(() => goJsonData as IGoVersion[] | null);
|
||||||
cnSpy.mockImplementation(() => true);
|
cnSpy.mockImplementation(() => true);
|
||||||
@@ -336,11 +343,11 @@ describe('setup-go', () => {
|
|||||||
expect(fileName).toBe('go1.13.7.windows-386.zip');
|
expect(fileName).toBe('go1.13.7.windows-386.zip');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('finds unstable pre-release version', async () => {
|
it('finds unstable release candidate', async () => {
|
||||||
os.platform = 'linux';
|
os.platform = 'linux';
|
||||||
os.arch = 'x64';
|
os.arch = 'x64';
|
||||||
|
|
||||||
// spec: 1.14, stable=false => go1.14rc1
|
// spec: 1.14.0-rc.1, stable=false => go1.14rc1
|
||||||
const match: IGoVersion | undefined = await im.findMatch('1.14.0-rc.1');
|
const match: IGoVersion | undefined = await im.findMatch('1.14.0-rc.1');
|
||||||
expect(match).toBeDefined();
|
expect(match).toBeDefined();
|
||||||
const version: string = match ? match.version : '';
|
const version: string = match ? match.version : '';
|
||||||
@@ -349,6 +356,46 @@ describe('setup-go', () => {
|
|||||||
expect(fileName).toBe('go1.14rc1.linux-amd64.tar.gz');
|
expect(fileName).toBe('go1.14rc1.linux-amd64.tar.gz');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('finds unstable beta version', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
// spec: 1.18.0-beta.2, stable=false => go1.18beta2
|
||||||
|
const match: im.IGoVersion | undefined =
|
||||||
|
await im.findMatch('1.18.0-beta.2');
|
||||||
|
expect(match).toBeDefined();
|
||||||
|
const version: string = match ? match.version : '';
|
||||||
|
expect(version).toBe('go1.18beta2');
|
||||||
|
const fileName = match ? match.files[0].filename : '';
|
||||||
|
expect(fileName).toBe('go1.18beta2.linux-amd64.tar.gz');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('finds unstable release candidate (go version format)', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
// spec: 1.14rc1, stable=false => go1.14rc1
|
||||||
|
const match: im.IGoVersion | undefined = await im.findMatch('1.14rc1');
|
||||||
|
expect(match).toBeDefined();
|
||||||
|
const version: string = match ? match.version : '';
|
||||||
|
expect(version).toBe('go1.14rc1');
|
||||||
|
const fileName = match ? match.files[0].filename : '';
|
||||||
|
expect(fileName).toBe('go1.14rc1.linux-amd64.tar.gz');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('finds unstable beta version (go version format)', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
// spec: 1.18beta2, stable=false => go1.18beta2
|
||||||
|
const match: im.IGoVersion | undefined = await im.findMatch('1.18beta2');
|
||||||
|
expect(match).toBeDefined();
|
||||||
|
const version: string = match ? match.version : '';
|
||||||
|
expect(version).toBe('go1.18beta2');
|
||||||
|
const fileName = match ? match.files[0].filename : '';
|
||||||
|
expect(fileName).toBe('go1.18beta2.linux-amd64.tar.gz');
|
||||||
|
});
|
||||||
|
|
||||||
it('evaluates to stable with input as true', async () => {
|
it('evaluates to stable with input as true', async () => {
|
||||||
inputs['go-version'] = '1.13.0';
|
inputs['go-version'] = '1.13.0';
|
||||||
inputs.stable = 'true';
|
inputs.stable = 'true';
|
||||||
@@ -424,6 +471,26 @@ describe('setup-go', () => {
|
|||||||
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('finds a rc version of go already in the cache', async () => {
|
||||||
|
inputs['go-version'] = '1.14rc1';
|
||||||
|
|
||||||
|
const toolPath = path.normalize('/cache/go/1.14.0rc.1/x64');
|
||||||
|
findSpy.mockImplementation(() => toolPath);
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(`Found in cache @ ${toolPath}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('finds a rc version in the cache and adds it to the path', async () => {
|
||||||
|
inputs['go-version'] = '1.14rc1';
|
||||||
|
const toolPath = path.normalize('/cache/go/1.14.0.rc.1/x64');
|
||||||
|
findSpy.mockImplementation(() => toolPath);
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
const expPath = path.join(toolPath, 'bin');
|
||||||
|
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
||||||
|
});
|
||||||
|
|
||||||
it('handles unhandled error and reports error', async () => {
|
it('handles unhandled error and reports error', async () => {
|
||||||
const errMsg = 'unhandled error message';
|
const errMsg = 'unhandled error message';
|
||||||
inputs['go-version'] = '1.13.0';
|
inputs['go-version'] = '1.13.0';
|
||||||
@@ -480,6 +547,51 @@ describe('setup-go', () => {
|
|||||||
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('downloads a rc version not in the cache', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
inputs['go-version'] = '1.14rc1';
|
||||||
|
|
||||||
|
findSpy.mockImplementation(() => '');
|
||||||
|
dlSpy.mockImplementation(() => '/some/temp/path');
|
||||||
|
const toolPath = path.normalize('/cache/go/1.14.0-rc.1/x64');
|
||||||
|
extractTarSpy.mockImplementation(() => '/some/other/temp/path');
|
||||||
|
cacheSpy.mockImplementation(() => toolPath);
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
const expPath = path.join(toolPath, 'bin');
|
||||||
|
|
||||||
|
expect(dlSpy).toHaveBeenCalled();
|
||||||
|
expect(extractTarSpy).toHaveBeenCalled();
|
||||||
|
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('downloads a rc version not in the cache (windows)', async () => {
|
||||||
|
os.platform = 'win32';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
inputs['go-version'] = '1.14rc1';
|
||||||
|
process.env['RUNNER_TEMP'] = 'C:\\temp\\';
|
||||||
|
|
||||||
|
findSpy.mockImplementation(() => '');
|
||||||
|
dlSpy.mockImplementation(() => 'C:\\temp\\some\\path');
|
||||||
|
extractZipSpy.mockImplementation(() => 'C:\\temp\\some\\other\\path');
|
||||||
|
|
||||||
|
const toolPath = path.normalize('C:\\cache\\go\\1.21.0-rc.2\\x64');
|
||||||
|
cacheSpy.mockImplementation(() => toolPath);
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
const expPath = path.win32.join(toolPath, 'bin');
|
||||||
|
expect(dlSpy).toHaveBeenCalledWith(
|
||||||
|
'https://go.dev/dl/go1.14rc1.windows-amd64.zip',
|
||||||
|
'C:\\temp\\go1.14rc1.windows-amd64.zip',
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`);
|
||||||
|
});
|
||||||
|
|
||||||
it('does not find a version that does not exist', async () => {
|
it('does not find a version that does not exist', async () => {
|
||||||
os.platform = 'linux';
|
os.platform = 'linux';
|
||||||
os.arch = 'x64';
|
os.arch = 'x64';
|
||||||
@@ -646,6 +758,106 @@ describe('setup-go', () => {
|
|||||||
expect(added).toBeTruthy();
|
expect(added).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('go env outputs', () => {
|
||||||
|
const goEnv = {
|
||||||
|
GOPATH: '/Users/testuser/go',
|
||||||
|
GOBIN: '',
|
||||||
|
GOROOT: '/usr/local/go',
|
||||||
|
GOCACHE: '/Users/testuser/.cache/go-build',
|
||||||
|
GOMODCACHE: '/Users/testuser/go/pkg/mod',
|
||||||
|
GOOS: 'darwin',
|
||||||
|
GOARCH: 'arm64',
|
||||||
|
GOTOOLDIR: '/usr/local/go/pkg/tool/darwin_arm64'
|
||||||
|
};
|
||||||
|
|
||||||
|
it('parses the output of go env -json', () => {
|
||||||
|
execFileSpy.mockImplementation(() => JSON.stringify(goEnv));
|
||||||
|
|
||||||
|
expect(main.readGoEnv('/usr/local/go/bin/go')).toEqual(goEnv);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined when go env -json is not supported', () => {
|
||||||
|
execFileSpy.mockImplementation(() => {
|
||||||
|
throw new Error('flag provided but not defined: -json');
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(main.readGoEnv('/usr/local/go/bin/go')).toBeUndefined();
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(
|
||||||
|
expect.stringContaining('flag provided but not defined: -json')
|
||||||
|
);
|
||||||
|
expect(warningSpy).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined when the output is not valid JSON', () => {
|
||||||
|
execFileSpy.mockImplementation(() => 'GOPATH="/Users/testuser/go"');
|
||||||
|
|
||||||
|
expect(main.readGoEnv('/usr/local/go/bin/go')).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined when the output is not a JSON object', () => {
|
||||||
|
execFileSpy.mockImplementation(() => '[]');
|
||||||
|
|
||||||
|
expect(main.readGoEnv('/usr/local/go/bin/go')).toBeUndefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sets an output for each exposed variable', () => {
|
||||||
|
main.setGoEnvOutputs(goEnv);
|
||||||
|
|
||||||
|
expect(GO_ENV_OUTPUTS).toEqual([
|
||||||
|
'GOPATH',
|
||||||
|
'GOBIN',
|
||||||
|
'GOROOT',
|
||||||
|
'GOCACHE',
|
||||||
|
'GOMODCACHE',
|
||||||
|
'GOOS',
|
||||||
|
'GOARCH',
|
||||||
|
'GOTOOLDIR'
|
||||||
|
]);
|
||||||
|
for (const name of GO_ENV_OUTPUTS) {
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith(name, goEnv[name] ?? '');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it('falls back to $GOPATH/bin when GOBIN is empty', () => {
|
||||||
|
main.setGoEnvOutputs(goEnv);
|
||||||
|
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith(
|
||||||
|
'go-bin-path',
|
||||||
|
'/Users/testuser/go/bin'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('prefers GOBIN over $GOPATH/bin when it is set', () => {
|
||||||
|
main.setGoEnvOutputs({...goEnv, GOBIN: '/Users/testuser/bin'});
|
||||||
|
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith(
|
||||||
|
'go-bin-path',
|
||||||
|
'/Users/testuser/bin'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('uses the first entry of a multi-entry GOPATH', () => {
|
||||||
|
const GOPATH = ['/Users/testuser/go', '/Users/testuser/other'].join(
|
||||||
|
path.delimiter
|
||||||
|
);
|
||||||
|
|
||||||
|
main.setGoEnvOutputs({...goEnv, GOPATH});
|
||||||
|
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith('GOPATH', GOPATH);
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith(
|
||||||
|
'go-bin-path',
|
||||||
|
'/Users/testuser/go/bin'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('leaves variables missing from go env -json empty', () => {
|
||||||
|
main.setGoEnvOutputs({});
|
||||||
|
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith('GOPATH', '');
|
||||||
|
expect(setOutputSpy).toHaveBeenCalledWith('go-bin-path', '');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
interface Annotation {
|
interface Annotation {
|
||||||
file: string;
|
file: string;
|
||||||
line: number;
|
line: number;
|
||||||
@@ -759,6 +971,11 @@ describe('setup-go', () => {
|
|||||||
expect(im.makeSemver('1.10rc1')).toBe('1.10.0-rc.1');
|
expect(im.makeSemver('1.10rc1')).toBe('1.10.0-rc.1');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('preserves already-normalized prerelease versions', () => {
|
||||||
|
expect(im.makeSemver('1.18.0-beta.2')).toBe('1.18.0-beta.2');
|
||||||
|
expect(im.makeSemver('1.21.0-rc.2')).toBe('1.21.0-rc.2');
|
||||||
|
});
|
||||||
|
|
||||||
it('converts dot zero versions', async () => {
|
it('converts dot zero versions', async () => {
|
||||||
expect(im.makeSemver('1.13')).toBe('1.13.0');
|
expect(im.makeSemver('1.13')).toBe('1.13.0');
|
||||||
});
|
});
|
||||||
@@ -767,6 +984,102 @@ describe('setup-go', () => {
|
|||||||
expect(im.makeSemver('1.13.1')).toBe('1.13.1');
|
expect(im.makeSemver('1.13.1')).toBe('1.13.1');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('isGoNativeVersion accepts supported Go-native version formats', () => {
|
||||||
|
expect(im.isGoNativeVersion('go1.21')).toBe(true);
|
||||||
|
expect(im.isGoNativeVersion('go1.21.5')).toBe(true);
|
||||||
|
expect(im.isGoNativeVersion('go1.18beta2')).toBe(true);
|
||||||
|
expect(im.isGoNativeVersion('go1.21rc2')).toBe(true);
|
||||||
|
|
||||||
|
expect(im.isGoNativeVersion('go1.21.x')).toBe(false);
|
||||||
|
expect(im.isGoNativeVersion('go^1.21')).toBe(false);
|
||||||
|
expect(im.isGoNativeVersion('1.21')).toBe(false);
|
||||||
|
expect(im.isGoNativeVersion('go1')).toBe(false);
|
||||||
|
expect(im.isGoNativeVersion('go1.21.5beta1')).toBe(false);
|
||||||
|
expect(im.isGoNativeVersion('go1.21.0rc1')).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a Go-native go-version input and normalizes it', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
inputs['go-version'] = 'go1.21';
|
||||||
|
findSpy.mockImplementation(() => path.normalize('/cache/go/1.21.0/x64'));
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(logSpy).toHaveBeenCalledWith('Setup go version spec go1.21');
|
||||||
|
expect(findSpy).toHaveBeenCalledWith('go', '1.21.0', 'x64');
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(
|
||||||
|
'Successfully set up Go version go1.21'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('rejects a malformed Go-native go-version input', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
inputs['go-version'] = 'go1.21.x';
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(cnSpy).toHaveBeenCalledWith(
|
||||||
|
expect.stringContaining('Invalid Go version "go1.21.x"')
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a Go-native go-version input with beta suffix and normalizes it', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
inputs['go-version'] = 'go1.18beta2';
|
||||||
|
findSpy.mockImplementation(() =>
|
||||||
|
path.normalize('/cache/go/1.18.0-beta.2/x64')
|
||||||
|
);
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(logSpy).toHaveBeenCalledWith('Setup go version spec go1.18beta2');
|
||||||
|
expect(findSpy).toHaveBeenCalledWith('go', '1.18.0-beta.2', 'x64');
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(
|
||||||
|
'Successfully set up Go version go1.18beta2'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('accepts a Go-native go-version input with rc suffix and normalizes it', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
inputs['go-version'] = 'go1.21rc2';
|
||||||
|
findSpy.mockImplementation(() =>
|
||||||
|
path.normalize('/cache/go/1.21.0-rc.2/x64')
|
||||||
|
);
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(logSpy).toHaveBeenCalledWith('Setup go version spec go1.21rc2');
|
||||||
|
expect(findSpy).toHaveBeenCalledWith('go', '1.21.0-rc.2', 'x64');
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(
|
||||||
|
'Successfully set up Go version go1.21rc2'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('downloads a normalized Go-native version on cache miss', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
inputs['go-version'] = 'go1.13';
|
||||||
|
|
||||||
|
findSpy.mockImplementation(() => '');
|
||||||
|
dlSpy.mockImplementation(async () => '/some/temp/path');
|
||||||
|
extractTarSpy.mockImplementation(async () => '/some/other/temp/path');
|
||||||
|
cacheSpy.mockImplementation(async () =>
|
||||||
|
path.normalize('/cache/go/1.13.0/x64')
|
||||||
|
);
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(logSpy).toHaveBeenCalledWith('Attempting to download 1.13.0...');
|
||||||
|
expect(dlSpy).toHaveBeenCalled();
|
||||||
|
expect(logSpy).toHaveBeenCalledWith(
|
||||||
|
'Successfully set up Go version go1.13'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
describe('check-latest flag', () => {
|
describe('check-latest flag', () => {
|
||||||
it("use local version and don't check manifest if check-latest is not specified", async () => {
|
it("use local version and don't check manifest if check-latest is not specified", async () => {
|
||||||
os.platform = 'linux';
|
os.platform = 'linux';
|
||||||
@@ -1090,7 +1403,7 @@ use .
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('go-version-file-toolchain', () => {
|
describe('go-version-file-toolchain', () => {
|
||||||
const goVersions = ['1.22.0', '1.21rc2', '1.18'];
|
const goVersions = ['1.22.0', '1.21rc2', '1.18', '1.18beta2'];
|
||||||
const placeholderVersion = '1.19';
|
const placeholderVersion = '1.19';
|
||||||
const buildGoMod = (
|
const buildGoMod = (
|
||||||
goVersion: string,
|
goVersion: string,
|
||||||
@@ -1190,6 +1503,43 @@ use .
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('go-download-base-url', () => {
|
describe('go-download-base-url', () => {
|
||||||
|
it('normalizes native versions but preserves custom download filenames', async () => {
|
||||||
|
os.platform = 'linux';
|
||||||
|
os.arch = 'x64';
|
||||||
|
|
||||||
|
const versionSpec = 'go1.21rc2';
|
||||||
|
const customBaseUrl = 'https://example.com/golang';
|
||||||
|
const toolName = im.customToolCacheName(customBaseUrl);
|
||||||
|
const toolPath = path.normalize(`/cache/${toolName}/1.21.0-rc.2/x64`);
|
||||||
|
|
||||||
|
inputs['go-version'] = versionSpec;
|
||||||
|
inputs['go-download-base-url'] = customBaseUrl;
|
||||||
|
|
||||||
|
getSpy.mockImplementationOnce(() => {
|
||||||
|
throw new Error('Not a JSON endpoint');
|
||||||
|
});
|
||||||
|
findSpy.mockImplementation(() => '');
|
||||||
|
dlSpy.mockImplementation(async () => '/some/temp/path');
|
||||||
|
extractTarSpy.mockImplementation(async () => '/some/other/temp/path');
|
||||||
|
execFileSpy.mockImplementation(() => 'go version go1.21rc2 linux/amd64');
|
||||||
|
cacheSpy.mockImplementation(async () => toolPath);
|
||||||
|
|
||||||
|
await main.run();
|
||||||
|
|
||||||
|
expect(findSpy).toHaveBeenCalledWith(toolName, '1.21.0-rc.2', 'x64');
|
||||||
|
expect(getSpy).toHaveBeenCalledWith(
|
||||||
|
`${customBaseUrl}/?mode=json&include=all`
|
||||||
|
);
|
||||||
|
expect(dlSpy).toHaveBeenCalledWith(
|
||||||
|
`${customBaseUrl}/go1.21rc2.linux-amd64.tar.gz`,
|
||||||
|
undefined,
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
expect(cnSpy).toHaveBeenCalledWith(
|
||||||
|
`::add-path::${path.join(toolPath, 'bin')}${osm.EOL}`
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('downloads a version from custom base URL using version listing', async () => {
|
it('downloads a version from custom base URL using version listing', async () => {
|
||||||
os.platform = 'linux';
|
os.platform = 'linux';
|
||||||
os.arch = 'x64';
|
os.arch = 'x64';
|
||||||
|
|||||||
+19
-1
@@ -3,7 +3,7 @@ description: 'Setup a Go environment and add it to the PATH'
|
|||||||
author: 'GitHub'
|
author: 'GitHub'
|
||||||
inputs:
|
inputs:
|
||||||
go-version:
|
go-version:
|
||||||
description: 'The Go version to download (if necessary) and use. Supports semver spec and ranges. Be sure to enclose this option in single quotation marks.'
|
description: 'The Go version to download (if necessary) and use. Supports native Go versions (e.g. go1.21.5), semver specs and ranges. Be sure to enclose this option in single quotation marks.'
|
||||||
go-version-file:
|
go-version-file:
|
||||||
description: 'Path to the go.mod, go.work, .go-version, or .tool-versions file.'
|
description: 'Path to the go.mod, go.work, .go-version, or .tool-versions file.'
|
||||||
check-latest:
|
check-latest:
|
||||||
@@ -26,6 +26,24 @@ outputs:
|
|||||||
description: 'The installed Go version. Useful when given a version range as input.'
|
description: 'The installed Go version. Useful when given a version range as input.'
|
||||||
cache-hit:
|
cache-hit:
|
||||||
description: 'A boolean value to indicate if a cache was hit'
|
description: 'A boolean value to indicate if a cache was hit'
|
||||||
|
GOPATH:
|
||||||
|
description: 'The value of `go env GOPATH`.'
|
||||||
|
GOBIN:
|
||||||
|
description: 'The value of `go env GOBIN`.'
|
||||||
|
go-bin-path:
|
||||||
|
description: 'The base Go binary directory: the `GOBIN` value, otherwise `bin` under the first `GOPATH` entry when `GOBIN` is empty.'
|
||||||
|
GOROOT:
|
||||||
|
description: 'The value of `go env GOROOT`.'
|
||||||
|
GOCACHE:
|
||||||
|
description: 'The value of `go env GOCACHE`, the build cache directory.'
|
||||||
|
GOMODCACHE:
|
||||||
|
description: 'The value of `go env GOMODCACHE`, the module cache directory.'
|
||||||
|
GOOS:
|
||||||
|
description: 'The value of `go env GOOS`, the target OS in Go notation (linux, darwin, windows).'
|
||||||
|
GOARCH:
|
||||||
|
description: 'The value of `go env GOARCH`, the target architecture in Go notation (amd64, arm64).'
|
||||||
|
GOTOOLDIR:
|
||||||
|
description: 'The value of `go env GOTOOLDIR`, the directory holding the toolchain binaries.'
|
||||||
runs:
|
runs:
|
||||||
using: 'node24'
|
using: 'node24'
|
||||||
main: 'dist/setup/index.js'
|
main: 'dist/setup/index.js'
|
||||||
|
|||||||
Vendored
+3746
-2472
File diff suppressed because it is too large.
Load diff
Vendored
+3922
-5963
File diff suppressed because it is too large.
Load diff
+92
-53
@@ -12,6 +12,9 @@
|
|||||||
- [Restore-only caches](advanced-usage.md#restore-only-caches)
|
- [Restore-only caches](advanced-usage.md#restore-only-caches)
|
||||||
- [Parallel builds](advanced-usage.md#parallel-builds)
|
- [Parallel builds](advanced-usage.md#parallel-builds)
|
||||||
- [Outputs](advanced-usage.md#outputs)
|
- [Outputs](advanced-usage.md#outputs)
|
||||||
|
- [go-version](advanced-usage.md#go-version)
|
||||||
|
- [cache-hit](advanced-usage.md#cache-hit)
|
||||||
|
- [Go environment outputs](advanced-usage.md#go-environment-outputs)
|
||||||
- [Custom download URL](advanced-usage.md#custom-download-url)
|
- [Custom download URL](advanced-usage.md#custom-download-url)
|
||||||
- [Using `setup-go` on GHES](advanced-usage.md#using-setup-go-on-ghes)
|
- [Using `setup-go` on GHES](advanced-usage.md#using-setup-go-on-ghes)
|
||||||
|
|
||||||
@@ -23,8 +26,8 @@ For repeatable builds, specify the **exact major, minor, and patch version** (su
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25.5'
|
go-version: '1.25.5'
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -36,8 +39,8 @@ You can specify **only a major and minor version** if you are okay with the most
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -47,14 +50,18 @@ steps:
|
|||||||
- The preinstalled patch version is generally the latest available. When a new patch is released, it replaces the previously preinstalled version on the runner.
|
- The preinstalled patch version is generally the latest available. When a new patch is released, it replaces the previously preinstalled version on the runner.
|
||||||
- Using the most recent patch version speeds up setup because the required Go version is already installed on the runner and no download is needed.
|
- Using the most recent patch version speeds up setup because the required Go version is already installed on the runner and no download is needed.
|
||||||
|
|
||||||
|
The `go-version` input also accepts native Go version strings: `go1.21.5`, `go1.18beta2`, and `go1.21rc2` normalize to `1.21.5`, `1.18.0-beta.2`, and `1.21.0-rc.2`, respectively. `go1.21` resolves to exactly `1.21.0`; use `1.21` for matching patch releases. For ranges and wildcards, use SemVer syntax such as `~1.21` or `1.21.x`, not `go1.21.x`.
|
||||||
|
|
||||||
To try a **pre-release**:
|
To try a **pre-release**:
|
||||||
Download and use beta or RC Go versions as needed.
|
Download and use beta or RC Go versions as needed.
|
||||||
|
|
||||||
|
The `go-version` input also accepts native Go version strings: `go1.21.5`, `go1.18beta2`, and `go1.21rc2` normalize to `1.21.5`, `1.18.0-beta.2`, and `1.21.0-rc.2`, respectively. `go1.21` resolves to exactly `1.21.0`; use `1.21` for matching patch releases. For ranges and wildcards, use SemVer syntax such as `~1.21` or `1.21.x`, not `go1.21.x`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# RC version
|
# RC version
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25.0-rc.2'
|
go-version: '1.25.0-rc.2'
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -63,8 +70,8 @@ steps:
|
|||||||
```yaml
|
```yaml
|
||||||
# Beta version
|
# Beta version
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.19.0-beta.1'
|
go-version: '1.19.0-beta.1'
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -80,8 +87,8 @@ If `oldstable` is provided, the action resolves it to the latest patch release o
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: 'stable'
|
go-version: 'stable'
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -89,8 +96,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: 'oldstable'
|
go-version: 'oldstable'
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -100,8 +107,8 @@ You can also use **SemVer's version range syntax**, for instance:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '^1.25.1'
|
go-version: '^1.25.1'
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -109,8 +116,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '>=1.24.0-rc.1'
|
go-version: '>=1.24.0-rc.1'
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -129,9 +136,9 @@ jobs:
|
|||||||
go: [ '1.24', '1.25' ]
|
go: [ '1.24', '1.25' ]
|
||||||
name: Go ${{ matrix.go }} sample
|
name: Go ${{ matrix.go }} sample
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: Setup go
|
- name: Setup go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: ${{ matrix.go }}
|
go-version: ${{ matrix.go }}
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -154,9 +161,9 @@ jobs:
|
|||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
go: '1.25'
|
go: '1.25'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: Setup go
|
- name: Setup go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: ${{ matrix.go }}
|
go-version: ${{ matrix.go }}
|
||||||
- run: go run hello.go
|
- run: go run hello.go
|
||||||
@@ -170,8 +177,8 @@ If both the `go-version` and the `go-version-file` inputs are provided then the
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version-file: 'path/to/go.mod' # Read Go version from go.mod
|
go-version-file: 'path/to/go.mod' # Read Go version from go.mod
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -187,8 +194,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version-file: '.go-version' # Read Go version from .go-version
|
go-version-file: '.go-version' # Read Go version from .go-version
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -196,8 +203,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version-file: '.tool-versions' # Read Go version from .tool-versions
|
go-version-file: '.tool-versions' # Read Go version from .tool-versions
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -205,8 +212,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version-file: 'go.work' # Read Go version from go.work
|
go-version-file: 'go.work' # Read Go version from go.work
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -228,8 +235,8 @@ want the most up-to-date Go version to always be used. It supports major (e.g.,
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
check-latest: true
|
check-latest: true
|
||||||
@@ -242,8 +249,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
cache-dependency-path: subdir/go.sum
|
cache-dependency-path: subdir/go.sum
|
||||||
@@ -256,8 +263,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
cache-dependency-path: '**/go.sum'
|
cache-dependency-path: '**/go.sum'
|
||||||
@@ -266,8 +273,8 @@ steps:
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
cache-dependency-path: |
|
cache-dependency-path: |
|
||||||
@@ -288,8 +295,8 @@ env:
|
|||||||
steps:
|
steps:
|
||||||
- run: echo "$GOOS $GOARCH" > env.txt
|
- run: echo "$GOOS $GOARCH" > env.txt
|
||||||
|
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
cache-dependency-path: |
|
cache-dependency-path: |
|
||||||
@@ -306,8 +313,8 @@ Besides dependencies, the action can also cache build outputs (the [`GOCACHE`](h
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
cache-dependency-path: |
|
cache-dependency-path: |
|
||||||
@@ -328,10 +335,10 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- name: Setup go
|
- name: Setup go
|
||||||
id: setup-go
|
id: setup-go
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25.5'
|
go-version: '1.25.5'
|
||||||
cache: false
|
cache: false
|
||||||
@@ -394,8 +401,8 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
id: go124
|
id: go124
|
||||||
with:
|
with:
|
||||||
go-version: '^1.24'
|
go-version: '^1.24'
|
||||||
@@ -411,8 +418,8 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
id: go124
|
id: go124
|
||||||
with:
|
with:
|
||||||
go-version: '1.24'
|
go-version: '1.24'
|
||||||
@@ -420,18 +427,50 @@ jobs:
|
|||||||
- run: echo "Was the Go cache restored? ${{ steps.go124.outputs.cache-hit }}" # true if cache-hit occurred
|
- run: echo "Was the Go cache restored? ${{ steps.go124.outputs.cache-hit }}" # true if cache-hit occurred
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Go environment outputs
|
||||||
|
|
||||||
|
Once Go is on the `PATH`, the action exposes the most commonly needed `go env` variables as outputs, so workflows don't have to query them in duplicated `bash`/`pwsh` steps — one expression works on Linux, macOS, and Windows. The values are a snapshot from setup time: anything a later step changes, such as setting `GOOS`/`GOARCH` to cross-compile, is not reflected.
|
||||||
|
|
||||||
|
| Output | Notes |
|
||||||
|
| --- | --- |
|
||||||
|
| `GOPATH` | Go workspace root; `bin` and `pkg/mod` live under it |
|
||||||
|
| `GOBIN` | Go 1.27+ reports an implicit `$GOPATH/bin` default; earlier releases are empty unless `GOBIN` is set |
|
||||||
|
| `go-bin-path` | Uses `GOBIN`, or falls back to `bin` under the first `GOPATH` entry when `GOBIN` is empty. It normally matches `GOBIN` on Go 1.27+; the fallback is a convenience for earlier releases. When `GOBIN` is not explicitly set (in the environment or via `go env -w`), cross-compiled binaries go one level deeper, in `$GOPATH/bin/${GOOS}_${GOARCH}` |
|
||||||
|
| `GOROOT` | Installation directory of the Go toolchain in use |
|
||||||
|
| `GOCACHE` | Build cache directory |
|
||||||
|
| `GOMODCACHE` | Module cache directory |
|
||||||
|
| `GOOS` | Go notation (`linux`, `darwin`, `windows`), unlike `runner.os` |
|
||||||
|
| `GOARCH` | Go notation (`amd64`, `arm64`), unlike `runner.arch` or the `x64` in the action's cache key |
|
||||||
|
| `GOTOOLDIR` | Holds `compile`, `link`, `vet` and the other toolchain binaries |
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
steps:
|
||||||
|
- uses: actions/setup-go@v7
|
||||||
|
id: setup-go
|
||||||
|
with:
|
||||||
|
go-version: '1.25.5'
|
||||||
|
- run: echo "Modules are cached in ${{ steps.setup-go.outputs.GOMODCACHE }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Quote `go-bin-path` in shell commands, since it may contain spaces. Variables without a dedicated output are not exposed; run `go env <NAME>` in a step when you need one.
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> These outputs need Go 1.9 or newer (`go env -json`); on older releases the action logs a message, leaves them unset and does not fail. `GOCACHE` needs Go 1.10 and `GOMODCACHE` needs Go 1.15.
|
||||||
|
|
||||||
## Custom download URL
|
## Custom download URL
|
||||||
|
|
||||||
The `go-download-base-url` input lets you download Go from a mirror or alternative source instead of the default `https://go.dev/dl`. This can also be set via the `GO_DOWNLOAD_BASE_URL` environment variable; the input takes precedence over the environment variable.
|
The `go-download-base-url` input lets you download Go from a mirror or alternative source instead of the default `https://go.dev/dl`. This can also be set via the `GO_DOWNLOAD_BASE_URL` environment variable; the input takes precedence over the environment variable.
|
||||||
|
|
||||||
When a custom base URL is provided, the action skips the `actions/go-versions` manifest lookup and downloads directly from the specified URL.
|
When a custom base URL is provided, the action skips the `actions/go-versions` manifest lookup and downloads directly from the specified URL.
|
||||||
|
|
||||||
|
> **Note:** When constructing direct-download filenames, the original version string is preserved; native Go version normalization is used only for matching and tool cache lookups.
|
||||||
|
|
||||||
**Using the [Microsoft build of Go](https://github.com/microsoft/go):**
|
**Using the [Microsoft build of Go](https://github.com/microsoft/go):**
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
go-download-base-url: 'https://aka.ms/golang/release/latest'
|
go-download-base-url: 'https://aka.ms/golang/release/latest'
|
||||||
@@ -445,8 +484,8 @@ env:
|
|||||||
GO_DOWNLOAD_BASE_URL: 'https://aka.ms/golang/release/latest'
|
GO_DOWNLOAD_BASE_URL: 'https://aka.ms/golang/release/latest'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
- run: go version
|
- run: go version
|
||||||
@@ -462,8 +501,8 @@ If your custom download source requires authentication, the `token` input is for
|
|||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v7
|
||||||
- uses: actions/setup-go@v6
|
- uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
go-download-base-url: 'https://private-mirror.example.com/golang'
|
go-download-base-url: 'https://private-mirror.example.com/golang'
|
||||||
@@ -485,7 +524,7 @@ If that fails as well the action will try to download versions directly from [go
|
|||||||
If that fails as well you can get a higher rate limit with [generating a personal access token on github.com](https://github.com/settings/tokens/new) and passing it as the `token` input to the action:
|
If that fails as well you can get a higher rate limit with [generating a personal access token on github.com](https://github.com/settings/tokens/new) and passing it as the `token` input to the action:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
uses: actions/setup-go@v6
|
uses: actions/setup-go@v7
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GH_DOTCOM_TOKEN }}
|
token: ${{ secrets.GH_DOTCOM_TOKEN }}
|
||||||
go-version: '1.25'
|
go-version: '1.25'
|
||||||
|
|||||||
Generated
+90
-142
@@ -9,7 +9,7 @@
|
|||||||
"version": "7.0.0",
|
"version": "7.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^6.2.0",
|
"@actions/cache": "^6.3.0",
|
||||||
"@actions/core": "^3.0.1",
|
"@actions/core": "^3.0.1",
|
||||||
"@actions/exec": "^3.0.0",
|
"@actions/exec": "^3.0.0",
|
||||||
"@actions/glob": "^0.7.0",
|
"@actions/glob": "^0.7.0",
|
||||||
@@ -42,58 +42,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/cache": {
|
"node_modules/@actions/cache": {
|
||||||
"version": "6.2.0",
|
"version": "6.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/cache/-/cache-6.3.0.tgz",
|
||||||
"integrity": "sha512-Nv0xWRmbxfDbAn/70flO/F6tj2Nv4XTYMAsQHiDFSojCDfso/Zni+fRKa14ToI9hnmOW/rQcY1WYb6wsM7Pgwg==",
|
"integrity": "sha512-SJKaVMqTgetQgJF0wifi5N2+2mffCLy/D4w/3sJtRanBBGECdi1/OD0wswyLVmqEmPbYB/rVJk41Qn/xEbFjAw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^3.0.1",
|
"@actions/core": "^3.0.1",
|
||||||
"@actions/exec": "^3.0.0",
|
"@actions/exec": "^3.0.0",
|
||||||
"@actions/glob": "^0.6.1",
|
"@actions/glob": "^0.7.0",
|
||||||
"@actions/http-client": "^4.0.1",
|
"@actions/http-client": "^4.0.1",
|
||||||
"@actions/io": "^3.0.2",
|
"@actions/io": "^3.0.2",
|
||||||
"@azure/core-rest-pipeline": "^1.23.0",
|
"@azure/core-rest-pipeline": "~1.23.0",
|
||||||
"@azure/storage-blob": "^12.31.0",
|
"@azure/storage-blob": "~12.31.0",
|
||||||
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
"@protobuf-ts/runtime-rpc": "^2.11.1",
|
||||||
"semver": "^7.7.4"
|
"semver": "^7.8.5"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@actions/cache/node_modules/@actions/glob": {
|
|
||||||
"version": "0.6.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.6.1.tgz",
|
|
||||||
"integrity": "sha512-K4+2Ac5ILcf2ySdJCha+Pop9NcKjxqCL4xL4zI50dgB2PbXgC0+AcP011xfH4Of6b4QEJJg8dyZYv7zl4byTsw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@actions/core": "^3.0.0",
|
|
||||||
"minimatch": "^3.0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@actions/cache/node_modules/balanced-match": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@actions/cache/node_modules/brace-expansion": {
|
|
||||||
"version": "1.1.15",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
|
|
||||||
"integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@actions/cache/node_modules/minimatch": {
|
|
||||||
"version": "3.1.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
|
|
||||||
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "*"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/core": {
|
"node_modules/@actions/core": {
|
||||||
@@ -242,9 +204,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@azure/core-rest-pipeline": {
|
"node_modules/@azure/core-rest-pipeline": {
|
||||||
"version": "1.24.0",
|
"version": "1.23.0",
|
||||||
"resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.23.0.tgz",
|
||||||
"integrity": "sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==",
|
"integrity": "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/abort-controller": "^2.1.2",
|
"@azure/abort-controller": "^2.1.2",
|
||||||
@@ -312,9 +274,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@azure/storage-blob": {
|
"node_modules/@azure/storage-blob": {
|
||||||
"version": "12.32.0",
|
"version": "12.31.0",
|
||||||
"resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.32.0.tgz",
|
"resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.31.0.tgz",
|
||||||
"integrity": "sha512-80LzSNnFQye2LCCBFghAJS6jJQJ7N4bfgZ6qDMgVGRtugZ7TLDKQZ2hczMigmZH3jAcMRdma/IygsC5+0gT7Tw==",
|
"integrity": "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@azure/abort-controller": "^2.1.2",
|
"@azure/abort-controller": "^2.1.2",
|
||||||
@@ -328,7 +290,7 @@
|
|||||||
"@azure/core-util": "^1.11.0",
|
"@azure/core-util": "^1.11.0",
|
||||||
"@azure/core-xml": "^1.4.5",
|
"@azure/core-xml": "^1.4.5",
|
||||||
"@azure/logger": "^1.1.4",
|
"@azure/logger": "^1.1.4",
|
||||||
"@azure/storage-common": "^12.4.0",
|
"@azure/storage-common": "^12.3.0",
|
||||||
"events": "^3.0.0",
|
"events": "^3.0.0",
|
||||||
"tslib": "^2.8.1"
|
"tslib": "^2.8.1"
|
||||||
},
|
},
|
||||||
@@ -1627,9 +1589,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@nodable/entities": {
|
"node_modules/@nodable/entities": {
|
||||||
"version": "2.2.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-3.0.0.tgz",
|
||||||
"integrity": "sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==",
|
"integrity": "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -2234,9 +2196,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2251,9 +2210,6 @@
|
|||||||
"arm64"
|
"arm64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2268,9 +2224,6 @@
|
|||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2285,9 +2238,6 @@
|
|||||||
"loong64"
|
"loong64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2302,9 +2252,6 @@
|
|||||||
"ppc64"
|
"ppc64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2319,9 +2266,6 @@
|
|||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2336,9 +2280,6 @@
|
|||||||
"riscv64"
|
"riscv64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2353,9 +2294,6 @@
|
|||||||
"s390x"
|
"s390x"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2370,9 +2308,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"glibc"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2387,9 +2322,6 @@
|
|||||||
"x64"
|
"x64"
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"libc": [
|
|
||||||
"musl"
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"os": [
|
"os": [
|
||||||
@@ -2733,9 +2665,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/baseline-browser-mapping": {
|
"node_modules/baseline-browser-mapping": {
|
||||||
"version": "2.10.38",
|
"version": "2.11.20",
|
||||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz",
|
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz",
|
||||||
"integrity": "sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==",
|
"integrity": "sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -2746,21 +2678,21 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "5.0.6",
|
"version": "5.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
||||||
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
|
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": "^4.0.2"
|
"balanced-match": "^4.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "18 || 20 || >=22"
|
"node": "20 || >=22"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/browserslist": {
|
"node_modules/browserslist": {
|
||||||
"version": "4.28.2",
|
"version": "4.28.8",
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
|
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz",
|
||||||
"integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
|
"integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2778,11 +2710,11 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.10.12",
|
"baseline-browser-mapping": "^2.11.12",
|
||||||
"caniuse-lite": "^1.0.30001782",
|
"caniuse-lite": "^1.0.30001809",
|
||||||
"electron-to-chromium": "^1.5.328",
|
"electron-to-chromium": "^1.5.402",
|
||||||
"node-releases": "^2.0.36",
|
"node-releases": "^2.0.53",
|
||||||
"update-browserslist-db": "^1.2.3"
|
"update-browserslist-db": "^1.3.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"browserslist": "cli.js"
|
"browserslist": "cli.js"
|
||||||
@@ -2842,9 +2774,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001799",
|
"version": "1.0.30001810",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz",
|
||||||
"integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==",
|
"integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -3032,6 +2964,7 @@
|
|||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/convert-source-map": {
|
"node_modules/convert-source-map": {
|
||||||
@@ -3123,9 +3056,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.376",
|
"version": "1.5.418",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.418.tgz",
|
||||||
"integrity": "sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==",
|
"integrity": "sha512-UzS26r3AEbG5wSoGVpJKqwHIU9zwQN7LHdVIThDrJpS0I5KdlXFMEb8543fhc9dVnIIAST6ar8rhwa00AL5MlA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
@@ -3650,9 +3583,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fast-xml-parser": {
|
"node_modules/fast-xml-parser": {
|
||||||
"version": "5.9.3",
|
"version": "5.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.10.1.tgz",
|
||||||
"integrity": "sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==",
|
"integrity": "sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -3661,17 +3594,32 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nodable/entities": "^2.2.0",
|
"@nodable/entities": "^3.0.0",
|
||||||
"fast-xml-builder": "^1.2.0",
|
"fast-xml-builder": "^1.2.0",
|
||||||
"is-unsafe": "^1.0.1",
|
"is-unsafe": "^2.0.0",
|
||||||
"path-expression-matcher": "^1.5.0",
|
"path-expression-matcher": "^1.6.2",
|
||||||
"strnum": "^2.4.1",
|
"strnum": "^2.4.1",
|
||||||
"xml-naming": "^0.1.0"
|
"xml-naming": "^0.3.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"fxparser": "src/cli/cli.js"
|
"fxparser": "src/cli/cli.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fast-xml-parser/node_modules/xml-naming": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.3.0.tgz",
|
||||||
|
"integrity": "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/NaturalIntelligence"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fb-watchman": {
|
"node_modules/fb-watchman": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
|
||||||
@@ -3889,9 +3837,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/glob/node_modules/brace-expansion": {
|
"node_modules/glob/node_modules/brace-expansion": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz",
|
||||||
"integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
|
"integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -3942,13 +3890,13 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/handlebars": {
|
"node_modules/handlebars": {
|
||||||
"version": "4.7.9",
|
"version": "4.7.10",
|
||||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz",
|
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.10.tgz",
|
||||||
"integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==",
|
"integrity": "sha512-P5VJMVM7qgBn6vjXMw8WG9uVI+ncf2pi72j4de4yz5ZULLj2RGqLYaKOYGsgyrViQ0tePOVlN1tDCCXXtFqXKg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": "^1.2.5",
|
"minimist": "^1.2.8",
|
||||||
"neo-async": "^2.6.2",
|
"neo-async": "^2.6.2",
|
||||||
"source-map": "^0.6.1",
|
"source-map": "^0.6.1",
|
||||||
"wordwrap": "^1.0.0"
|
"wordwrap": "^1.0.0"
|
||||||
@@ -4146,9 +4094,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-unsafe": {
|
"node_modules/is-unsafe": {
|
||||||
"version": "1.0.1",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-unsafe/-/is-unsafe-2.0.0.tgz",
|
||||||
"integrity": "sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==",
|
"integrity": "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -4839,9 +4787,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/js-yaml": {
|
"node_modules/js-yaml": {
|
||||||
"version": "3.15.0",
|
"version": "3.15.2",
|
||||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.0.tgz",
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz",
|
||||||
"integrity": "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog==",
|
"integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -5131,9 +5079,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
"version": "2.0.48",
|
"version": "2.0.54",
|
||||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz",
|
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.54.tgz",
|
||||||
"integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==",
|
"integrity": "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -5293,9 +5241,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-expression-matcher": {
|
"node_modules/path-expression-matcher": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.2.tgz",
|
||||||
"integrity": "sha512-e5y7RCLHKjemsgQ4eqGJtPyr10ILz25HO7flzxhTV8bgvd5yHx98DGtCAtbVW9f2TqnYI/gEVZd+vz7snrdPTw==",
|
"integrity": "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "github",
|
"type": "github",
|
||||||
@@ -5972,9 +5920,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/test-exclude/node_modules/brace-expansion": {
|
"node_modules/test-exclude/node_modules/brace-expansion": {
|
||||||
"version": "1.1.15",
|
"version": "1.1.18",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
|
||||||
"integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
|
"integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -6200,9 +6148,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici": {
|
"node_modules/undici": {
|
||||||
"version": "6.27.0",
|
"version": "6.28.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-6.27.0.tgz",
|
"resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz",
|
||||||
"integrity": "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg==",
|
"integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.17"
|
"node": ">=18.17"
|
||||||
@@ -6254,9 +6202,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/update-browserslist-db": {
|
"node_modules/update-browserslist-db": {
|
||||||
"version": "1.2.3",
|
"version": "1.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz",
|
||||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
"integrity": "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@
|
|||||||
"author": "GitHub",
|
"author": "GitHub",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/cache": "^6.2.0",
|
"@actions/cache": "^6.3.0",
|
||||||
"@actions/core": "^3.0.1",
|
"@actions/core": "^3.0.1",
|
||||||
"@actions/exec": "^3.0.0",
|
"@actions/exec": "^3.0.0",
|
||||||
"@actions/glob": "^0.7.0",
|
"@actions/glob": "^0.7.0",
|
||||||
|
|||||||
+16
-1
@@ -4,5 +4,20 @@ export enum State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export enum Outputs {
|
export enum Outputs {
|
||||||
CacheHit = 'cache-hit'
|
CacheHit = 'cache-hit',
|
||||||
|
GoBinPath = 'go-bin-path'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const GO_ENV_OUTPUTS = [
|
||||||
|
'GOPATH',
|
||||||
|
'GOBIN',
|
||||||
|
'GOROOT',
|
||||||
|
'GOCACHE',
|
||||||
|
'GOMODCACHE',
|
||||||
|
'GOOS',
|
||||||
|
'GOARCH',
|
||||||
|
'GOTOOLDIR'
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export type GoEnvVar = (typeof GO_ENV_OUTPUTS)[number];
|
||||||
|
export type GoEnv = Partial<Record<GoEnvVar, string>>;
|
||||||
+39
-8
@@ -60,6 +60,11 @@ export async function getGo(
|
|||||||
const osPlat: string = os.platform();
|
const osPlat: string = os.platform();
|
||||||
const customBaseUrl = goDownloadBaseUrl?.replace(/\/+$/, '');
|
const customBaseUrl = goDownloadBaseUrl?.replace(/\/+$/, '');
|
||||||
|
|
||||||
|
const originalVersionSpec = versionSpec;
|
||||||
|
if (isGoNativeVersion(versionSpec)) {
|
||||||
|
versionSpec = makeSemver(versionSpec);
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
versionSpec === StableReleaseAlias.Stable ||
|
versionSpec === StableReleaseAlias.Stable ||
|
||||||
versionSpec === StableReleaseAlias.OldStable
|
versionSpec === StableReleaseAlias.OldStable
|
||||||
@@ -123,8 +128,13 @@ export async function getGo(
|
|||||||
? customToolCacheName(customBaseUrl)
|
? customToolCacheName(customBaseUrl)
|
||||||
: 'go';
|
: 'go';
|
||||||
|
|
||||||
|
// Convert prerelease specs (1.21rc2) to semver (1.21.0-rc.2).
|
||||||
|
const cacheSpec = /^\d+\.\d+(\.\d+)?(beta|rc)\d+$/.test(versionSpec)
|
||||||
|
? makeSemver(versionSpec)
|
||||||
|
: versionSpec;
|
||||||
|
|
||||||
// check cache
|
// check cache
|
||||||
const toolPath = tc.find(toolCacheName, versionSpec, arch);
|
const toolPath = tc.find(toolCacheName, cacheSpec, arch);
|
||||||
// If not found in cache, download
|
// If not found in cache, download
|
||||||
if (toolPath) {
|
if (toolPath) {
|
||||||
core.info(`Found in cache @ ${toolPath}`);
|
core.info(`Found in cache @ ${toolPath}`);
|
||||||
@@ -146,7 +156,11 @@ export async function getGo(
|
|||||||
core.info(
|
core.info(
|
||||||
'Skipping version listing for known direct-download URL. Constructing download URL directly.'
|
'Skipping version listing for known direct-download URL. Constructing download URL directly.'
|
||||||
);
|
);
|
||||||
info = getInfoFromDirectDownload(versionSpec, arch, customBaseUrl);
|
info = getInfoFromDirectDownload(
|
||||||
|
originalVersionSpec,
|
||||||
|
arch,
|
||||||
|
customBaseUrl
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
info = await getInfoFromDist(versionSpec, arch, customBaseUrl);
|
info = await getInfoFromDist(versionSpec, arch, customBaseUrl);
|
||||||
@@ -156,7 +170,11 @@ export async function getGo(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (!info) {
|
if (!info) {
|
||||||
info = getInfoFromDirectDownload(versionSpec, arch, customBaseUrl);
|
info = getInfoFromDirectDownload(
|
||||||
|
originalVersionSpec,
|
||||||
|
arch,
|
||||||
|
customBaseUrl
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,13 +185,13 @@ export async function getGo(
|
|||||||
const downloadUrl = info?.downloadUrl || customBaseUrl;
|
const downloadUrl = info?.downloadUrl || customBaseUrl;
|
||||||
if (err instanceof tc.HTTPError && err.httpStatusCode === 404) {
|
if (err instanceof tc.HTTPError && err.httpStatusCode === 404) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`The requested Go version ${versionSpec} is not available for platform ${osPlat}/${arch}. ` +
|
`The requested Go version ${originalVersionSpec} is not available for platform ${osPlat}/${arch}. ` +
|
||||||
`Download URL returned HTTP 404: ${downloadUrl}`,
|
`Download URL returned HTTP 404: ${downloadUrl}`,
|
||||||
{cause: err}
|
{cause: err}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Failed to download Go ${versionSpec} for platform ${osPlat}/${arch} ` +
|
`Failed to download Go ${originalVersionSpec} for platform ${osPlat}/${arch} ` +
|
||||||
`from ${downloadUrl}: ${err}`,
|
`from ${downloadUrl}: ${err}`,
|
||||||
{cause: err}
|
{cause: err}
|
||||||
);
|
);
|
||||||
@@ -585,7 +603,10 @@ export async function findMatch(
|
|||||||
const version = makeSemver(candidate.version);
|
const version = makeSemver(candidate.version);
|
||||||
|
|
||||||
core.debug(`check ${version} satisfies ${versionSpec}`);
|
core.debug(`check ${version} satisfies ${versionSpec}`);
|
||||||
if (semver.satisfies(version, versionSpec)) {
|
if (
|
||||||
|
candidate.version.replace(/^go/, '') === versionSpec ||
|
||||||
|
semver.satisfies(version, versionSpec)
|
||||||
|
) {
|
||||||
goFile = candidate.files.find(file => {
|
goFile = candidate.files.find(file => {
|
||||||
core.debug(
|
core.debug(
|
||||||
`${file.arch}===${archFilter} && ${file.os}===${platFilter}`
|
`${file.arch}===${archFilter} && ${file.os}===${platFilter}`
|
||||||
@@ -610,6 +631,12 @@ export async function findMatch(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function isGoNativeVersion(version: string): boolean {
|
||||||
|
const expression =
|
||||||
|
/^go[1-9]\d*\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*)|(?:beta|rc)[1-9]\d*)?$/;
|
||||||
|
return expression.test(version);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Convert the go version syntax into semver for semver matching
|
// Convert the go version syntax into semver for semver matching
|
||||||
// 1.13.1 => 1.13.1
|
// 1.13.1 => 1.13.1
|
||||||
@@ -617,6 +644,10 @@ export async function findMatch(
|
|||||||
// 1.10beta1 => 1.10.0-beta.1, 1.10rc1 => 1.10.0-rc.1
|
// 1.10beta1 => 1.10.0-beta.1, 1.10rc1 => 1.10.0-rc.1
|
||||||
// 1.8.5beta1 => 1.8.5-beta.1, 1.8.5rc1 => 1.8.5-rc.1
|
// 1.8.5beta1 => 1.8.5-beta.1, 1.8.5rc1 => 1.8.5-rc.1
|
||||||
export function makeSemver(version: string): string {
|
export function makeSemver(version: string): string {
|
||||||
|
const validVersion = semver.valid(version);
|
||||||
|
if (validVersion) {
|
||||||
|
return validVersion;
|
||||||
|
}
|
||||||
version = version.replace('go', '');
|
version = version.replace('go', '');
|
||||||
version = version.replace('beta', '-beta.').replace('rc', '-rc.');
|
version = version.replace('beta', '-beta.').replace('rc', '-rc.');
|
||||||
const parts = version.split('-');
|
const parts = version.split('-');
|
||||||
@@ -654,7 +685,7 @@ export function parseGoVersionFile(versionFilePath: string): string {
|
|||||||
if (process.env[GOTOOLCHAIN_ENV_VAR] !== GOTOOLCHAIN_LOCAL_VAL) {
|
if (process.env[GOTOOLCHAIN_ENV_VAR] !== GOTOOLCHAIN_LOCAL_VAL) {
|
||||||
// toolchain directive: https://go.dev/ref/mod#go-mod-file-toolchain
|
// toolchain directive: https://go.dev/ref/mod#go-mod-file-toolchain
|
||||||
const matchToolchain = contents.match(
|
const matchToolchain = contents.match(
|
||||||
/^toolchain go(1\.\d+(?:\.\d+|rc\d+)?)/m
|
/^toolchain go(1\.\d+(?:\.\d+|(beta|rc)\d+)?)/m
|
||||||
);
|
);
|
||||||
if (matchToolchain) {
|
if (matchToolchain) {
|
||||||
return matchToolchain[1];
|
return matchToolchain[1];
|
||||||
@@ -662,7 +693,7 @@ export function parseGoVersionFile(versionFilePath: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// go directive: https://go.dev/ref/mod#go-mod-file-go
|
// go directive: https://go.dev/ref/mod#go-mod-file-go
|
||||||
const matchGo = contents.match(/^go (\d+(\.\d+)*)/m);
|
const matchGo = contents.match(/^go (\d+(\.\d+)*(?:\.\d+|(beta|rc)\d+)?)/m);
|
||||||
return matchGo ? matchGo[1] : '';
|
return matchGo ? matchGo[1] : '';
|
||||||
} else if (path.basename(versionFilePath) === '.tool-versions') {
|
} else if (path.basename(versionFilePath) === '.tool-versions') {
|
||||||
const match = contents.match(/^golang\s+([^\n#]+)/m);
|
const match = contents.match(/^golang\s+([^\n#]+)/m);
|
||||||
|
|||||||
+65
-1
@@ -10,6 +10,7 @@ import cp from 'child_process';
|
|||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
import {Architecture} from './types.js';
|
import {Architecture} from './types.js';
|
||||||
|
import {GO_ENV_OUTPUTS, GoEnv, Outputs} from './constants.js';
|
||||||
|
|
||||||
export async function run() {
|
export async function run() {
|
||||||
try {
|
try {
|
||||||
@@ -21,7 +22,6 @@ export async function run() {
|
|||||||
setGoToolchain();
|
setGoToolchain();
|
||||||
|
|
||||||
const cache = core.getBooleanInput('cache');
|
const cache = core.getBooleanInput('cache');
|
||||||
core.info(`Setup go version spec ${versionSpec}`);
|
|
||||||
|
|
||||||
let arch = core.getInput('architecture') as Architecture;
|
let arch = core.getInput('architecture') as Architecture;
|
||||||
|
|
||||||
@@ -30,6 +30,10 @@ export async function run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (versionSpec) {
|
if (versionSpec) {
|
||||||
|
core.startGroup('Installed version');
|
||||||
|
try {
|
||||||
|
core.info(`Setup go version spec ${versionSpec}`);
|
||||||
|
|
||||||
const token = core.getInput('token');
|
const token = core.getInput('token');
|
||||||
const auth = !token ? undefined : `token ${token}`;
|
const auth = !token ? undefined : `token ${token}`;
|
||||||
|
|
||||||
@@ -65,6 +69,9 @@ export async function run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
core.info(`Successfully set up Go version ${versionSpec}`);
|
core.info(`Successfully set up Go version ${versionSpec}`);
|
||||||
|
} finally {
|
||||||
|
core.endGroup();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
core.info(
|
core.info(
|
||||||
'[warning]go-version input was not specified. The action will try to use pre-installed version.'
|
'[warning]go-version input was not specified. The action will try to use pre-installed version.'
|
||||||
@@ -76,6 +83,11 @@ export async function run() {
|
|||||||
|
|
||||||
const goPath = await io.which('go');
|
const goPath = await io.which('go');
|
||||||
const goVersion = (cp.execSync(`${goPath} version`) || '').toString();
|
const goVersion = (cp.execSync(`${goPath} version`) || '').toString();
|
||||||
|
const goEnvJson = readGoEnv(goPath);
|
||||||
|
|
||||||
|
if (goEnvJson) {
|
||||||
|
setGoEnvOutputs(goEnvJson);
|
||||||
|
}
|
||||||
|
|
||||||
if (cache && isCacheFeatureAvailable()) {
|
if (cache && isCacheFeatureAvailable()) {
|
||||||
const packageManager = 'default';
|
const packageManager = 'default';
|
||||||
@@ -113,6 +125,46 @@ export async function run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function readGoEnv(goPath: string): GoEnv | undefined {
|
||||||
|
try {
|
||||||
|
const rawGoEnv = cp.execFileSync(goPath, ['env', '-json'], {
|
||||||
|
encoding: 'utf8',
|
||||||
|
stdio: ['ignore', 'pipe', 'pipe']
|
||||||
|
});
|
||||||
|
const parsed: unknown = JSON.parse(rawGoEnv);
|
||||||
|
|
||||||
|
if (
|
||||||
|
typeof parsed !== 'object' ||
|
||||||
|
parsed === null ||
|
||||||
|
Array.isArray(parsed)
|
||||||
|
) {
|
||||||
|
throw new Error("'go env -json' did not return a JSON object");
|
||||||
|
}
|
||||||
|
|
||||||
|
return parsed as GoEnv;
|
||||||
|
} catch (error) {
|
||||||
|
core.info(
|
||||||
|
`Unable to read 'go env -json', the Go environment outputs will not be set: ${
|
||||||
|
(error as Error).message
|
||||||
|
}`
|
||||||
|
);
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function setGoEnvOutputs(goEnv: GoEnv): void {
|
||||||
|
for (const name of GO_ENV_OUTPUTS) {
|
||||||
|
core.setOutput(name, goEnv[name] ?? '');
|
||||||
|
}
|
||||||
|
|
||||||
|
core.setOutput(Outputs.GoBinPath, goEnv.GOBIN || goPathBin(goEnv));
|
||||||
|
}
|
||||||
|
|
||||||
|
function goPathBin(goEnv: GoEnv): string {
|
||||||
|
const goPath = (goEnv.GOPATH ?? '').split(path.delimiter)[0];
|
||||||
|
return goPath ? path.join(goPath, 'bin') : '';
|
||||||
|
}
|
||||||
|
|
||||||
export async function addBinToPath(): Promise<boolean> {
|
export async function addBinToPath(): Promise<boolean> {
|
||||||
let added = false;
|
let added = false;
|
||||||
const g = await io.which('go');
|
const g = await io.which('go');
|
||||||
@@ -163,6 +215,18 @@ function resolveVersionInput(): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (version) {
|
if (version) {
|
||||||
|
const customBaseUrl =
|
||||||
|
core.getInput('go-download-base-url') ||
|
||||||
|
process.env['GO_DOWNLOAD_BASE_URL'];
|
||||||
|
if (
|
||||||
|
version.startsWith('go') &&
|
||||||
|
!customBaseUrl &&
|
||||||
|
!installer.isGoNativeVersion(version)
|
||||||
|
) {
|
||||||
|
throw new Error(
|
||||||
|
`Invalid Go version "${version}". Go-native versions must look like go1.21, go1.21.5, go1.18beta2, or go1.21rc2. For version ranges, use SemVer syntax (e.g. ~1.21, ^1.21).`
|
||||||
|
);
|
||||||
|
}
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user