From e093d1e9bb74ffc381514c57dcb7832730010598 Mon Sep 17 00:00:00 2001 From: Salman Chishti Date: Thu, 4 Sep 2025 03:54:45 +0100 Subject: [PATCH] Node 24 upgrade (#624) * Node 24 upgrade Doing an upgrade for node 24, node 24 is stricter with types so need to add a type for achitecture * format * package updates * fix for check failures * upgrade @types/node * update package.json version * check failure fix * package-lock.json update * update node24 * npm run format * npm run format * node update from the workflows * Upgrade `actions/checkout` to v5 and `actions/setup-go` to v6 in README.md --------- Co-authored-by: Aparna Jyothi Co-authored-by: Priya Gupta <147705955+priyagupta108@users.noreply.github.com> --- .github/workflows/basic-validation.yml | 2 +- .github/workflows/check-dist.yml | 2 +- .licenses/npm/@types/node.dep.yml | 2 +- .licenses/npm/undici-types.dep.yml | 6 ++-- README.md | 46 +++++++++++++------------- package-lock.json | 25 ++++++++------ package.json | 7 ++-- src/installer.ts | 16 +++++---- src/main.ts | 5 +-- src/system.ts | 3 +- src/types.ts | 2 ++ 11 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 src/types.ts diff --git a/.github/workflows/basic-validation.yml b/.github/workflows/basic-validation.yml index 01da5ec..3288674 100644 --- a/.github/workflows/basic-validation.yml +++ b/.github/workflows/basic-validation.yml @@ -15,4 +15,4 @@ jobs: name: Basic validation uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main with: - node-version: '20' + node-version: '24.x' diff --git a/.github/workflows/check-dist.yml b/.github/workflows/check-dist.yml index 30aa221..90ef986 100644 --- a/.github/workflows/check-dist.yml +++ b/.github/workflows/check-dist.yml @@ -16,4 +16,4 @@ jobs: name: Check dist/ uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main with: - node-version: '20' + node-version: '24.x' diff --git a/.licenses/npm/@types/node.dep.yml b/.licenses/npm/@types/node.dep.yml index 10103ad..86544f4 100644 --- a/.licenses/npm/@types/node.dep.yml +++ b/.licenses/npm/@types/node.dep.yml @@ -1,6 +1,6 @@ --- name: "@types/node" -version: 20.11.28 +version: 24.1.0 type: npm summary: TypeScript definitions for node homepage: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node diff --git a/.licenses/npm/undici-types.dep.yml b/.licenses/npm/undici-types.dep.yml index a65b8af..370219b 100644 --- a/.licenses/npm/undici-types.dep.yml +++ b/.licenses/npm/undici-types.dep.yml @@ -1,15 +1,17 @@ --- name: undici-types -version: 5.26.5 +version: 7.8.0 type: npm summary: A stand-alone types package for Undici homepage: https://undici.nodejs.org license: mit licenses: -- sources: Auto-generated MIT license text +- sources: LICENSE text: | MIT License + Copyright (c) Matteo Collina and Undici contributors + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights diff --git a/README.md b/README.md index d4fa6fa..d31dae0 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,8 @@ Matching by [semver spec](https://github.com/npm/node-semver): ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '^1.13.1' # The Go version to download (if necessary) and use. - run: go version @@ -59,8 +59,8 @@ steps: ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '>=1.17.0' - run: go version @@ -78,8 +78,8 @@ Matching an unstable pre-release: ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '1.18.0-rc.1' # The Go version to download (if necessary) and use. - run: go version @@ -87,8 +87,8 @@ steps: ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '1.16.0-beta.1' # The Go version to download (if necessary) and use. - run: go version @@ -102,8 +102,8 @@ See [action.yml](action.yml) ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '1.16.1' # The Go version to download (if necessary) and use. - run: go run hello.go @@ -123,8 +123,8 @@ want the most up-to-date Go version to always be used. ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '1.14' check-latest: true @@ -144,8 +144,8 @@ set to `true` ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: 'stable' - run: go run hello.go @@ -153,8 +153,8 @@ steps: ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: 'oldstable' - run: go run hello.go @@ -176,8 +176,8 @@ If some problem that prevents success caching happens then the action issues the ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version: '1.17' check-latest: true @@ -210,8 +210,8 @@ If both the `go-version` and the `go-version-file` inputs are provided then the ```yaml steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 with: go-version-file: 'path/to/go.mod' - run: go version @@ -228,9 +228,9 @@ jobs: go: [ '1.14', '1.13' ] name: Go ${{ matrix.go }} sample steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Setup go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: ${{ matrix.go }} - run: go run hello.go @@ -258,7 +258,7 @@ If that fails as well the action will try to download versions directly from htt 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 -uses: actions/setup-go@v5 +uses: actions/setup-go@v6 with: token: ${{ secrets.GH_DOTCOM_TOKEN }} go-version: '1.18' diff --git a/package-lock.json b/package-lock.json index c548f17..c3b205c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "setup-go", - "version": "5.0.0", + "version": "6.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "setup-go", - "version": "5.0.0", + "version": "6.0.0", "license": "MIT", "dependencies": { "@actions/cache": "^4.0.3", @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/jest": "^29.5.14", - "@types/node": "^20.11.28", + "@types/node": "^24.1.0", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.35.1", @@ -35,6 +35,9 @@ "prettier": "^2.8.4", "ts-jest": "^29.3.2", "typescript": "^5.8.3" + }, + "engines": { + "node": ">=24.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -1599,11 +1602,12 @@ } }, "node_modules/@types/node": { - "version": "20.11.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.28.tgz", - "integrity": "sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", + "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~7.8.0" } }, "node_modules/@types/node-fetch": { @@ -5973,9 +5977,10 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT" }, "node_modules/update-browserslist-db": { "version": "1.0.13", diff --git a/package.json b/package.json index e6252e2..3fd7b61 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,12 @@ { "name": "setup-go", - "version": "5.0.0", + "version": "6.0.0", "private": true, "description": "setup go action", "main": "lib/setup-go.js", + "engines": { + "node": ">=24.0.0" + }, "scripts": { "build": "tsc && ncc build -o dist/setup src/setup-go.ts && ncc build -o dist/cache-save src/cache-save.ts", "format": "prettier --no-error-on-unmatched-pattern --config ./.prettierrc.js --write \"**/*.{ts,yml,yaml}\"", @@ -36,7 +39,7 @@ }, "devDependencies": { "@types/jest": "^29.5.14", - "@types/node": "^20.11.28", + "@types/node": "^24.1.0", "@types/semver": "^7.5.8", "@typescript-eslint/eslint-plugin": "^8.31.1", "@typescript-eslint/parser": "^8.35.1", diff --git a/src/installer.ts b/src/installer.ts index 2fad1d8..6dcd729 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -7,6 +7,7 @@ import * as sys from './system'; import fs from 'fs'; import os from 'os'; import {StableReleaseAlias, isSelfHosted} from './utils'; +import {Architecture} from './types'; export const GOTOOLCHAIN_ENV_VAR = 'GOTOOLCHAIN'; export const GOTOOLCHAIN_LOCAL_VAL = 'local'; @@ -41,7 +42,7 @@ export async function getGo( versionSpec: string, checkLatest: boolean, auth: string | undefined, - arch = os.arch() + arch: Architecture = os.arch() as Architecture ) { let manifest: tc.IToolRelease[] | undefined; const osPlat: string = os.platform(); @@ -153,7 +154,7 @@ async function resolveVersionFromManifest( versionSpec: string, stable: boolean, auth: string | undefined, - arch: string, + arch: Architecture, manifest: tc.IToolRelease[] | undefined ): Promise { try { @@ -355,7 +356,7 @@ export async function getInfoFromManifest( versionSpec: string, stable: boolean, auth: string | undefined, - arch = os.arch(), + arch: Architecture = os.arch() as Architecture, manifest?: tc.IToolRelease[] | undefined ): Promise { let info: IGoVersionInfo | null = null; @@ -381,7 +382,7 @@ export async function getInfoFromManifest( async function getInfoFromDist( versionSpec: string, - arch: string + arch: Architecture ): Promise { const version: IGoVersion | undefined = await findMatch(versionSpec, arch); if (!version) { @@ -400,7 +401,7 @@ async function getInfoFromDist( export async function findMatch( versionSpec: string, - arch = os.arch() + arch: Architecture = os.arch() as Architecture ): Promise { const archFilter = sys.getArch(arch); const platFilter = sys.getPlatform(); @@ -517,7 +518,10 @@ export function parseGoVersionFile(versionFilePath: string): string { return contents.trim(); } -async function resolveStableVersionDist(versionSpec: string, arch: string) { +async function resolveStableVersionDist( + versionSpec: string, + arch: Architecture +) { const archFilter = sys.getArch(arch); const platFilter = sys.getPlatform(); const dlUrl = 'https://golang.org/dl/?mode=json&include=all'; diff --git a/src/main.ts b/src/main.ts index 0412d13..26939ee 100644 --- a/src/main.ts +++ b/src/main.ts @@ -8,6 +8,7 @@ import {isCacheFeatureAvailable} from './cache-utils'; import cp from 'child_process'; import fs from 'fs'; import os from 'os'; +import {Architecture} from './types'; export async function run() { try { @@ -21,10 +22,10 @@ export async function run() { const cache = core.getBooleanInput('cache'); core.info(`Setup go version spec ${versionSpec}`); - let arch = core.getInput('architecture'); + let arch = core.getInput('architecture') as Architecture; if (!arch) { - arch = os.arch(); + arch = os.arch() as Architecture; } if (versionSpec) { diff --git a/src/system.ts b/src/system.ts index e54146d..b549d22 100644 --- a/src/system.ts +++ b/src/system.ts @@ -1,4 +1,5 @@ import os from 'os'; +import {Architecture} from './types'; export function getPlatform(): string { // darwin and linux match already @@ -15,7 +16,7 @@ export function getPlatform(): string { return plat; } -export function getArch(arch: string): string { +export function getArch(arch: Architecture): string { // 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', and 'x64'. // wants amd64, 386, arm64, armv61, ppc641e, s390x diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..288588e --- /dev/null +++ b/src/types.ts @@ -0,0 +1,2 @@ +// match what @actions/tool-cache expects +export type Architecture = string;