setup-python icon indicating copy to clipboard operation
setup-python copied to clipboard

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

Open imarinov3 opened this issue 1 year ago • 13 comments

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

Action version: 2.313.0

Platform:

  • [ ] Ubuntu
  • [ ] macOS
  • [x] Windows

Runner type:

  • [ ] Hosted
  • [x] Self-hosted

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-win32-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)0840e9-4c83-483f-a8af-1541c208a31e', '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

  • ... 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

imarinov3 avatar Feb 19 '24 12:02 imarinov3

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

aparnajyothi-y avatar Feb 19 '24 13:02 aparnajyothi-y

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

JamesParrott avatar Feb 21 '24 12:02 JamesParrott

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 avatar Feb 29 '24 20:02 SMoraisAnsys

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!

imarinov3 avatar Mar 01 '24 08:03 imarinov3

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.

priyagupta108 avatar Mar 01 '24 10:03 priyagupta108

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

imarinov3 avatar Mar 01 '24 11:03 imarinov3

@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 avatar Mar 01 '24 13:03 SMoraisAnsys

@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

SMoraisAnsys avatar Mar 30 '24 13:03 SMoraisAnsys

@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

SMoraisDev avatar Apr 28 '24 16:04 SMoraisDev

@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?

valentinvarbanov avatar Apr 29 '24 12:04 valentinvarbanov

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.

Burhan-Q avatar May 03 '24 11:05 Burhan-Q

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.

aparnajyothi-y avatar May 08 '24 09:05 aparnajyothi-y

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.

jeremyd2019 avatar May 15 '24 23:05 jeremyd2019

Hello Everyone, We've merged the pull request with possible fix. Could you please try to use actions/setup-python@main to confirm that it works as expected.

priyagupta108 avatar Aug 08 '24 08:08 priyagupta108

@priyagupta108 I'll have a look right away !

SMoraisAnsys avatar Aug 08 '24 08:08 SMoraisAnsys

Hello Everyone, We've merged the pull request with possible fix. Could you please try to use actions/setup-python@main to confirm that it works as expected.

This worked fine on our CICD, see bellow

image

@priyagupta108 Can we expect a new release with those changes in the coming days ?

SMoraisAnsys avatar Aug 08 '24 08:08 SMoraisAnsys

Our workflow running on Windows also works fine.

imarinov3 avatar Aug 08 '24 09:08 imarinov3

Hello, Thank you for confirming the fix. We will be rolling out a new release that includes these changes soon. Closing this issue now. If you encounter any further issues, please feel free to open a new one.

priyagupta108 avatar Aug 12 '24 05:08 priyagupta108