Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to 2024.06.17 version of VMs #161

Closed
wants to merge 1 commit into from

Conversation

amonshiz
Copy link
Contributor

@amonshiz amonshiz commented Jun 18, 2024

We recently rolled out version 2024.06.17 of the Windows VMs. They moved to more recent Azure OS offerings and implement more complete DataDog Agent observability for the GitHub Runner process.

Copy link
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @amonshiz and the rest of your teammates on Graphite Graphite

Copy link
Collaborator

@compnerd compnerd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean, the change seems to do what it says on the tin. This doesn't really indicate what the VM image changes are - I assume that the CI runs will ensure that the images are good.

Copy link
Contributor Author

I mean, the change seems to do what it says on the tin. This doesn't really indicate what the VM image changes are - I assume that the CI runs will ensure that the images are good.

That is why I linked to the PR that had the information. Unfortunately there have been a number of changes since the 2024-05-17 and the 2024-06-17 images. I'll try to aggregate those and add to this PR description.

@kendalharland
Copy link
Member

kendalharland commented Jun 18, 2024

I mean, the change seems to do what it says on the tin. This doesn't really indicate what the VM image changes are - I assume that the CI runs will ensure that the images are good.

Fortunately we're not using them just yet. I'll rebase #159 which will test the images, and once it's mered all future image rolls will be tested and we can safely automate them at some point. This reminds me I should also update the pull_request.paths trigger to include .cirun.yml.

Copy link
Contributor Author

I mean, the change seems to do what it says on the tin. This doesn't really indicate what the VM image changes are - I assume that the CI runs will ensure that the images are good.

Fortunately we're not using them just yet. I'll rebase #159 which will test the images, and once it's mered all future image rolls will be tested and we can safely automate them at some point. This reminds me I should also update the pull_request.paths trigger to include .cirun.yml.

Great call! I noticed this failed because of pip not being available for some reason. I expect it is another fall out of the change to how Python 3.9 is installed on arm64 VMs now. https://github.com/thebrowsercompany/arc/pull/27344

Copy link
Contributor Author

Ugh. Yeah, that is it. python3 is showing up on the path but not pip.

PS C:\Users\runner> echo $Env:Path
C:\Program Files\PowerShell\7;C:\Program Files\git\usr\bin;C:\Program Files\git\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Tailscale\;C:\Program Files\WinGet\Links;C:\Program Files\Git\cmd;C:\Program Files\CMake\bin;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\dotnet\;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\GitHub CLI\;C:\Users\runner\.cargo\bin;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Users\runner\AppData\Local\Microsoft\WindowsApps;C:\Users\runner\AppData\Local\Microsoft\WinGet\Links;C:\Users\runner\.dotnet\tools;C:\Program Files\PackageManagement\NuGet\Packages\pythonarm64.3.9.10\tools
PS C:\Users\runner> which python3
/c/Program Files/PackageManagement/NuGet/Packages/pythonarm64.3.9.10/tools/python3
PS C:\Users\runner> python3 --version
Python 3.9.10
PS C:\Users\runner> python3 -m pip --help

Usage:
  C:\Program Files\PackageManagement\NuGet\Packages\pythonarm64.3.9.10\tools\python3.exe -m pip <command> [options]

Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  cache                       Inspect and manage pip's wheel cache.
  index                       Inspect information available from package indexes.
  wheel                       Build wheels from your requirements.
  hash                        Compute hashes of package archives.
  completion                  A helper command used for command completion.
  debug                       Show information useful for debugging.
  help                        Show help for commands.

General Options:
  -h, --help                  Show help.
  --isolated                  Run pip in an isolated mode, ignoring environment variables and user configuration.
  -v, --verbose               Give more output. Option is additive, and can be used up to 3 times.
  -V, --version               Show version and exit.
  -q, --quiet                 Give less output. Option is additive, and can be used up to 3 times (corresponding to WARNING, ERROR, and CRITICAL logging levels).
  --log <path>                Path to a verbose appending log.
  --no-input                  Disable prompting for input.
  --proxy <proxy>             Specify a proxy in the form [user:passwd@]proxy.server:port.
  --retries <retries>         Maximum number of retries each connection should attempt (default 5 times).
  --timeout <sec>             Set the socket timeout (default 15 seconds).
  --exists-action <action>    Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup, (a)bort.
  --trusted-host <hostname>   Mark this host or host:port pair as trusted, even though it does not have valid or any HTTPS.
  --cert <path>               Path to PEM-encoded CA certificate bundle. If provided, overrides the default. See 'SSL Certificate Verification' in pip documentation for more information.
  --client-cert <path>        Path to SSL client certificate, a single file containing the private key and the certificate in PEM format.
  --cache-dir <dir>           Store the cache data in <dir>.
  --no-cache-dir              Disable the cache.
  --disable-pip-version-check
                              Don't periodically check PyPI to determine whether a new version of pip is available for download. Implied with --no-index.
  --no-color                  Suppress colored output.
  --no-python-version-warning
                              Silence deprecation warnings for upcoming unsupported Pythons.
  --use-feature <feature>     Enable new functionality, that may be backward incompatible.
  --use-deprecated <feature>  Enable deprecated functionality, that will be removed in the future.

Copy link
Contributor Author

Yeah and the NuGet Python install doesn't include any pip executable in that tools directory.

PS C:\Users\runner> dir 'C:\Program Files\PackageManagement\NuGet\Packages\pythonarm64.3.9.10\tools\'


    Directory: C:\Program Files\PackageManagement\NuGet\Packages\pythonarm64.3.9.10\tools


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         6/17/2024  10:49 PM                DLLs
d-----         6/17/2024  10:49 PM                include
d-----         6/18/2024   6:52 PM                Lib
d-----         6/17/2024  10:49 PM                libs
d-----         6/17/2024  10:49 PM                Tools
-a----         1/17/2022   2:32 PM          25278 LICENSE.txt
-a----         1/17/2022   2:32 PM         100752 python.exe
-a----         1/17/2022   2:32 PM          60304 python3.dll
-a---l         6/17/2024  10:49 PM              0 python3.exe
-a----         1/17/2022   2:32 PM        5529488 python39.dll
-a----         1/17/2022   2:32 PM          99728 pythonw.exe
-a----         1/17/2022   2:32 PM         193416 vcruntime140.dll
-a----         1/17/2022   2:32 PM          56200 vcruntime140_1.dll

Dang, this change has really been frustrating to work through.

@kendalharland
Copy link
Member

kendalharland commented Jun 20, 2024

Ah, yeah that is annoying. When I get the time I can patch the release binary size workflow to install python instead of assume it comes with the VM, and invoke python3 -m pip explicitly as a workaround, then rebase and merge this PR if you like.

Copy link
Contributor Author

That seems like a pretty good work around!

I'm thinking something we can do is also install a wide range of Python versions on the Windows VMs and then just require any workflow that wants to use Python use the setup action we have, and in there on a self-hosted Windows VM it would verify that the desired Python is pre-installed and set the expected venv variables as usual.

@kendalharland
Copy link
Member

That sounds like a great idea!

@amonshiz amonshiz closed this Aug 29, 2024
@compnerd compnerd deleted the amonshiz/roll-windows-vms-to-2024.06.17 branch December 16, 2024 21:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants