mirror of
https://github.com/actions/setup-python.git
synced 2026-07-13 02:14:19 +03:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dc0ab79732 | |||
| 0903b469fb | |||
| ece7cb06ca | |||
| 1d18d7af5f |
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 80,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"bracketSpacing": false,
|
||||||
|
"arrowParens": "avoid"
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
certifi==2020.6.20
|
certifi==2024.7.4
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
docutils==0.16
|
docutils==0.16
|
||||||
idna==3.15
|
idna==3.15
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
altgraph==0.17.2
|
altgraph==0.17.2
|
||||||
|
|
||||||
certifi==2020.6.20
|
certifi==2024.7.4
|
||||||
|
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
|
|
||||||
|
|||||||
Vendored
+14
-9
@@ -54331,24 +54331,29 @@ class PipCache extends cache_distributor_1.default {
|
|||||||
this.pythonVersion = pythonVersion;
|
this.pythonVersion = pythonVersion;
|
||||||
}
|
}
|
||||||
async getCacheGlobalDirectories() {
|
async getCacheGlobalDirectories() {
|
||||||
let exitCode = 1;
|
let exitCode = 0;
|
||||||
let stdout = '';
|
let stdout = '';
|
||||||
let stderr = '';
|
let stderr = '';
|
||||||
// Add temporary fix for Windows
|
// Add temporary fix for Windows
|
||||||
// On windows it is necessary to execute through an exec
|
// On Windows, it is necessary to execute through an exec
|
||||||
// because the getExecOutput gives a non zero code or writes to stderr for pip 22.0.2,
|
// because the getExecOutput gives a non-zero code or writes to stderr for pip 22.0.2,
|
||||||
// or spawn must be started with the shell option enabled for getExecOutput
|
// or spawn must be started with the shell option enabled for getExecOutput
|
||||||
// Related issue: https://github.com/actions/setup-python/issues/328
|
// Related issue: https://github.com/actions/setup-python/issues/328
|
||||||
if (utils_1.IS_WINDOWS) {
|
if (utils_1.IS_WINDOWS) {
|
||||||
const execPromisify = util_1.default.promisify(child_process.exec);
|
const execPromisify = util_1.default.promisify(child_process.exec);
|
||||||
({ stdout: stdout, stderr: stderr } = await execPromisify('pip cache dir'));
|
try {
|
||||||
|
({ stdout, stderr } = await execPromisify('pip cache dir'));
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
// Pip outputs warnings to stderr (e.g., --no-python-version-warning flag deprecation warning), causing false failure detection
|
||||||
|
// Related issue: https://github.com/actions/setup-python/issues/1034
|
||||||
|
// If an error occurs, capture stderr and set exitCode to 1 to indicate failure
|
||||||
|
stderr = err.stderr ?? err.message;
|
||||||
|
exitCode = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
({
|
({ stdout, stderr, exitCode } = await exec.getExecOutput('pip cache dir'));
|
||||||
stdout: stdout,
|
|
||||||
stderr: stderr,
|
|
||||||
exitCode: exitCode
|
|
||||||
} = await exec.getExecOutput('pip cache dir'));
|
|
||||||
}
|
}
|
||||||
if (exitCode && stderr) {
|
if (exitCode && stderr) {
|
||||||
throw new Error(`Could not get cache folder path for pip package manager`);
|
throw new Error(`Could not get cache folder path for pip package manager`);
|
||||||
|
|||||||
@@ -555,8 +555,8 @@ GitHub hosted runners have a tool cache that comes with a few versions of Python
|
|||||||
|**PyPy tool cache**|`RUNNER_TOOL_CACHE/PyPy/*`|
|
|**PyPy tool cache**|`RUNNER_TOOL_CACHE/PyPy/*`|
|
||||||
|
|
||||||
GitHub runner images are set up in [actions/runner-images](https://github.com/actions/runner-images). During the setup, the available versions of Python and PyPy are automatically downloaded, set up and documented.
|
GitHub runner images are set up in [actions/runner-images](https://github.com/actions/runner-images). During the setup, the available versions of Python and PyPy are automatically downloaded, set up and documented.
|
||||||
- Tool cache setup for Ubuntu: [Install-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/linux/scripts/installers/Install-Toolset.ps1) [Configure-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/linux/scripts/installers/Configure-Toolset.ps1)
|
- Tool cache setup for Ubuntu: [Install-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/Install-Toolset.ps1) [Configure-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/ubuntu/scripts/build/Configure-Toolset.ps1)
|
||||||
- Tool cache setup for Windows: [Install-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/win/scripts/Installers/Install-Toolset.ps1) [Configure-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/win/scripts/Installers/Configure-Toolset.ps1)
|
- Tool cache setup for Windows: [Install-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/windows/scripts/build/Install-Toolset.ps1) [Configure-Toolset.ps1](https://github.com/actions/runner-images/blob/main/images/windows/scripts/build/Configure-Toolset.ps1)
|
||||||
|
|
||||||
|
|
||||||
## Using `setup-python` with a self-hosted runner
|
## Using `setup-python` with a self-hosted runner
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
// This is a reusable configuration file copied from https://github.com/actions/reusable-workflows/tree/main/reusable-configurations. Please don't make changes to this file as it's the subject of an automatic update.
|
||||||
|
import js from '@eslint/js';
|
||||||
|
import tsParser from '@typescript-eslint/parser';
|
||||||
|
import tsPlugin from '@typescript-eslint/eslint-plugin';
|
||||||
|
import jest from 'eslint-plugin-jest';
|
||||||
|
import n from 'eslint-plugin-n';
|
||||||
|
import prettier from 'eslint-config-prettier';
|
||||||
|
import globals from 'globals';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
ignores: ['**/*', '!src/**', '!__tests__/**']
|
||||||
|
},
|
||||||
|
js.configs.recommended,
|
||||||
|
{
|
||||||
|
files: ['**/*.ts'],
|
||||||
|
languageOptions: {
|
||||||
|
parser: tsParser,
|
||||||
|
ecmaVersion: 2022,
|
||||||
|
sourceType: 'module',
|
||||||
|
globals: {
|
||||||
|
...globals.node,
|
||||||
|
...globals.es2015
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: {
|
||||||
|
'@typescript-eslint': tsPlugin,
|
||||||
|
n
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
...tsPlugin.configs.recommended.rules,
|
||||||
|
'@typescript-eslint/no-require-imports': 'error',
|
||||||
|
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||||
|
'@typescript-eslint/no-explicit-any': 'off',
|
||||||
|
'@typescript-eslint/no-empty-function': 'off',
|
||||||
|
'@typescript-eslint/ban-ts-comment': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
'ts-ignore': 'allow-with-description'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'no-console': 'error',
|
||||||
|
yoda: 'error',
|
||||||
|
'prefer-const': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
destructuring: 'all'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
'no-control-regex': 'off',
|
||||||
|
'no-constant-condition': ['error', {checkLoops: false}],
|
||||||
|
'no-undef': 'off',
|
||||||
|
'no-useless-assignment': 'off',
|
||||||
|
'n/no-extraneous-import': 'error'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ['**/*{test,spec}.ts'],
|
||||||
|
plugins: {jest},
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...globals.jest
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
...jest.configs['flat/recommended'].rules,
|
||||||
|
'@typescript-eslint/no-unused-vars': 'off',
|
||||||
|
'jest/no-standalone-expect': 'off',
|
||||||
|
'jest/no-conditional-expect': 'off',
|
||||||
|
'no-console': 'off'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
prettier
|
||||||
|
];
|
||||||
@@ -21,24 +21,28 @@ class PipCache extends CacheDistributor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected async getCacheGlobalDirectories() {
|
protected async getCacheGlobalDirectories() {
|
||||||
let exitCode = 1;
|
let exitCode = 0;
|
||||||
let stdout = '';
|
let stdout = '';
|
||||||
let stderr = '';
|
let stderr = '';
|
||||||
|
|
||||||
// Add temporary fix for Windows
|
// Add temporary fix for Windows
|
||||||
// On windows it is necessary to execute through an exec
|
// On Windows, it is necessary to execute through an exec
|
||||||
// because the getExecOutput gives a non zero code or writes to stderr for pip 22.0.2,
|
// because the getExecOutput gives a non-zero code or writes to stderr for pip 22.0.2,
|
||||||
// or spawn must be started with the shell option enabled for getExecOutput
|
// or spawn must be started with the shell option enabled for getExecOutput
|
||||||
// Related issue: https://github.com/actions/setup-python/issues/328
|
// Related issue: https://github.com/actions/setup-python/issues/328
|
||||||
if (IS_WINDOWS) {
|
if (IS_WINDOWS) {
|
||||||
const execPromisify = utils.promisify(child_process.exec);
|
const execPromisify = utils.promisify(child_process.exec);
|
||||||
({stdout: stdout, stderr: stderr} = await execPromisify('pip cache dir'));
|
try {
|
||||||
|
({stdout, stderr} = await execPromisify('pip cache dir'));
|
||||||
|
} catch (err) {
|
||||||
|
// Pip outputs warnings to stderr (e.g., --no-python-version-warning flag deprecation warning), causing false failure detection
|
||||||
|
// Related issue: https://github.com/actions/setup-python/issues/1034
|
||||||
|
// If an error occurs, capture stderr and set exitCode to 1 to indicate failure
|
||||||
|
stderr = (err as any).stderr ?? (err as Error).message;
|
||||||
|
exitCode = 1;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
({
|
({stdout, stderr, exitCode} = await exec.getExecOutput('pip cache dir'));
|
||||||
stdout: stdout,
|
|
||||||
stderr: stderr,
|
|
||||||
exitCode: exitCode
|
|
||||||
} = await exec.getExecOutput('pip cache dir'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exitCode && stderr) {
|
if (exitCode && stderr) {
|
||||||
|
|||||||
Reference in New Issue
Block a user