mirror of
https://github.com/actions/setup-python.git
synced 2025-04-22 17:52:30 +00:00
Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
30eafe9548 | ||
|
5d95bc16d4 | ||
|
6ed2c67c8a | ||
|
e348410e00 |
4
.github/workflows/e2e-cache.yml
vendored
4
.github/workflows/e2e-cache.yml
vendored
@ -78,8 +78,12 @@ jobs:
|
||||
python-version: pypy-3.11-v7.x
|
||||
- os: ubuntu-22.04
|
||||
python-version: pypy-3.11-v7.x
|
||||
- os: ubuntu-22.04-arm
|
||||
python-version: pypy-3.10-v7.x
|
||||
- os: ubuntu-22.04-arm
|
||||
python-version: pypy-3.11-v7.x
|
||||
- os: ubuntu-22.04-arm
|
||||
python-version: pypy-3.10-v7.x
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Python
|
||||
|
1
.github/workflows/e2e-tests.yml
vendored
1
.github/workflows/e2e-tests.yml
vendored
@ -19,7 +19,6 @@ jobs:
|
||||
matrix:
|
||||
operating-system:
|
||||
[
|
||||
ubuntu-20.04,
|
||||
windows-latest,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
|
2
.github/workflows/test-graalpy.yml
vendored
2
.github/workflows/test-graalpy.yml
vendored
@ -21,7 +21,6 @@ jobs:
|
||||
os:
|
||||
[
|
||||
macos-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
@ -77,7 +76,6 @@ jobs:
|
||||
os:
|
||||
[
|
||||
macos-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
|
4
.github/workflows/test-pypy.yml
vendored
4
.github/workflows/test-pypy.yml
vendored
@ -24,7 +24,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
@ -142,7 +141,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
@ -177,7 +175,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
@ -220,7 +217,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
ubuntu-24.04-arm,
|
||||
|
@ -24,7 +24,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -62,7 +61,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -103,7 +101,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -142,7 +139,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -184,7 +180,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -226,7 +221,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -258,7 +252,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -371,7 +364,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -461,7 +453,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
|
8
.github/workflows/test-python.yml
vendored
8
.github/workflows/test-python.yml
vendored
@ -24,7 +24,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -69,7 +68,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -117,7 +115,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -163,7 +160,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -214,7 +210,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -265,7 +260,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -300,7 +294,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
@ -419,7 +412,6 @@ jobs:
|
||||
[
|
||||
macos-latest,
|
||||
windows-latest,
|
||||
ubuntu-20.04,
|
||||
ubuntu-22.04,
|
||||
ubuntu-22.04-arm,
|
||||
macos-13,
|
||||
|
BIN
.licenses/npm/lru-cache.dep.yml
generated
BIN
.licenses/npm/lru-cache.dep.yml
generated
Binary file not shown.
Binary file not shown.
BIN
.licenses/npm/yallist.dep.yml
generated
BIN
.licenses/npm/yallist.dep.yml
generated
Binary file not shown.
@ -8,10 +8,29 @@ import * as tc from '@actions/tool-cache';
|
||||
|
||||
jest.mock('@actions/http-client');
|
||||
jest.mock('@actions/tool-cache');
|
||||
|
||||
const mockManifest = [{version: '1.0.0'}];
|
||||
jest.mock('@actions/tool-cache', () => ({
|
||||
getManifestFromRepo: jest.fn()
|
||||
}));
|
||||
const mockManifest = [
|
||||
{
|
||||
version: '1.0.0',
|
||||
stable: true,
|
||||
files: [
|
||||
{
|
||||
filename: 'tool-v1.0.0-linux-x64.tar.gz',
|
||||
platform: 'linux',
|
||||
arch: 'x64',
|
||||
download_url: 'https://example.com/tool-v1.0.0-linux-x64.tar.gz'
|
||||
}
|
||||
]
|
||||
}
|
||||
];
|
||||
|
||||
describe('getManifest', () => {
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
|
||||
it('should return manifest from repo', async () => {
|
||||
(tc.getManifestFromRepo as jest.Mock).mockResolvedValue(mockManifest);
|
||||
const manifest = await getManifest();
|
||||
|
959
dist/setup/index.js
vendored
959
dist/setup/index.js
vendored
File diff suppressed because it is too large
Load Diff
52
package-lock.json
generated
52
package-lock.json
generated
@ -17,12 +17,12 @@
|
||||
"@actions/io": "^1.0.2",
|
||||
"@actions/tool-cache": "^2.0.1",
|
||||
"@iarna/toml": "^3.0.0",
|
||||
"semver": "^7.6.0"
|
||||
"semver": "^7.7.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.11.25",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/semver": "^7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||
"@typescript-eslint/parser": "^5.54.0",
|
||||
"@vercel/ncc": "^0.38.3",
|
||||
@ -32,7 +32,7 @@
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest-circus": "^29.7.0",
|
||||
"prettier": "^2.8.4",
|
||||
"prettier": "^3.5.3",
|
||||
"ts-jest": "^29.1.2",
|
||||
"typescript": "^5.4.2"
|
||||
}
|
||||
@ -1620,10 +1620,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "7.5.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
|
||||
"integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
|
||||
"dev": true
|
||||
"version": "7.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz",
|
||||
"integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/stack-utils": {
|
||||
"version": "2.0.3",
|
||||
@ -4569,15 +4570,16 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "2.8.8",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
|
||||
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"prettier": "bin-prettier.js"
|
||||
"prettier": "bin/prettier.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
"node": ">=14"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||
@ -4812,12 +4814,10 @@
|
||||
"integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
|
||||
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"version": "7.7.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
|
||||
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
@ -4825,22 +4825,6 @@
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/semver/node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/semver/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/shebang-command": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
|
||||
|
@ -33,12 +33,12 @@
|
||||
"@actions/io": "^1.0.2",
|
||||
"@actions/tool-cache": "^2.0.1",
|
||||
"@iarna/toml": "^3.0.0",
|
||||
"semver": "^7.6.0"
|
||||
"semver": "^7.7.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.11.25",
|
||||
"@types/semver": "^7.5.8",
|
||||
"@types/semver": "^7.7.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.54.0",
|
||||
"@typescript-eslint/parser": "^5.54.0",
|
||||
"@vercel/ncc": "^0.38.3",
|
||||
@ -48,7 +48,7 @@
|
||||
"eslint-plugin-node": "^11.1.0",
|
||||
"jest": "^29.7.0",
|
||||
"jest-circus": "^29.7.0",
|
||||
"prettier": "^2.8.4",
|
||||
"prettier": "^3.5.3",
|
||||
"ts-jest": "^29.1.2",
|
||||
"typescript": "^5.4.2"
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import * as exec from '@actions/exec';
|
||||
import * as httpm from '@actions/http-client';
|
||||
import {ExecOptions} from '@actions/exec/lib/interfaces';
|
||||
import {IS_WINDOWS, IS_LINUX, getDownloadFileName} from './utils';
|
||||
import {IToolRelease} from '@actions/tool-cache';
|
||||
|
||||
const TOKEN = core.getInput('token');
|
||||
const AUTH = !TOKEN ? undefined : `token ${TOKEN}`;
|
||||
@ -31,14 +32,41 @@ export async function findReleaseFromManifest(
|
||||
|
||||
return foundRelease;
|
||||
}
|
||||
|
||||
function isIToolRelease(obj: any): obj is 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(): Promise<tc.IToolRelease[]> {
|
||||
try {
|
||||
return await getManifestFromRepo();
|
||||
const repoManifest = await getManifestFromRepo();
|
||||
if (
|
||||
Array.isArray(repoManifest) &&
|
||||
repoManifest.length &&
|
||||
repoManifest.every(isIToolRelease)
|
||||
) {
|
||||
return repoManifest;
|
||||
}
|
||||
throw new Error(
|
||||
'The repository manifest is invalid or does not include any valid tool release (IToolRelease) entries.'
|
||||
);
|
||||
} catch (err) {
|
||||
core.debug('Fetching the manifest via the API failed.');
|
||||
if (err instanceof Error) {
|
||||
core.debug(err.message);
|
||||
} else {
|
||||
core.error('An unexpected error occurred while fetching the manifest.');
|
||||
}
|
||||
}
|
||||
return await getManifestFromURL();
|
||||
@ -93,6 +121,9 @@ async function installPython(workingDirectory: string) {
|
||||
}
|
||||
|
||||
export async function installCpythonFromRelease(release: tc.IToolRelease) {
|
||||
if (!release.files || release.files.length === 0) {
|
||||
throw new Error('No files found in the release to download.');
|
||||
}
|
||||
const downloadUrl = release.files[0].download_url;
|
||||
|
||||
core.info(`Download from "${downloadUrl}"`);
|
||||
@ -113,9 +144,13 @@ export async function installCpythonFromRelease(release: tc.IToolRelease) {
|
||||
} catch (err) {
|
||||
if (err instanceof tc.HTTPError) {
|
||||
// Rate limit?
|
||||
if (err.httpStatusCode === 403 || err.httpStatusCode === 429) {
|
||||
if (err.httpStatusCode === 403) {
|
||||
core.error(
|
||||
`Received HTTP status code 403. This indicates a permission issue or restricted access.`
|
||||
);
|
||||
} else if (err.httpStatusCode === 429) {
|
||||
core.info(
|
||||
`Received HTTP status code ${err.httpStatusCode}. This usually indicates the rate limit has been exceeded`
|
||||
`Received HTTP status code 429. This usually indicates the rate limit has been exceeded`
|
||||
);
|
||||
} else {
|
||||
core.info(err.message);
|
||||
|
Loading…
Reference in New Issue
Block a user