actions / setup-python

Set up your GitHub Actions workflow with a specific version of Python
MIT License
1.59k stars 507 forks source link

Failed to unzip the Python package on Windows-2022 Core server #819

Open imarinov3 opened 4 months ago

imarinov3 commented 4 months ago

Description: A clear and concise description of what the bug is.

Action version: 2.313.0

Platform:

Runner type:

Tools version:

Repro steps:

 - name: Setup python
        uses: actions/setup-python@v5
        with:
          python-version: '3.6.x - 3.11.x'

Expected behavior: To install the required Python version

Actual behavior: Failed to unzip Python package

Run actions/setup-python@v5 with: python-version: 3.6.x - 3.11.x check-latest: false token: *** update-environment: true allow-prereleases: false env: DEBUG: 1

Installed versions Version 3.6.x - 3.11.x was not found in the local cache Version 3.6.x - 3.11.x is available for downloading Download from "https://github.com/actions/python-versions/releases/download/3.11.8-7809691605/python-3.11.8-win[32](https://github.com/abaltatech/weblink/actions/runs/7950776332/job/21720913455#step:3:34)-x64.zip" Extract downloaded archive C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner_work_temp\370840e9-4c83-483f-a8af-1541c208a31e' -DestinationPath 'C:\actions-runner_work_temp\e587df2a-0014-4ec2-9433-6002add0f7c7' -Force } else {[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\actions-runner_work_temp[37](https://github.com/abaltatech/weblink/actions/runs/7950776332/job/21720913455#step:3:39)08[40](https://github.com/abaltatech/weblink/actions/runs/7950776332/job/21720913455#step:3:42)e9-4c83-483f-a8af-15[41](https://github.com/abaltatech/weblink/actions/runs/7950776332/job/21720913455#step:3:44)c208a31e', 'C:\actions-runner_work_temp\e587df2a-0014-4ec2-9433-6002add0f7c7', $true) }" Expand-Archive : is not a supported archive file format. .zip is the only supported archive file format. At line:1 char:210

aparnajyothi-y commented 4 months ago

Hello @imarinov3, Thank you for creating this issue and we will get back you once we have some feedback on this :)

JamesParrott commented 4 months ago

The tag '3.6.x - 3.11.x' does install 3.11 on a ubuntu runner. I can't find any examples showing hyphen ranges can be used together with x-ranges, but it's valid according to the BNF.

https://github.com/npm/node-semver#advanced-range-syntax https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#using-the-python-version-input

SMoraisAnsys commented 4 months ago

I'm facing the same issue on a Windows self-hosted runner (with any python 3.9, 3.10 and 3.11). The error message is

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae' -DestinationPath 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43[31](https://github.com/myorg/myproject/actions/runs/8102206303/job/22144158811#step:3:33)6e491e7' -Force } else {[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae', 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43316e491e7', $true) }"
  Expand-Archive :  is not a supported archive file format. .zip is the only supported archive file format.
  At line:1 char:210
  + ...  Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_tem ...
  +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo          : InvalidArgument: (:String) [Expand-Archive], IOException
      + FullyQualifiedErrorId : NotSupportedArchiveFileExtension,Expand-Archive

  Error: The process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' failed with exit code 1

But the strange thing is that downgrading to actions/setup-python@v4 solved my issue. @imarinov3 Downgrading the version could be a good workaround while waiting for an official fix.

imarinov3 commented 4 months ago

I'm facing the same issue on a Windows self-hosted runner (with any python 3.9, 3.10 and 3.11). The error message is

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae' -DestinationPath 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43[31](https://github.com/myorg/myproject/actions/runs/8102206303/job/22144158811#step:3:33)6e491e7' -Force } else {[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae', 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43316e491e7', $true) }"
  Expand-Archive :  is not a supported archive file format. .zip is the only supported archive file format.
  At line:1 char:210
  + ...  Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_tem ...
  +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo          : InvalidArgument: (:String) [Expand-Archive], IOException
      + FullyQualifiedErrorId : NotSupportedArchiveFileExtension,Expand-Archive

  Error: The process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' failed with exit code 1

But the strange thing is that downgrading to actions/setup-python@v4 solved my issue. @imarinov3 Downgrading the version could be a good workaround while waiting for an official fix.

@SMoraisAnsys yes, there is no other option. I am worrying about that version 4 is not working on node20. Anyway your fix is working , I have tested and hope it will be merged soon. Thank you!

priyagupta108 commented 4 months ago

Hello @imarinov3 , Thanks for your report. Unfortunately, I am not able to reproduce the issue on my end. For further investigation, Could you please share repro link of public repository to reproduce the issue.

imarinov3 commented 4 months ago

Hello @priyagupta108 , did you test on self-hosted runner with windows 2022 ?

SMoraisAnsys commented 4 months ago

@priyagupta108 From what I've seen through

I'm facing the same issue on a Windows self-hosted runner (with any python 3.9, 3.10 and 3.11). The error message is

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae' -DestinationPath 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43[31](https://github.com/myorg/myproject/actions/runs/8102206303/job/22144158811#step:3:33)6e491e7' -Force } else {[System.IO.Compression.ZipFile]::ExtractToDirectory('C:\actions-runner\_work\_temp\968efb97-afa0-4870-9856-654bd5dcc1ae', 'C:\actions-runner\_work\_temp\843ebfd5-ab48-4451-b81f-a43316e491e7', $true) }"
  Expand-Archive :  is not a supported archive file format. .zip is the only supported archive file format.
  At line:1 char:210
  + ...  Ignore)) { Expand-Archive -LiteralPath 'C:\actions-runner\_work\_tem ...
  +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      + CategoryInfo          : InvalidArgument: (:String) [Expand-Archive], IOException
      + FullyQualifiedErrorId : NotSupportedArchiveFileExtension,Expand-Archive

  Error: The process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' failed with exit code 1

But the strange thing is that downgrading to actions/setup-python@v4 solved my issue. @imarinov3 Downgrading the version could be a good workaround while waiting for an official fix.

@SMoraisAnsys yes, there is no other option. I am worrying about that version 4 is not working on node20. Anyway your fix is working , I have tested and hope it will be merged soon. Thank you!

You can make it back to version 5 afterward (unless your self-hosted runner is on a VM that is deployed on the fly). If it is still running, then previous version of installed CPython version are leveraged. Thus you can use actions/setup-python@v4 to extract correctly and install and then switch to actions/setup-python@v5 as python would already be installed.

@priyagupta108 I took the time to reproduce the error in https://github.com/ansys/pyedb/actions/runs/8112180616/job/22172843447. In this case, i tried to use a new python version (never used yet) with our windows self-hosted runner. Please have a look at #827 which should patch this problem. At least it worked on our other repo. If you want, I can push another commit to the CI to switch the use of actions/setup-python to SMoraisAnsys/setup-python@fix/windows_extract_cpython_release to illustrate that it works ?

SMoraisAnsys commented 3 months ago

@priyagupta108 I took the liberty to reproduce the error on a github runner. The associated branch (https://github.com/SMoraisAnsys/setup-python/tree/test/no-pwshpath) consists in removing a part of the code of function extractZipWin(file, dest) in order to ensure that the runner uses the failing part of the code.

PR that can be used to oversee the changes : https://github.com/SMoraisAnsys/setup-python/pull/1 Failing CI log : https://github.com/SMoraisAnsys/setup-python/actions/runs/8491166206/job/23262896827?pr=1

SMoraisDev commented 2 months ago

@priyagupta108 Any updates on this issue or the proposed solution (#827) ? Seems like the problem was reproduced using github GPU runners, see https://github.com/ultralytics/ultralytics/pull/9515

valentinvarbanov commented 2 months ago

@actions/setup-actions-team @aparnajyothi-y @priyagupta108 Are there plans to resolve this as there does not seem to be much activity in the past month?

Burhan-Q commented 1 month ago

Ran into this issue with the Windows GPU runners https://github.com/ultralytics/ultralytics/pull/9515 a fix would definitely be appreciated. Thank @SMoraisAnsys for your input and guidance.

FYI, I downloaded the zip file from the link in the workflow https://github.com/actions/python-versions/releases/download/3.11.9-8525206794/python-3.11.9-win32-x64.zip to my Win10 desktop and was able to unzip this with the PowerShell Expand-Archive module and then install python without an issue, so it's not clear to me why this fails for the runner.

aparnajyothi-y commented 1 month ago

Hello Everyone, From our analysis, the issue seems to be linked with the @actions/tool-cache dependency. The setup-python action makes use of this toolkit-cache, specifically the extractZipWin function. This function is a part of the actions/toolkit repository , plays a key role in the extractZip method, determining the approach for zip file extraction based on the platform used.

A potential solution to this issue seems to be provided in the following pull request: toolkit PR#1552.

jeremyd2019 commented 1 month ago

My reading of that PR is that it just adds wrappers on top of the existing methods, and the underlying issue with extractZipWin would still be there.