mirror of
https://github.com/actions/setup-go.git
synced 2026-11-09 22:53:39 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
38a5d8ba2c | ||
|
|
fbd97068ad | ||
|
|
289392effb | ||
|
|
d35c59abb0 | ||
|
|
29694d72cd | ||
|
|
78535dd5f2 | ||
|
|
bb65d8857b | ||
|
|
7f17e836c0 | ||
|
|
dca8468d37 | ||
|
|
691cc3533f | ||
|
|
0aaccfd150 | ||
|
|
c4c1141886 | ||
|
|
5a083d0e9a | ||
|
|
1d82324e53 |
No files matched your search
@@ -7,7 +7,7 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 --->
|
||||
<!--- Please direct any generic questions related to actions to our support community forum at https://github.com/orgs/community/discussions/categories/actions --->
|
||||
<!--- Before opening up a new bug report, please make sure to check for similar existing issues -->
|
||||
|
||||
**Description:**
|
||||
|
||||
@@ -5,7 +5,7 @@ title: ''
|
||||
labels: feature request, needs triage
|
||||
assignees: ''
|
||||
---
|
||||
<!--- Please direct any generic questions related to actions to our support community forum at https://github.community/c/code-to-cloud/github-actions/41 --->
|
||||
<!--- Please direct any generic questions related to actions to our support community forum at https://github.com/orgs/community/discussions/categories/actions --->
|
||||
<!--- Before opening up a new feature request, please make sure to check for similar existing issues and pull requests -->
|
||||
|
||||
**Description:**
|
||||
|
||||
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
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.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
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.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
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.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
Binary file not shown.
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.
Generated
BIN
Binary file not shown.
Generated
BIN
Binary file not shown.
@@ -40,7 +40,7 @@ The V3 edition of the action offers:
|
||||
The action will first check the local cache for a version match. If a version is not found locally, it will pull it from
|
||||
the `main` branch of the [go-versions](https://github.com/actions/go-versions/blob/main/versions-manifest.json)
|
||||
repository. On miss or failure, it will fall back to downloading directly
|
||||
from [go dist](https://storage.googleapis.com/golang). To change the default behavior, please use
|
||||
from [go dist](https://go.dev/dl). To change the default behavior, please use
|
||||
the [check-latest input](#check-latest-version).
|
||||
|
||||
**Note:** The `setup-go` action uses executable binaries which are built by Golang side. The action does not build
|
||||
@@ -247,7 +247,7 @@ When dynamically downloading Go distributions, `setup-go` downloads distribution
|
||||
|
||||
These calls to `actions/go-versions` are made via unauthenticated requests, which are limited to [60 requests per hour per IP](https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting).
|
||||
If more requests are made within the time frame, then the action leverages the `raw API` to retrieve the version-manifest. This approach does not impose a rate limit and hence facilitates unrestricted consumption. This is particularly beneficial for GHES runners, which often share the same IP, to avoid the quick exhaustion of the unauthenticated rate limit.
|
||||
If that fails as well the action will try to download versions directly from https://storage.googleapis.com/golang.
|
||||
If that fails as well the action will try to download versions directly from https://go.dev/dl.
|
||||
|
||||
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:
|
||||
|
||||
|
||||
@@ -388,7 +388,7 @@ describe('setup-go', () => {
|
||||
|
||||
const expPath = path.win32.join(toolPath, 'bin');
|
||||
expect(dlSpy).toHaveBeenCalledWith(
|
||||
'https://storage.googleapis.com/golang/go1.13.1.windows-amd64.zip',
|
||||
'https://go.dev/dl/go1.13.1.windows-amd64.zip',
|
||||
'C:\\temp\\go1.13.1.windows-amd64.zip',
|
||||
undefined
|
||||
);
|
||||
@@ -945,7 +945,7 @@ use .
|
||||
const expectedUrl =
|
||||
platform === 'win32'
|
||||
? `https://github.com/actions/go-versions/releases/download/${version}/go-${version}-${platform}-${arch}.${fileExtension}`
|
||||
: `https://storage.googleapis.com/golang/go${version}.${osSpec}-${arch}.${fileExtension}`;
|
||||
: `https://go.dev/dl/go${version}.${osSpec}-${arch}.${fileExtension}`;
|
||||
|
||||
// ... but not in the local cache
|
||||
findSpy.mockImplementation(() => '');
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
import {isSelfHosted} from '../src/utils';
|
||||
|
||||
describe('utils', () => {
|
||||
describe('isSelfHosted', () => {
|
||||
let AGENT_ISSELFHOSTED: string | undefined;
|
||||
let RUNNER_ENVIRONMENT: string | undefined;
|
||||
|
||||
beforeEach(() => {
|
||||
AGENT_ISSELFHOSTED = process.env['AGENT_ISSELFHOSTED'];
|
||||
delete process.env['AGENT_ISSELFHOSTED'];
|
||||
RUNNER_ENVIRONMENT = process.env['RUNNER_ENVIRONMENT'];
|
||||
delete process.env['RUNNER_ENVIRONMENT'];
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
if (AGENT_ISSELFHOSTED === undefined) {
|
||||
delete process.env['AGENT_ISSELFHOSTED'];
|
||||
} else {
|
||||
process.env['AGENT_ISSELFHOSTED'] = AGENT_ISSELFHOSTED;
|
||||
}
|
||||
if (RUNNER_ENVIRONMENT === undefined) {
|
||||
delete process.env['RUNNER_ENVIRONMENT'];
|
||||
} else {
|
||||
process.env['RUNNER_ENVIRONMENT'] = RUNNER_ENVIRONMENT;
|
||||
}
|
||||
});
|
||||
|
||||
it('isSelfHosted should be true if no environment variables set', () => {
|
||||
expect(isSelfHosted()).toBeTruthy();
|
||||
});
|
||||
|
||||
it('isSelfHosted should be true if environment variable is not set to denote GitHub hosted', () => {
|
||||
process.env['RUNNER_ENVIRONMENT'] = 'some';
|
||||
expect(isSelfHosted()).toBeTruthy();
|
||||
});
|
||||
|
||||
it('isSelfHosted should be true if environment variable set to denote Azure Pipelines self hosted', () => {
|
||||
process.env['AGENT_ISSELFHOSTED'] = '1';
|
||||
expect(isSelfHosted()).toBeTruthy();
|
||||
});
|
||||
|
||||
it('isSelfHosted should be false if environment variable set to denote GitHub hosted', () => {
|
||||
process.env['RUNNER_ENVIRONMENT'] = 'github-hosted';
|
||||
expect(isSelfHosted()).toBeFalsy();
|
||||
});
|
||||
|
||||
it('isSelfHosted should be false if environment variable is not set to denote Azure Pipelines self hosted', () => {
|
||||
process.env['AGENT_ISSELFHOSTED'] = 'some';
|
||||
expect(isSelfHosted()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
});
|
||||
Vendored
+1334
-3024
File diff suppressed because it is too large.
Load diff
Vendored
+1562
-3899
File diff suppressed because it is too large.
Load diff
Generated
+552
-667
File diff suppressed because it is too large.
Load diff
+11
-11
@@ -25,31 +25,31 @@
|
||||
"author": "GitHub",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/cache": "^4.0.0",
|
||||
"@actions/core": "^1.10.0",
|
||||
"@actions/exec": "^1.1.0",
|
||||
"@actions/glob": "^0.4.0",
|
||||
"@actions/cache": "^4.0.3",
|
||||
"@actions/core": "^1.11.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/glob": "^0.5.0",
|
||||
"@actions/http-client": "^2.2.1",
|
||||
"@actions/io": "^1.0.2",
|
||||
"@actions/tool-cache": "^2.0.1",
|
||||
"semver": "^7.6.0"
|
||||
"semver": "^7.6.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.11.28",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||
"@typescript-eslint/parser": "^5.54.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.31.1",
|
||||
"@typescript-eslint/parser": "^8.31.1",
|
||||
"@vercel/ncc": "^0.38.1",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"eslint-plugin-jest": "^27.9.0",
|
||||
"eslint-config-prettier": "^10.0.1",
|
||||
"eslint-plugin-jest": "^28.11.0",
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest-circus": "^29.7.0",
|
||||
"nock": "^10.0.6",
|
||||
"prettier": "^2.8.4",
|
||||
"ts-jest": "^29.1.2",
|
||||
"ts-jest": "^29.3.2",
|
||||
"typescript": "^5.4.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
-8
@@ -6,7 +6,7 @@ import * as httpm from '@actions/http-client';
|
||||
import * as sys from './system';
|
||||
import fs from 'fs';
|
||||
import os from 'os';
|
||||
import {StableReleaseAlias} from './utils';
|
||||
import {StableReleaseAlias, isSelfHosted} from './utils';
|
||||
|
||||
const MANIFEST_REPO_OWNER = 'actions';
|
||||
const MANIFEST_REPO_NAME = 'go-versions';
|
||||
@@ -180,11 +180,7 @@ async function cacheWindowsDir(
|
||||
if (os.platform() !== 'win32') return false;
|
||||
|
||||
// make sure the action runs in the hosted environment
|
||||
if (
|
||||
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
||||
process.env['AGENT_ISSELFHOSTED'] === '1'
|
||||
)
|
||||
return false;
|
||||
if (isSelfHosted()) return false;
|
||||
|
||||
const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE'];
|
||||
if (!defaultToolCacheRoot) return false;
|
||||
@@ -279,11 +275,46 @@ export async function extractGoArchive(archivePath: string): Promise<string> {
|
||||
return extPath;
|
||||
}
|
||||
|
||||
function isIToolRelease(obj: any): obj is tc.IToolRelease {
|
||||
return (
|
||||
typeof obj === 'object' &&
|
||||
obj !== null &&
|
||||
typeof obj.version === 'string' &&
|
||||
typeof obj.stable === 'boolean' &&
|
||||
Array.isArray(obj.files) &&
|
||||
obj.files.every(
|
||||
(file: any) =>
|
||||
typeof file.filename === 'string' &&
|
||||
typeof file.platform === 'string' &&
|
||||
typeof file.arch === 'string' &&
|
||||
typeof file.download_url === 'string'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
export async function getManifest(
|
||||
auth: string | undefined
|
||||
): Promise<tc.IToolRelease[]> {
|
||||
try {
|
||||
return await getManifestFromRepo(auth);
|
||||
const manifest = await getManifestFromRepo(auth);
|
||||
if (
|
||||
Array.isArray(manifest) &&
|
||||
manifest.length &&
|
||||
manifest.every(isIToolRelease)
|
||||
) {
|
||||
return manifest;
|
||||
}
|
||||
|
||||
let errorMessage =
|
||||
'An unexpected error occurred while fetching the manifest.';
|
||||
if (
|
||||
typeof manifest === 'object' &&
|
||||
manifest !== null &&
|
||||
'message' in manifest
|
||||
) {
|
||||
errorMessage = (manifest as {message: string}).message;
|
||||
}
|
||||
throw new Error(errorMessage);
|
||||
} catch (err) {
|
||||
core.debug('Fetching the manifest via the API failed.');
|
||||
if (err instanceof Error) {
|
||||
@@ -355,7 +386,7 @@ async function getInfoFromDist(
|
||||
return null;
|
||||
}
|
||||
|
||||
const downloadUrl = `https://storage.googleapis.com/golang/${version.files[0].filename}`;
|
||||
const downloadUrl = `https://go.dev/dl/${version.files[0].filename}`;
|
||||
|
||||
return <IGoVersionInfo>{
|
||||
type: 'dist',
|
||||
|
||||
@@ -2,3 +2,13 @@ export enum StableReleaseAlias {
|
||||
Stable = 'stable',
|
||||
OldStable = 'oldstable'
|
||||
}
|
||||
|
||||
export const isSelfHosted = (): boolean =>
|
||||
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' &&
|
||||
(process.env['AGENT_ISSELFHOSTED'] === '1' ||
|
||||
process.env['AGENT_ISSELFHOSTED'] === undefined);
|
||||
/* the above is simplified from:
|
||||
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === '1'
|
||||
||
|
||||
process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && process.env['AGENT_ISSELFHOSTED'] === undefined
|
||||
*/
|
||||
Reference in new issue
Block a user