Compare commits
218 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f354a7d15a | |||
| 7dd3415d1d | |||
| 430fcac7a5 | |||
| e2da3936c0 | |||
| fa5cbc8929 | |||
| 60cea812f9 | |||
| b3bb8b13dd | |||
| c3aee9078b | |||
| 660b5fa27d | |||
| d20c00ea50 | |||
| 99b185488c | |||
| 17e674feb8 | |||
| 91c9bd5ec9 | |||
| 8db7d9b280 | |||
| f990779ae3 | |||
| 893bd268b3 | |||
| 8ea6260475 | |||
| 4c9f589a74 | |||
| 020404c5ec | |||
| 7c31b32cd0 | |||
| cf75c29700 | |||
| 563ad669b6 | |||
| 3c3b8c3a4b | |||
| 1055718159 | |||
| 4a4bb867df | |||
| 155611075f | |||
| 0c88026a49 | |||
| 31524f9299 | |||
| e9fb9a27f1 | |||
| 611f51c112 | |||
| 1783ba44e5 | |||
| d13166b30a | |||
| 8f6f07be52 | |||
| 8b8837b75e | |||
| e179364a95 | |||
| 333c0b07b8 | |||
| 06b10bc772 | |||
| b8aa72583d | |||
| 9ddb14eaa3 | |||
| cd3f019c1f | |||
| 917b44921d | |||
| f3b66a78c2 | |||
| efc67f6917 | |||
| a54c530e8e | |||
| 3c8c453258 | |||
| 5e1d4436f8 | |||
| 8d4cd94cea | |||
| 0e39fce0af | |||
| ea19d49e6a | |||
| b1a3220f73 | |||
| cf23db3d81 | |||
| cd75f4d2aa | |||
| 87d0517213 | |||
| 405adebae3 | |||
| d28f0b8969 | |||
| 2887d30450 | |||
| 6b0ce0afd9 | |||
| 04114b0247 | |||
| 8ddabfccbc | |||
| d2e7173d53 | |||
| 4dba67af9f | |||
| 3b1e7044da | |||
| 551a8557bb | |||
| 4faaaf1aa0 | |||
| cb6343da30 | |||
| 9f0f0060cd | |||
| 4e1b7569cc | |||
| 35b8d55d02 | |||
| 13c1652ebc | |||
| 94f57f91b5 | |||
| 7dec00ffab | |||
| 23bb3c3ec7 | |||
| 19956ab592 | |||
| 6c002f7175 | |||
| e97f2cefd9 | |||
| 6a88e384e2 | |||
| 8323333063 | |||
| 8b47233606 | |||
| f0ec665f80 | |||
| 5e94824ace | |||
| fcf2e58ab3 | |||
| fa4bbb1ce0 | |||
| 45e26c664e | |||
| b35930c176 | |||
| 3837ad5bd4 | |||
| e9732de2ec | |||
| f3769714b8 | |||
| a60594e683 | |||
| 7d74944277 | |||
| bc372d1bb2 | |||
| c4351bb5fd | |||
| d6a1c18e53 | |||
| 45e493f48c | |||
| 9d993a8888 | |||
| 24a5598950 | |||
| 1e255f9d04 | |||
| 66f34d1997 | |||
| 48a87eff74 | |||
| 761d354feb | |||
| 087bdcd997 | |||
| 71f0157880 | |||
| c218bde724 | |||
| 6309f04c36 | |||
| 599e47c037 | |||
| 7a8b98c725 | |||
| e393c898d5 | |||
| 4452345d86 | |||
| 5faa1daed0 | |||
| 182e22dfc1 | |||
| 39bd9125f9 | |||
| 5862d5b333 | |||
| 77aff10454 | |||
| aad50d1475 | |||
| 1e180d61ea | |||
| eb6c1eedb2 | |||
| 2706c43493 | |||
| 1b0ec730f6 | |||
| 04697394e9 | |||
| 7e9b865523 | |||
| 925185f01e | |||
| 2a89f3470d | |||
| 285cf722f0 | |||
| d45c853c72 | |||
| 5b150baab9 | |||
| 3e764b2aad | |||
| d5679a8ca1 | |||
| 9489021df8 | |||
| 0e11a86cd2 | |||
| 1998eb68e3 | |||
| ddad24a74c | |||
| 93bd50e5c0 | |||
| 23304e7196 | |||
| 82d766661b | |||
| 7f40eac117 | |||
| 09f475612d | |||
| 9a22aae73c | |||
| 5668be8c2f | |||
| 02154a30c3 | |||
| ec3f827c72 | |||
| 92f61283ab | |||
| 205c1c0cb7 | |||
| c6be53a4c4 | |||
| eca1f30b3e | |||
| 47be0626b1 | |||
| 3b155f06c2 | |||
| 3a718bdf6f | |||
| 061fbae809 | |||
| 5aa499517a | |||
| 206850279f | |||
| 58ac648246 | |||
| 0c1310995d | |||
| 568e9177b2 | |||
| 8c662c5d1a | |||
| 049ba391fe | |||
| 283c2e24e7 | |||
| 89f31bf788 | |||
| 2bf6a03a52 | |||
| 707eeda6ec | |||
| 39d3380fb2 | |||
| 67f19e51e6 | |||
| ee33773b83 | |||
| ac15b2b717 | |||
| 0d9f87fc06 | |||
| 1be20d99fa | |||
| 8ed95b8456 | |||
| 12fd6ca607 | |||
| 75cd759474 | |||
| 2646e00191 | |||
| f62e298c0e | |||
| fa2f5b4815 | |||
| dce2b21f0a | |||
| d9f2f12ea8 | |||
| 3708b41ea1 | |||
| 522f700a8f | |||
| bb887b7912 | |||
| d1e7592a66 | |||
| ac941eaf0a | |||
| 1932eb5b1a | |||
| 44685a66e1 | |||
| c73a29e9fa | |||
| eec95bce78 | |||
| 54fe6db2c6 | |||
| 7a8a9b0a11 | |||
| dc01c37dc5 | |||
| 8649f48207 | |||
| 58ecf45cf0 | |||
| a3ef6b2b8f | |||
| 84b177af16 | |||
| 7d634bd45a | |||
| 4e4e6cdb36 | |||
| ee9ec37ac5 | |||
| f2d2f38c0f | |||
| 7764984bf9 | |||
| 1fe6d0156d | |||
| 802455cbe6 | |||
| bb6893f898 | |||
| 3ddf8d150b | |||
| e14b36d131 | |||
| 514e429c4a | |||
| 0830eeb8fa | |||
| e664a5c3f3 | |||
| 93af8363f9 | |||
| 1b73462b49 | |||
| 3cae8d73d3 | |||
| 7afeca2a81 | |||
| 2e271cf1d9 | |||
| 982b41742e | |||
| 3ad48e7597 | |||
| eed8f18495 | |||
| 5119944d4c | |||
| 99c80a0773 | |||
| 676e808081 | |||
| e039a9492f | |||
| eee0743413 | |||
| 0e731c96a0 | |||
| 8b3114a482 | |||
| 29659cb4ed | |||
| d795344f43 |
@@ -39,16 +39,15 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: macOS 26
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Mitigation ways
|
||||
|
||||
@@ -22,16 +22,15 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: macOS 26
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Image version and build link
|
||||
|
||||
@@ -60,16 +60,15 @@ body:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: Ubuntu Slim
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: macOS 15
|
||||
- label: macOS 15 Arm64
|
||||
- label: macOS 26
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Can this tool be installed during the build?
|
||||
|
||||
@@ -10,7 +10,7 @@ permissions:
|
||||
|
||||
jobs:
|
||||
check-pinning-dates:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Create_pull_request:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
name: Test Docker Images
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'images/ubuntu-slim/**'
|
||||
- '.github/workflows/docker-images.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'images/ubuntu-slim/**'
|
||||
- '.github/workflows/docker-images.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
test-images:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
directory:
|
||||
- images/ubuntu-slim
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Run test.sh
|
||||
working-directory: ${{ matrix.directory }}
|
||||
run: ./test.sh
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Merge_pull_request:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
|
||||
jobs:
|
||||
Update_GitHub_release:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-slim
|
||||
|
||||
steps:
|
||||
- name: Update release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: Trigger Windows19 CI
|
||||
run-name: Windows2019 - ${{ github.event.pull_request.title }}
|
||||
name: Trigger Windows25 with VS 2026 CI
|
||||
run-name: Windows2025 with VS 2026 - ${{ github.event.pull_request.title }}
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
@@ -12,9 +12,9 @@ defaults:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Windows_2019:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2019'
|
||||
Windows_2025_vs_2026:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2025-vs2026'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'windows2019'
|
||||
image_type: 'windows2025-vs2026'
|
||||
secrets: inherit
|
||||
+3
-4
@@ -16,7 +16,6 @@ Please note that this project is released with a [Contributor Code of Conduct][c
|
||||
- [Adding a new tool to an image](#adding-a-new-tool-to-an-image)
|
||||
- [Code style guide](#code-style-guide)
|
||||
|
||||
|
||||
## Submitting a pull request
|
||||
|
||||
1. [Fork][fork] and clone the repository.
|
||||
@@ -41,18 +40,18 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
|
||||
- For every new tool, add validation scripts and update the software report script to ensure that it is included in the documentation.
|
||||
- If the tool is available on multiple platforms (macOS, Windows, Linux), make sure you include it on as many as possible.
|
||||
- If installing multiple versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. This will help other customers configure their builds flexibly. See [toolset-windows-2019.json](images/windows/toolsets/toolset-2019.json) as an example.
|
||||
- If installing multiple versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. This will help other customers configure their builds flexibly. See [toolset-windows-2022.json](images/windows/toolsets/toolset-2022.json) as an example.
|
||||
- Use consistent naming across all files.
|
||||
- Validation scripts should be simple and shouldn't change the image content.
|
||||
|
||||
### Windows
|
||||
|
||||
- Add a script that will install the tool and put the script in the `scripts/build` folder.
|
||||
There are a bunch of helper functions that could simplify your code: `Install-ChocoPackage`, `Install-Binary`, `Install-VSIXFromFile`, `Install-VSIXFromUrl`, `Invoke-DownloadWithRetry`, `Test-IsWin19`, `Test-IsWin22` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
There are a bunch of helper functions that could simplify your code: `Install-ChocoPackage`, `Install-Binary`, `Install-VSIXFromFile`, `Install-VSIXFromUrl`, `Invoke-DownloadWithRetry`, `Test-IsWin22`, `Test-IsWin25` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
- Add a script that will validate the tool installation and put the script in the `scripts/tests` folder.
|
||||
We use [Pester v5](https://github.com/pester/pester) for validation scripts. If the tests for the tool are complex enough, create a separate `*.Tests.ps1`. Otherwise, use `Tools.Tests.ps1` for simple tests.
|
||||
Add `Invoke-PesterTests -TestFile <testFileName> [-TestName <describeName>]` at the end of the installation script to ensure that your tests will be run.
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2019-Readme.md](images/windows/Windows2019-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2022-Readme.md](images/windows/Windows2022-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
|
||||
### Ubuntu
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 GitHub
|
||||
Copyright (c) 2026 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -18,37 +18,38 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | YAML Label | Included Software |
|
||||
| --------------------|---------------------|--------------------|
|
||||
| Ubuntu 24.04 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] |
|
||||
| Ubuntu 22.04 | `ubuntu-22.04` | [ubuntu-22.04] |
|
||||
| macOS 26 Arm64 `beta` | `macos-26` or `macos-26-xlarge` | [macOS-26-arm64] |
|
||||
| macOS 15 | `macos-latest-large`, `macos-15-large`, or `macos-15-intel` | [macOS-15] |
|
||||
| macOS 15 Arm64 | `macos-latest`, `macos-15`, or `macos-15-xlarge` | [macOS-15-arm64] |
|
||||
| macOS 14 | `macos-14-large`| [macOS-14] |
|
||||
| macOS 14 Arm64 | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
|
||||
| macOS 13  | `macos-13` or `macos-13-large` | [macOS-13] |
|
||||
| macOS 13 Arm64  | `macos-13-xlarge` | [macOS-13-arm64] |
|
||||
| Windows Server 2025 | `windows-latest` or `windows-2025` | [windows-2025] |
|
||||
| Windows Server 2022 | `windows-2022` | [windows-2022] |
|
||||
| Windows Server 2019  | `windows-2019` | [windows-2019] |
|
||||
| Image | Architecture | YAML Label | Included Software |
|
||||
| --------------------|--------------|---------------------|------------------|
|
||||
| Ubuntu 24.04<br> | x64 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] |
|
||||
| Ubuntu 22.04<br> | x64 | `ubuntu-22.04` | [ubuntu-22.04] |
|
||||
| Ubuntu Slim <br> | x64 | `ubuntu-slim` | [ubuntu-slim] |
|
||||
| macOS 26 Arm64<br> | arm64 | `macos-26` or `macos-26-xlarge` | [macOS-26-arm64] |
|
||||
| macOS 26<br> | x64 | `macos-26-intel`, `macos-26-large` | [macOS-26] |
|
||||
| macOS 15<br> | x64 | `macos-latest-large`, `macos-15-large`, or `macos-15-intel` | [macOS-15] |
|
||||
| macOS 15 Arm64<br> | arm64 | `macos-latest`, `macos-15`, or `macos-15-xlarge` | [macOS-15-arm64] |
|
||||
| macOS 14<br> | x64 | `macos-14-large`| [macOS-14] |
|
||||
| macOS 14 Arm64<br> | arm64 | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
|
||||
| Windows Server 2025 with Visual Studio 2026 <br> | x64 | `windows-2025-vs2026` | [windows-2025-vs2026] |
|
||||
| Windows Server 2025<br> | x64 | `windows-latest` or `windows-2025` | [windows-2025] |
|
||||
| Windows Server 2022<br> | x64 | `windows-2022` | [windows-2022] |
|
||||
|
||||
### Label scheme
|
||||
|
||||
- In general the `-latest` label is used for the latest OS image version that is GA
|
||||
- Before moving the`-latest` label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows
|
||||
- In general the `-latest` label is used for the latest OS image version that is GA.
|
||||
- Before moving the `-latest` label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows.
|
||||
- The `-xlarge` and `-large` suffixes are unique to macOS images and are only available for GitHub Actions. Learn more about [GitHub Actions larger runners](https://docs.github.com/en/actions/reference/runners/larger-runners#available-macos-larger-runners-and-labels).
|
||||
|
||||
[ubuntu-24.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
|
||||
[ubuntu-22.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2204-Readme.md
|
||||
[windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md
|
||||
[ubuntu-slim]: https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md
|
||||
[windows-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md
|
||||
[windows-2025-vs2026]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-VS2026-Readme.md
|
||||
[windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
|
||||
[macOS-13]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
|
||||
[macOS-13-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md
|
||||
[macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
|
||||
[macOS-14-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
|
||||
[macOS-15]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
||||
[macOS-15-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md
|
||||
[macOS-26]: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-Readme.md
|
||||
[macOS-26-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
|
||||
[self-hosted runners]: https://help.github.com/en/actions/hosting-your-own-runners
|
||||
|
||||
@@ -81,19 +82,18 @@ latest 2 versions of an OS.
|
||||
|
||||
GitHub Actions and Azure DevOps use the `-latest` YAML label (ex: `ubuntu-latest`, `windows-latest`, and `macos-latest`). These labels point towards the newest stable OS version available.
|
||||
|
||||
|
||||
The `-latest` migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the `-latest` label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
|
||||
|
||||
## Image Releases
|
||||
|
||||
*How to best follow along with changes*
|
||||
|
||||
1. Find the latest releases for this repository [here.](https://github.com/actions/runner-images/releases)
|
||||
2. Subscribe to the releases coming out of this repository, instructions [here.](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository)
|
||||
1. Find the latest releases for this repository [here](https://github.com/actions/runner-images/releases).
|
||||
2. Subscribe to the releases coming out of this repository, instructions [here](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository).
|
||||
3. Upcoming changes: A pre-release is created when the deployment of an image has started. As soon as the deployment is finished, the pre-release is converted to a release. If you have subscribed to releases, you will get notified of pre-releases as well.
|
||||
|
||||
- You can also track upcoming changes using the [awaiting-deployment](https://github.com/actions/runner-images/labels/awaiting-deployment) label.
|
||||
4. For high impact changes, we will post these in advance to the GitHub Changelog on our [blog](https://github.blog/changelog/) and on [twitter](https://twitter.com/GHchangelog).
|
||||
4. For high impact changes, we will post these in advance to the GitHub Changelog on our [blog](https://github.blog/changelog/) and on [X](https://x.com/GHchangelog).
|
||||
- Ex: breaking changes, GA or deprecation of images
|
||||
|
||||
*Cadence*
|
||||
@@ -141,10 +141,10 @@ We use third-party package managers to install software during the image generat
|
||||
### Image Deprecation Policy
|
||||
|
||||
- Images begin the deprecation process of the oldest image label once a new GA OS version has been released.
|
||||
- Deprecation process begins with an announcement that sets a date for deprecation
|
||||
- As it gets closer to the date, GitHub begins doing scheduled brownouts of the image
|
||||
- Deprecation process begins with an announcement that sets a date for deprecation.
|
||||
- As it gets closer to the date, GitHub begins doing scheduled brownouts of the image.
|
||||
- During this time there will be an Announcement pinned in the repo to remind users of the deprecation.
|
||||
- Finally GitHub will deprecate the image and it will no longer be available
|
||||
- Finally, GitHub will deprecate the image and it will no longer be available.
|
||||
|
||||
### Preinstallation Policy
|
||||
|
||||
@@ -165,8 +165,8 @@ In general, these are the guidelines we follow when deciding what to pre-install
|
||||
## How to Interact with the Repo
|
||||
|
||||
- **Issues**: To file a bug report, or request tools to be added/updated, please [open an issue using the appropriate template](https://github.com/actions/runner-images/issues/new/choose)
|
||||
- **Discussions**: If you want to share your thoughts about image configuration, installed software, or bring a new idea, please create a new topic in a [discussion](https://github.com/actions/runner-images/discussions) for a corresponding category. Before making a new discussion please make sure no similar topics were created earlier.
|
||||
- For general questions about using the runner images or writing your Actions workflow, please open requests in the [GitHub Actions Community Forum](https://github.community/c/github-actions/41).
|
||||
- **Discussions**: If you want to share your thoughts about image configuration, installed software, or bring a new idea, please create a [new discussion](https://github.com/orgs/community/discussions/new?category=actions). Before making a new discussion, please make sure no similar topics were created earlier in the [actions category](https://github.com/orgs/community/discussions/categories/actions).
|
||||
- For general questions about using the runner images or writing your Actions workflow, please open requests in the [GitHub Community discussion Actions category](https://github.com/orgs/community/discussions/categories/actions).
|
||||
|
||||
## FAQs
|
||||
|
||||
@@ -174,8 +174,10 @@ In general, these are the guidelines we follow when deciding what to pre-install
|
||||
<summary><b><i>What images are available for GitHub Actions and Azure DevOps?</b></i></summary>
|
||||
|
||||
The availability of images for GitHub Actions and Azure DevOps is the same. However, deprecation policies may differ. See documentation for more details:
|
||||
|
||||
- [GitHub Actions](https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners#supported-runners-and-hardware-resources)
|
||||
- [Azure DevOps](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#software)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# GitHub Actions Runner Images
|
||||
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2019/2022 and Ubuntu 22.04/24.04.
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2022/2025 and Ubuntu 22.04/24.04.
|
||||
|
||||
Each image is configured by a HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
and what steps to run to install software and prepare the disk.
|
||||
@@ -98,7 +98,7 @@ Finally, run the `GenerateResourcesAndImage` function, setting the mandatory arg
|
||||
- `ResourceGroupName` - the name of the resource group that will store the resulting artifact (e.g., "imagegen-test").
|
||||
The resource group must already exist in your Azure subscription;
|
||||
- `AzureLocation` - the location where resources will be created (e.g., "East US");
|
||||
- `ImageType` - the type of image to build (valid options are "Windows2019", "Windows2022", "Windows2025", "Ubuntu2204", "Ubuntu2404").
|
||||
- `ImageType` - the type of image to build (valid options are "Windows2022", "Windows2025", "Ubuntu2204", "Ubuntu2404").
|
||||
|
||||
This function automatically creates all required Azure resources and initiates the Packer image generation for the selected image type.
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
This document gives an overview of these change and the impact this has on the `runner-images`.
|
||||
|
||||
## .NET Core for Ubuntu 2004 and 2204
|
||||
## .NET Core for Ubuntu 2204
|
||||
|
||||
2004 and 2204 use the [Microsoft Package repository](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2004) to install .NET deb files built and published by the .NET team.
|
||||
2204 uses the [Microsoft Package repository](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2204) to install .NET deb files built and published by the .NET team.
|
||||
|
||||
## .NET Core Versions from Ubuntu 2404
|
||||
|
||||
|
||||
@@ -0,0 +1,339 @@
|
||||
# GitHub Actions Runner Images
|
||||
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2022/2025 and Ubuntu 22.04/24.04.
|
||||
|
||||
Each image is configured by a HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
and what steps to run to install software and prepare the disk.
|
||||
|
||||
The Packer process initializes a connection to the Azure subscription using Azure CLI and creates temporary resources
|
||||
required for the build process: a resource group, network interfaces and a virtual machine from the "clean" image specified in the template.
|
||||
|
||||
If the VM deployment succeeds, Packer connects to it using SSH or WinRM and begins executing installation steps from the template one-by-one.
|
||||
If any step fails, image generation is aborted, and the temporary VM is terminated.
|
||||
Packer also attempts to clean up all the temporary resources it created (unless otherwise configured).
|
||||
|
||||
After successful completion of all installation steps, Packer creates a managed image from the temporary VM's disk and deletes the VM.
|
||||
|
||||
- [Build Agent Preparation](#build-agent-preparation)
|
||||
- [Manual image generation](#manual-image-generation)
|
||||
- [Manual Image Generation Customization](#manual-image-generation-customization)
|
||||
- [Network Security](#network-security)
|
||||
- [Azure Subscription Authentication](#azure-subscription-authentication)
|
||||
- [Generated Machine Deployment](#generated-machine-deployment)
|
||||
- [Automated image generation](#automated-image-generation)
|
||||
- [GitHub Actions CI Workflows](#github-actions-ci-workflows)
|
||||
- [Running Packer directly in your own pipeline](#running-packer-directly-in-your-own-pipeline)
|
||||
- [Required variables](#required-variables)
|
||||
- [Optional variables](#optional-variables)
|
||||
- [Builder variables](#builder-variables)
|
||||
- [Toolset](#toolset)
|
||||
- [Post-generation scripts](#post-generation-scripts)
|
||||
- [Running scripts](#running-scripts)
|
||||
- [Script Details: Ubuntu](#script-details-ubuntu)
|
||||
- [Script Details: Windows](#script-details-windows)
|
||||
|
||||
## Build Agent Preparation
|
||||
|
||||
The build agent is a machine where the Packer process will be started.
|
||||
You can use any physical or virtual machine running Windows or Linux OS.
|
||||
Of course, you may also use an [Azure VM](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/quick-create-cli).
|
||||
In any case, you will need these software installed:
|
||||
|
||||
- Packer 1.8.2 or higher.
|
||||
|
||||
Download and install it manually from [here](https://www.packer.io/downloads) or use [Chocolatey](https://chocolatey.org/):
|
||||
|
||||
```powershell
|
||||
choco install packer
|
||||
```
|
||||
|
||||
- Git.
|
||||
|
||||
For Linux - install the latest version from your distro's package repo.
|
||||
|
||||
For Windows - download and install it from [here](https://gitforwindows.org/) or use [Chocolatey](https://chocolatey.org/):
|
||||
|
||||
```powershell
|
||||
choco install git -params '"/GitAndUnixToolsOnPath"'
|
||||
```
|
||||
|
||||
- Powershell 5.0 or higher.
|
||||
|
||||
In Windows you already have it.
|
||||
|
||||
For Linux follow instructions [here](https://learn.microsoft.com/en-us/windows-server/administration/linux-package-repository-for-microsoft-software)
|
||||
to add Microsoft's Linux Software Repository and then install the `powershell` package.
|
||||
|
||||
- Azure CLI.
|
||||
|
||||
Follow the instructions [here](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli).
|
||||
Or if you use Windows, you may run this command in Powershell instead:
|
||||
|
||||
```powershell
|
||||
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi
|
||||
Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi
|
||||
```
|
||||
|
||||
## Manual image generation
|
||||
|
||||
This repository includes a script that assists in generating images in Azure.
|
||||
All you need is an Azure subscription, a resource group in that subscription and a build agent configured as described above.
|
||||
|
||||
All the commands below should be executed in PowerShell.
|
||||
|
||||
First, clone the runner-images repository and set the current directory to it:
|
||||
|
||||
```powershell
|
||||
git clone https://github.com/actions/runner-images.git
|
||||
Set-Location runner-images
|
||||
```
|
||||
|
||||
Then, import the [GenerateResourcesAndImage](../../helpers/GenerateResourcesAndImage.ps1) script from the `helpers` subdirectory:
|
||||
|
||||
```powershell
|
||||
Import-Module .\helpers\GenerateResourcesAndImage.ps1
|
||||
```
|
||||
|
||||
Finally, run the `GenerateResourcesAndImage` function, setting the mandatory arguments: image type and where to build and store the resulting managed image:
|
||||
|
||||
- `SubscriptionId` - your Azure Subscription ID;
|
||||
- `ResourceGroupName` - the name of the resource group that will store the resulting artifact (e.g., "imagegen-test").
|
||||
The resource group must already exist in your Azure subscription;
|
||||
- `AzureLocation` - the location where resources will be created (e.g., "East US");
|
||||
- `ImageType` - the type of image to build (valid options are "Windows2022", "Windows2025", "Windows2025_vs2026", "Ubuntu2204", "Ubuntu2404").
|
||||
|
||||
This function automatically creates all required Azure resources and initiates the Packer image generation for the selected image type.
|
||||
|
||||
When the image is ready, you may proceed to [deployment](#generated-machine-deployment).
|
||||
|
||||
## Manual Image Generation Customization
|
||||
|
||||
The `GenerateResourcesAndImage` function accepts a number of arguments that may assist you in generating an image in your specific environment.
|
||||
|
||||
For example, you may want all the resources involved in the image generation process to be tagged.
|
||||
In this case, pass a HashTable of tags as a value for the `Tags` parameter.
|
||||
|
||||
If you don't want the function to authenticate interactively, you should create a Service Principal and invoke the function with the parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
You can find more details in the [corresponding section below](#azure-subscription-authentication).
|
||||
|
||||
Use `get-help GenerateResourcesAndImage -Detailed` for the complete list of available parameters.
|
||||
|
||||
### Network Security
|
||||
|
||||
To connect to a temporary virtual machine, Packer uses WinRM or SSH.
|
||||
|
||||
If your build agent is located outside of the Azure subscription where the temporary VM is created, a public network interface and public IP address are used.
|
||||
Make sure that firewalls are configured properly and that WinRM (TCP port 5986) and SSH (TCP port 22) connections are allowed both outgoing for the build agent and incoming for the temporary VM.
|
||||
Also, if you don't want the temporary VM to be accessible from everywhere, set the `RestrictToAgentIpAddress` parameter value to `$true`
|
||||
to set up firewall rules allowing access only from your build agent's public IP address.
|
||||
|
||||
If your build agent and temporary VM are in the same subscription, you can configure Packer to connect using a private virtual network.
|
||||
To achieve this, set proper values for the environment variables `VNET_RESOURCE_GROUP`, `VNET_NAME` and `VNET_SUBNET`.
|
||||
|
||||
### Azure Subscription Authentication
|
||||
|
||||
Packer uses a Service Principal to authenticate in Azure infrastructure.
|
||||
For more information about Service Principals, refer to the
|
||||
[Azure documentation](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal).
|
||||
|
||||
The `GenerateResourcesAndImage` function is able to create a Service Principal to be used by Packer.
|
||||
It uses the Connect-AzAccount cmdlet that invokes an interactive authentication process by default.
|
||||
If you don't want to use interactive authentication, you should create a Service Principal with full read-write permissions for the selected Azure subscription on your own
|
||||
and provide proper values for the parameters `AzureClientId`, `AzureClientSecret` and `AzureTenantId`.
|
||||
|
||||
Here is an example of how to create a Service Principal using the Az PowerShell module:
|
||||
|
||||
```powershell
|
||||
$credentials = [Microsoft.Azure.PowerShell.Cmdlets.Resources.MSGraph.Models.ApiV10.MicrosoftGraphPasswordCredential]@{
|
||||
StartDateTime = Get-Date
|
||||
EndDateTime = (Get-Date).AddDays(7)
|
||||
}
|
||||
|
||||
$sp = New-AzADServicePrincipal -DisplayName "imagegen-app"
|
||||
$appCred = New-AzADAppCredential -ApplicationId $sp.AppId -PasswordCredentials $credentials
|
||||
|
||||
Start-Sleep -Seconds 30
|
||||
New-AzRoleAssignment -RoleDefinitionName "Contributor" -PrincipalId $sp.Id
|
||||
Start-Sleep -Seconds 30
|
||||
|
||||
@{
|
||||
ClientId = $sp.AppId
|
||||
ClientSecret = $appCred.SecretText
|
||||
TenantId = (Get-AzSubscription -SubscriptionId $SubscriptionId).TenantId
|
||||
}
|
||||
```
|
||||
|
||||
## Generated Machine Deployment
|
||||
|
||||
After successful image generation, a Virtual Machine can be created from the generated image using the [CreateAzureVMFromPackerTemplate](../../helpers/CreateAzureVMFromPackerTemplate.ps1) script.
|
||||
|
||||
```powershell
|
||||
Import-Module .\helpers\CreateAzureVMFromPackerTemplate.ps1
|
||||
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {YourSubscriptionId} -ResourceGroupName {ResourceGroupName} -ManagedImageName "Runner-Image-Ubuntu2204" -VirtualMachineName "testvm1" -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
- `SubscriptionId` - the Azure subscription ID where resources will be created;
|
||||
- `ResourceGroupName` - the Azure resource group name where the Azure virtual machine will be created;
|
||||
- `ManagedImageName` - the name of the managed image to be used for the virtual machine creation;
|
||||
- `VirtualMachineName` - the name of the virtual machine to be generated;
|
||||
- `AdminUserName` - the administrator username for the virtual machine to be created;
|
||||
- `AdminPassword` - the administrator password for the virtual machine to be created;
|
||||
- `AzureLocation` - the location where the Azure virtual machine will be provisioned (e.g., "eastus").
|
||||
|
||||
This function creates an Azure VM and generates network resources in Azure to make the VM accessible.
|
||||
|
||||
## Automated image generation
|
||||
|
||||
### GitHub Actions CI Workflows
|
||||
|
||||
Image builds are automated through GitHub Actions. The pipelines were migrated from Azure DevOps to GitHub Actions.
|
||||
|
||||
Each image type has a dedicated workflow file in `.github/workflows/` that is triggered when a specific label is applied to a pull request targeting the relevant image path (`images/ubuntu/**` or `images/windows/**`):
|
||||
|
||||
| Workflow file | Trigger label(s) |
|
||||
|---|---|
|
||||
| `ubuntu2204.yml` | `CI ubuntu-all`, `CI ubuntu-2204` |
|
||||
| `ubuntu2404.yml` | `CI ubuntu-all`, `CI ubuntu-2404` |
|
||||
| `windows2022.yml` | `CI windows-all`, `CI windows-2022` |
|
||||
| `windows2025.yml` | `CI windows-all`, `CI windows-2025` |
|
||||
| `windows2025-vs2026.yml` | `CI windows-all`, `CI windows-2025-vs2026` |
|
||||
|
||||
Each of these workflows calls the reusable `trigger-ubuntu-win-build.yml` workflow, which:
|
||||
|
||||
1. Dispatches a `repository_dispatch` event to the CI repository (configured via the `CI_REPO` variable and `CI_PR_TOKEN` secret).
|
||||
2. Waits for the resulting workflow run in the CI repository to complete.
|
||||
|
||||
The actual image build in the CI repository is performed by the [`images.CI/linux-and-win/build-image.ps1`](../../images.CI/linux-and-win/build-image.ps1) script, which invokes Packer with the appropriate variables.
|
||||
|
||||
### Running Packer directly in your own pipeline
|
||||
|
||||
If you want to run image builds in your own CI/CD setup without using the trigger mechanism above, you can invoke Packer directly. You will need:
|
||||
|
||||
- a build agent configured as described in the [Build agent preparation](#build-agent-preparation) section;
|
||||
- an Azure subscription and Service Principal configured as described in the [Azure subscription authentication](#azure-subscription-authentication) section;
|
||||
- a resource group created in your Azure subscription where the managed image will be stored;
|
||||
- a string to be used as a password for the user used to install software (Windows only).
|
||||
|
||||
Then, invoke Packer with commands similar to the following:
|
||||
|
||||
```powershell
|
||||
packer plugins install github.com/hashicorp/azure 2.3.3
|
||||
|
||||
packer build -only "$BuildName*" `
|
||||
-var "subscription_id=$SubscriptionId" `
|
||||
-var "client_id=$ClientId" `
|
||||
-var "client_secret=$ClientSecret" `
|
||||
-var "install_password=$InstallPassword" `
|
||||
-var "location=$Location" `
|
||||
-var "image_os=$ImageOS" `
|
||||
-var "managed_image_name=$ImageName" `
|
||||
-var "managed_image_resource_group_name=$ImageResourceGroupName" `
|
||||
-var "tenant_id=$TenantId" `
|
||||
$TemplatePath
|
||||
```
|
||||
|
||||
Where:
|
||||
|
||||
- `BuildName` - name of the build defined in Packer template's `build{}` block (e.g. "ubuntu-24_04", "windows-2025", "windows-2025-vs2026");
|
||||
- `SubscriptionId` - your Azure Subscription ID;
|
||||
- `ClientId` and `ClientSecret` - Service Principal credentials;
|
||||
- `TenantId` - Azure Tenant ID;
|
||||
- `InstallPassword` - password for the user used to install software (Windows only);
|
||||
- `Location` - location where resources will be created (e.g., "East US");
|
||||
- `ImageOS` - the type of OS that will be deployed as a temporary VM (e.g. "ubuntu24", "win25", "win25-vs2026");
|
||||
- `ImageName` and `ImageResourceGroupName` - name of the resource group where the managed image will be stored;
|
||||
- `TemplatePath` - path to the folder with Packer template files (e.g., "images/windows/templates").
|
||||
|
||||
### Required variables
|
||||
|
||||
The following variables are required to be passed to the Packer process:
|
||||
|
||||
| Template var | Env var | Description
|
||||
| ------------ | ------- | -----------
|
||||
| `subscription_id` | `ARM_SUBSCRIPTION_ID` | The subscription under which the build will be performed.
|
||||
| `client_id` | `ARM_CLIENT_ID` | The Active Directory service principal associated with your builder.
|
||||
| `client_secret` | `ARM_CLIENT_SECRET` | The password or secret for your service principal; may be omitted if `client_cert_path` is set.
|
||||
| `client_cert_path` | `ARM_CLIENT_CERT_PATH` | The location of a PEM file containing a certificate and private key for the service principal; may be omitted if `client_secret` is set.
|
||||
| `location` | `ARM_RESOURCE_LOCATION` | The Azure datacenter in which your VM will be built.
|
||||
| `managed_image_resource_group_name` | `ARM_RESOURCE_GROUP` | The resource group under which the final artifact will be stored.
|
||||
|
||||
### Optional variables
|
||||
|
||||
The following variables are optional:
|
||||
|
||||
- `managed_image_name` - the name of the managed image to create. If not specified, "Runner-Image-{{ImageType}}" will be used;
|
||||
- `build_resource_group_name` - specify an existing resource group to run the build in; by default, a temporary resource group will be created and destroyed as part of the build; if you do not have permission to do so, use `build_resource_group_name` to specify an existing resource group to run the build in;
|
||||
- `object_id` - the object ID for the AAD SP; will be derived from the oAuth token if empty;
|
||||
- `tenant_id` - the Active Directory tenant identifier with which your `client_id` and `subscription_id` are associated; if not specified, `tenant_id` will be looked up using `subscription_id`;
|
||||
- `temp_resource_group_name` - the name assigned to the temporary resource group created during the build; if this value is not set, a random value will be assigned; this resource group is deleted at the end of the build;
|
||||
- `private_virtual_network_with_public_ip` - this value allows you to set a `virtual_network_name` and obtain a public IP; if this value is not set and `virtual_network_name` is defined, Packer is only allowed to be executed from a host on the same subnet / virtual network;
|
||||
- `virtual_network_name` - use a pre-existing virtual network for the VM; this option enables private communication with the VM, no public IP address is used or provisioned (unless you set `private_virtual_network_with_public_ip`);
|
||||
- `virtual_network_resource_group_name` - if `virtual_network_name` is set, this value may also be set; if `virtual_network_name` is set, and this value is not set, the builder attempts to determine the resource group containing the virtual network; if the resource group cannot be found, or it cannot be disambiguated, this value should be set;
|
||||
- `virtual_network_subnet_name` - if `virtual_network_name` is set, this value may also be set; if `virtual_network_name` is set, and this value is not set, the builder attempts to determine the subnet to use with the virtual network; if the subnet cannot be found, or it cannot be disambiguated, this value should be set.
|
||||
|
||||
## Builder variables
|
||||
|
||||
The `builders` section contains variables for the `azure-arm` builder used in the project. Most of the builder variables are inherited from the `user variables` section, however, the variables can be overwritten to adjust image-generation performance.
|
||||
|
||||
- `vm_size` - the size of the VM used for building; this can be changed when you deploy a VM from your image;
|
||||
- `image_os` - the type of OS that will be deployed as a temporary VM;
|
||||
- `image_version` - specify the version of an OS to boot from.
|
||||
|
||||
**Detailed Azure builders documentation can be found in the [packer documentation](https://www.packer.io/docs/builders/azure).**
|
||||
|
||||
## Toolset
|
||||
|
||||
The configuration for some installed software is located in `toolset.json` files. These files define the list of Ruby, Python, Go versions, the list of PowerShell modules and VS components that will be installed on the image. They can be changed if these tools are not required, to reduce image generation time or image size.
|
||||
|
||||
Generated tool versions and details can be found in related projects:
|
||||
|
||||
- [Python](https://github.com/actions/python-versions/)
|
||||
- [Go](https://github.com/actions/go-versions)
|
||||
- [Node](https://github.com/actions/node-versions)
|
||||
|
||||
## Post-generation scripts
|
||||
|
||||
> [!WARNING]
|
||||
> These scripts are intended to be run on a VM deployed in Azure.
|
||||
|
||||
The user, created during the image generation, does not exist in the resulting image. Hence, some configuration files related to the user's home directory need to be changed, as well as the file permissions for some directories. Scripts for that are located in the `post-gen` folder in the repository:
|
||||
|
||||
- Windows: <https://github.com/actions/runner-images/tree/main/images/windows/assets/post-gen>
|
||||
- Linux: <https://github.com/actions/runner-images/tree/main/images/ubuntu/assets/post-gen>
|
||||
|
||||
**Note:** The default user for Linux should have `sudo privileges`.
|
||||
|
||||
The scripts are copied to the image during the generation process to the following paths:
|
||||
|
||||
- Windows: `C:\post-generation`
|
||||
- Linux: `/opt/post-generation`
|
||||
|
||||
### Running scripts
|
||||
|
||||
- Ubuntu
|
||||
|
||||
```bash
|
||||
sudo su -c "find /opt/post-generation -mindepth 1 -maxdepth 1 -type f -name '*.sh' -exec bash {} \;"
|
||||
```
|
||||
|
||||
- Windows
|
||||
|
||||
```powershell
|
||||
Get-ChildItem C:\post-generation -Filter *.ps1 | ForEach-Object { & $_.FullName }
|
||||
```
|
||||
|
||||
### Script Details: Ubuntu
|
||||
|
||||
- **cleanup-logs.sh** - removes all build process logs from the machine;
|
||||
- **environment-variables.sh** - replaces `$HOME` with the default user's home directory for environment variables related to the default user home directory;
|
||||
- **systemd-linger.sh** - enables user session on boot (not just on login) so that user-level systemd services start automatically.
|
||||
|
||||
### Script Details: Windows
|
||||
|
||||
- **GenerateIISExpressCertificate.ps1** - generates and imports a certificate to run applications with IIS Express through HTTPS;
|
||||
- **InternetExplorerConfiguration.ps1** - turns off the Internet Explorer Enhanced Security feature;
|
||||
- **Msys2FirstLaunch.ps1** - initializes the bash user profile in MSYS2;
|
||||
- **VSConfiguration.ps1** - performs initial Visual Studio configuration.
|
||||
@@ -0,0 +1,34 @@
|
||||
# Ubuntu .NET Core Versions
|
||||
|
||||
.NET has changed the recommended install methods for Ubuntu starting from 24.04.
|
||||
|
||||
This document gives an overview of these changes and the impact on the `runner-images`.
|
||||
|
||||
## .NET Core for Ubuntu 22.04
|
||||
|
||||
Ubuntu 22.04 uses the [Microsoft Package repository](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2204) to install .NET deb files built and published by the .NET team.
|
||||
|
||||
## .NET Core Versions from Ubuntu 24.04
|
||||
|
||||
The .NET Core team worked with Canonical so that Ubuntu now provides its own .NET packages via the Ubuntu package feed.
|
||||
|
||||
These are the recommended install path and, as such, what is installed on the image.
|
||||
|
||||
> The release of Ubuntu 24.04 is just around the corner. Canonical-produced .NET 6, 7, and 8 packages will be available on day one, for "Noble Numbat". Microsoft will not be publishing .NET packages to the 24.04 feed at packages.microsoft.com.
|
||||
|
||||
You can read the [full announcement from the .NET team here](https://github.com/dotnet/core/discussions/9258). Below is a brief summary of how this change may impact users of the image.
|
||||
|
||||
### [`Feature Bands`](https://learn.microsoft.com/dotnet/core/porting/versioning-sdk-msbuild-vs)
|
||||
|
||||
Going forward, only the `1xx` feature band will be present in the image because Ubuntu only builds and publishes this band.
|
||||
|
||||
> Most distros, including Ubuntu, stick to the .1xx feature band for the lifetime of a major .NET version. They make this choice because .1xx is (effectively) the "compatibility band". Higher bands can have breaking changes.
|
||||
> This means there will no longer be packages available for .2xx and later feature bands. Such packages have been exclusively available from Microsoft. If users see an incompatibility between .1xx and higher feature bands, we ask that you please report it in the dotnet/sdk repo. [link: dotnet/core discussion](https://github.com/dotnet/core/discussions/9258)
|
||||
|
||||
If you need a higher feature band for your Actions, the recommendation is to use the [`setup-dotnet`](https://github.com/actions/setup-dotnet) action to install the desired version.
|
||||
|
||||
### .NET MAUI
|
||||
|
||||
.NET MAUI is [not included](https://github.com/dotnet/core/discussions/9258#discussioncomment-9548857) in the Ubuntu .NET package. Work to fix this is [ongoing](https://github.com/dotnet/core/discussions/9258#discussioncomment-9548857).
|
||||
|
||||
You should be able to resolve this by using the [`setup-dotnet`](https://github.com/actions/setup-dotnet) action to install the desired version.
|
||||
@@ -1,11 +1,11 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
enum ImageType {
|
||||
Windows2019 = 1
|
||||
Windows2022 = 2
|
||||
Windows2025 = 3
|
||||
Ubuntu2204 = 4
|
||||
Ubuntu2404 = 5
|
||||
Windows2022 = 1
|
||||
Windows2025 = 2
|
||||
Windows2025_vs2026 = 3
|
||||
Ubuntu2204 = 4
|
||||
Ubuntu2404 = 5
|
||||
}
|
||||
|
||||
Function Get-PackerTemplate {
|
||||
@@ -18,10 +18,6 @@ Function Get-PackerTemplate {
|
||||
|
||||
switch ($ImageType) {
|
||||
# Note: Double Join-Path is required to support PowerShell 5.1
|
||||
([ImageType]::Windows2019) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2019.pkr.hcl"
|
||||
$imageOS = "win19"
|
||||
}
|
||||
([ImageType]::Windows2022) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2022.pkr.hcl"
|
||||
$imageOS = "win22"
|
||||
@@ -30,6 +26,10 @@ Function Get-PackerTemplate {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025.pkr.hcl"
|
||||
$imageOS = "win25"
|
||||
}
|
||||
([ImageType]::Windows2025_vs2026) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025-vs2026.pkr.hcl"
|
||||
$imageOS = "win25-vs2026"
|
||||
}
|
||||
([ImageType]::Ubuntu2204) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "build.ubuntu-22_04.pkr.hcl"
|
||||
$imageOS = "ubuntu22"
|
||||
@@ -66,6 +66,35 @@ Function Show-LatestCommit {
|
||||
}
|
||||
}
|
||||
|
||||
function Get-GitHubActionsOidcIdToken {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RequestUrl,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RequestToken,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $Audience = 'api://AzureADTokenExchange'
|
||||
)
|
||||
|
||||
$separator = if ($RequestUrl -match '\?') { '&' } else { '?' }
|
||||
$urlWithAudience = "${RequestUrl}${separator}audience=$([System.Uri]::EscapeDataString($Audience))"
|
||||
$headers = @{ Authorization = "Bearer $RequestToken" }
|
||||
|
||||
try {
|
||||
$response = Invoke-RestMethod -Method Get -Uri $urlWithAudience -Headers $headers
|
||||
}
|
||||
catch {
|
||||
throw "Failed to request GitHub Actions OIDC ID token. Ensure workflow permissions include 'id-token: write'. Details: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
if ([string]::IsNullOrEmpty($response.value)) {
|
||||
throw "GitHub Actions OIDC token response did not contain a 'value' field."
|
||||
}
|
||||
|
||||
return $response.value
|
||||
}
|
||||
|
||||
function Start-Sleep($seconds) {
|
||||
$doneDT = (Get-Date).AddSeconds($seconds)
|
||||
while ($doneDT -gt (Get-Date)) {
|
||||
@@ -88,7 +117,7 @@ Function GenerateResourcesAndImage {
|
||||
.PARAMETER ResourceGroupName
|
||||
The name of the resource group to store the resulting artifact. Resource group must already exist.
|
||||
.PARAMETER ImageType
|
||||
The type of image to generate. Valid values are: Windows2019, Windows2022, Windows2025, Ubuntu2204, Ubuntu2404.
|
||||
The type of image to generate. Valid values are: Windows2022, Windows2025, Windows2025_vs2026, Ubuntu2204, Ubuntu2404.
|
||||
.PARAMETER ManagedImageName
|
||||
The name of the managed image to create. The default is "Runner-Image-{{ImageType}}".
|
||||
.PARAMETER AzureLocation
|
||||
@@ -103,6 +132,13 @@ Function GenerateResourcesAndImage {
|
||||
The Azure client secret to use to authenticate with Azure. If not specified, the current user's credentials will be used.
|
||||
.PARAMETER AzureTenantId
|
||||
The Azure tenant id to use to authenticate with Azure. If not specified, the current user's credentials will be used.
|
||||
.PARAMETER UseOidc
|
||||
If set, authenticate using GitHub Actions OIDC (federated credentials) instead of a client secret.
|
||||
Requires AzureClientId and AzureTenantId, and OidcRequestToken/OidcRequestUrl parameters.
|
||||
.PARAMETER OidcRequestToken
|
||||
GitHub Actions OIDC request token.
|
||||
.PARAMETER OidcRequestUrl
|
||||
GitHub Actions OIDC request URL.
|
||||
.PARAMETER RestrictToAgentIpAddress
|
||||
If set, access to the VM used by packer to generate the image is restricted to the public IP address this script is run from.
|
||||
This parameter cannot be used in combination with the virtual_network_name packer parameter.
|
||||
@@ -130,7 +166,7 @@ Function GenerateResourcesAndImage {
|
||||
[ImageType] $ImageType,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $ManagedImageName = "Runner-Image-$($ImageType)",
|
||||
[Parameter(Mandatory = $True)]
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $AzureLocation,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $ImageGenerationRepositoryRoot = $pwd,
|
||||
@@ -143,6 +179,14 @@ Function GenerateResourcesAndImage {
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $AzureTenantId,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[switch] $UseOidc,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string] $OidcRequestToken,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string] $OidcRequestUrl,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $PluginVersion = "2.2.1",
|
||||
[Parameter(Mandatory = $False)]
|
||||
[switch] $RestrictToAgentIpAddress,
|
||||
@@ -214,10 +258,17 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
|
||||
Write-Host "Validating packer template..."
|
||||
$validateClientSecret = "fake"
|
||||
if ($UseOidc) {
|
||||
$validateClientSecret = ""
|
||||
}
|
||||
|
||||
& $PackerBinary validate `
|
||||
"-only=$($PackerTemplate.BuildName)*" `
|
||||
"-only=$($PackerTemplate.BuildName).*" `
|
||||
"-var=client_id=fake" `
|
||||
"-var=client_secret=fake" `
|
||||
"-var=client_secret=$($validateClientSecret)" `
|
||||
"-var=oidc_request_token=fake" `
|
||||
"-var=oidc_request_url=fake" `
|
||||
"-var=subscription_id=$($SubscriptionId)" `
|
||||
"-var=tenant_id=fake" `
|
||||
"-var=location=$($AzureLocation)" `
|
||||
@@ -239,10 +290,23 @@ Function GenerateResourcesAndImage {
|
||||
Write-Verbose "No AzureClientId was provided, will use interactive login."
|
||||
az login --output none
|
||||
}
|
||||
elseif ($UseOidc) {
|
||||
if ([string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureTenantId is required for OIDC authentication."
|
||||
}
|
||||
|
||||
Write-Verbose "Using OIDC service principal login (federated credentials)."
|
||||
$idToken = Get-GitHubActionsOidcIdToken -RequestUrl $OidcRequestUrl -RequestToken $OidcRequestToken
|
||||
az login --service-principal --username $AzureClientId --tenant $AzureTenantId --federated-token $idToken --output none
|
||||
}
|
||||
else {
|
||||
Write-Verbose "AzureClientId was provided, will use service principal login."
|
||||
if ([string]::IsNullOrEmpty($AzureClientSecret) -or [string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureClientSecret and AzureTenantId are required for service principal login unless -UseOidc is specified."
|
||||
}
|
||||
Write-Verbose "AzureClientId was provided, will use service principal login (client secret)."
|
||||
az login --service-principal --username $AzureClientId --password=$AzureClientSecret --tenant $AzureTenantId --output none
|
||||
}
|
||||
|
||||
az account set --subscription $SubscriptionId
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Failed to login to Azure subscription '$SubscriptionId'."
|
||||
@@ -257,7 +321,7 @@ Function GenerateResourcesAndImage {
|
||||
throw "Resource group '$ResourceGroupName' does not exist."
|
||||
}
|
||||
|
||||
# Create service principal
|
||||
# Create / choose authentication for packer
|
||||
if ([string]::IsNullOrEmpty($AzureClientId)) {
|
||||
Write-Host "Creating service principal for packer..."
|
||||
$ADCleanupRequired = $true
|
||||
@@ -277,17 +341,36 @@ Function GenerateResourcesAndImage {
|
||||
Write-Host "Service principal created with id '$ServicePrincipalAppId'. It will be deleted after the build."
|
||||
}
|
||||
else {
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = $AzureClientSecret
|
||||
$TenantId = $AzureTenantId
|
||||
if ($UseOidc) {
|
||||
if ([string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureTenantId is required for OIDC authentication."
|
||||
}
|
||||
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = ""
|
||||
$TenantId = $AzureTenantId
|
||||
# Avoid leaking OIDC request values via command line arguments.
|
||||
$env:PKR_VAR_oidc_request_token = $OidcRequestToken
|
||||
$env:PKR_VAR_oidc_request_url = $OidcRequestUrl
|
||||
}
|
||||
else {
|
||||
if ([string]::IsNullOrEmpty($AzureClientSecret) -or [string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureClientSecret and AzureTenantId are required for service principal authentication unless -UseOidc is specified."
|
||||
}
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = $AzureClientSecret
|
||||
$TenantId = $AzureTenantId
|
||||
}
|
||||
}
|
||||
Write-Debug "Service principal app id: $ServicePrincipalAppId."
|
||||
Write-Debug "Tenant id: $TenantId."
|
||||
|
||||
& $PackerBinary build -on-error="$($OnError)" `
|
||||
-only "$($PackerTemplate.BuildName)*" `
|
||||
-only "$($PackerTemplate.BuildName).*" `
|
||||
-var "client_id=$($ServicePrincipalAppId)" `
|
||||
-var "client_secret=$($ServicePrincipalPassword)" `
|
||||
-var "oidc_request_token=$($env:PKR_VAR_oidc_request_token)" `
|
||||
-var "oidc_request_url=$($env:PKR_VAR_oidc_request_url)" `
|
||||
-var "subscription_id=$($SubscriptionId)" `
|
||||
-var "tenant_id=$($TenantId)" `
|
||||
-var "location=$($AzureLocation)" `
|
||||
|
||||
@@ -9,7 +9,7 @@ param(
|
||||
[String] [Parameter (Mandatory=$true)] $TempResourceGroupName,
|
||||
[String] [Parameter (Mandatory=$true)] $SubscriptionId,
|
||||
[String] [Parameter (Mandatory=$true)] $TenantId,
|
||||
[String] [Parameter (Mandatory=$true)] $ImageOS, # e.g. "ubuntu22", "ubuntu22" or "win19", "win22", "win25"
|
||||
[String] [Parameter (Mandatory=$true)] $ImageOS, # e.g. "ubuntu22", "ubuntu24" or "win22", "win25"
|
||||
[String] [Parameter (Mandatory=$false)] $UseAzureCliAuth = "false",
|
||||
[String] [Parameter (Mandatory=$false)] $PluginVersion = "2.3.3",
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkName,
|
||||
|
||||
@@ -22,8 +22,9 @@ export PATH="/usr/local/opt/curl/bin:$PATH"
|
||||
export PATH=$HOME/.cargo/bin:$PATH
|
||||
|
||||
export RCT_NO_LAUNCH_PACKAGER=1
|
||||
export DOTNET_ROOT=$HOME/.dotnet
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_NOLOGO=1
|
||||
|
||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
|
||||
@@ -1,283 +0,0 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Cmake will be updated to version 4.* on September 8th](https://github.com/actions/runner-images/issues/12934) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.6 (22H625)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250908.1476
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.413, 9.0.102, 9.0.203, 9.0.304
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.1.0) - available by `gcc-15` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.10-release-430
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.5
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.12
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.1
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.11
|
||||
- Homebrew 4.6.9
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.1
|
||||
- Vcpkg 2025 (build from commit 4a7ce81d91)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.0.0
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.0
|
||||
- bazel 8.4.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.15.0
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.78.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.0
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.1
|
||||
- yq 4.47.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.28.25
|
||||
- AWS SAM CLI 1.143.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.77.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.37.4
|
||||
- Cmake 4.1.1
|
||||
- CodeQL Action Bundle 2.23.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.57.2
|
||||
- Xcbeautify 2.30.1
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.61.0
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (18621.2.5.18.1)
|
||||
- SafariDriver 18.5 (18621.2.5.18.1)
|
||||
- Google Chrome 140.0.7339.81
|
||||
- Google Chrome for Testing 140.0.7339.80
|
||||
- ChromeDriver 140.0.7339.80
|
||||
- Microsoft Edge 140.0.3485.54
|
||||
- Microsoft Edge WebDriver 140.0.3485.54
|
||||
- Mozilla Firefox 142.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.462+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.28+6 | JAVA_HOME_11_X64 |
|
||||
| 17.0.16+8 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.8+9.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.20]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.16 [PyPy 7.3.19]
|
||||
|
||||
#### Ruby
|
||||
- 3.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.5
|
||||
|
||||
#### Python
|
||||
- 3.8.18
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.19.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.89.0
|
||||
- Rust 1.89.0
|
||||
- Rustdoc 1.89.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.89
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.11
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| macOS 13.0 | macosx13.0 | 14.1 |
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.1.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.0.1-57243/ParallelsDesktop-26.0.1-57243.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
If you want to use Parallels Desktop you should download a package from URL stored in
|
||||
PARALLELS_DMG_URL environment variable. A system extension is allowed for this version.
|
||||
```
|
||||
|
||||
@@ -1,258 +0,0 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Cmake will be updated to version 4.* on September 8th](https://github.com/actions/runner-images/issues/12934) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.6 (22H625)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250908.1545
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.413, 9.0.102, 9.0.203, 9.0.304
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.1.0) - available by `gcc-15` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.10-release-430
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.5
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.1
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.6.9
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.1
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.0.0
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.0
|
||||
- bazel 8.4.0
|
||||
- bazelisk 1.27.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.78.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.0
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.1
|
||||
- yq 4.47.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.28.25
|
||||
- AWS SAM CLI 1.143.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.77.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.37.4
|
||||
- Cmake 4.1.1
|
||||
- CodeQL Action Bundle 2.23.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.57.2
|
||||
- Xcbeautify 2.30.1
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (18621.2.5.18.1)
|
||||
- SafariDriver 18.5 (18621.2.5.18.1)
|
||||
- Google Chrome 140.0.7339.81
|
||||
- Google Chrome for Testing 140.0.7339.80
|
||||
- ChromeDriver 140.0.7339.80
|
||||
- Microsoft Edge 140.0.3485.54
|
||||
- Microsoft Edge WebDriver 140.0.3485.54
|
||||
- Mozilla Firefox 142.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 11.0.28+6 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.16+8 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.8+9.0 | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.5
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.19.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.89.0
|
||||
- Rust 1.89.0
|
||||
- Rustdoc 1.89.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.89
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.11
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| macOS 13.0 | macosx13.0 | 14.1 |
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.1.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
+113
-116
@@ -1,108 +1,105 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.2 (23J126)
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20251203.0047.1
|
||||
- Image Version: 20260330.0357.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.40.2
|
||||
- PHP 8.5.0
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.3.10
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.1
|
||||
- PHP 8.5.4
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.2
|
||||
- Homebrew 5.0.4
|
||||
- Composer 2.9.5
|
||||
- Homebrew 5.1.1
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 4c4abc2e87)
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.9
|
||||
- Vcpkg 2026 (build from commit b5d1a94fb7)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.2.1
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.17.0
|
||||
- Git 2.50.1
|
||||
- Curl 8.19.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.89.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- Unxip 3.3
|
||||
- yq 4.52.5
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- AWS CLI 2.34.19
|
||||
- AWS SAM CLI 1.157.1
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.1
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.62.2
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (19622.2.11.119.1)
|
||||
- SafariDriver 26.1 (19622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.84
|
||||
- Microsoft Edge WebDriver 146.0.3856.84
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -114,55 +111,55 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 8.0.472+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.29+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_X64 |
|
||||
| 21.0.9+10.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.1+8.0 | JAVA_HOME_25_X64 |
|
||||
| 8.0.482+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.10.20
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.14.1
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.1
|
||||
- Rust 1.94.1
|
||||
- Rustdoc 1.94.1
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
@@ -238,49 +235,49 @@
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 17.0 | 17.0.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.4 | 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 17.5 | 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.2 | 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 17.0 | 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.4 | 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 10.0 | 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.4 | 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.5 | 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 17.0 | 17.0.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.4 | 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 17.5 | 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.1 | 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.2 | 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 17.0 | 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.4 | 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 10.0 | 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.4 | 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.5 | 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.1 | 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
@@ -289,7 +286,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.2-57293/ParallelsDesktop-26.1.2-57293.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.3.0-57392/ParallelsDesktop-26.3.0-57392.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,103 +1,100 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.2 (23J126)
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20251203.0037.1
|
||||
- Image Version: 20260330.0199.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.6
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.3.10
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.1
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- Homebrew 5.1.1
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.9
|
||||
- Vcpkg 2026 (build from commit b5d1a94fb7)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.2.1
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.89.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- Unxip 3.3
|
||||
- yq 4.52.5
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- AWS CLI 2.34.19
|
||||
- AWS SAM CLI 1.157.1
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.1
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (19622.2.11.119.1)
|
||||
- SafariDriver 26.1 (19622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.84
|
||||
- Microsoft Edge WebDriver 146.0.3856.84
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -109,52 +106,53 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.29+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.14.1
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.1
|
||||
- Rust 1.94.1
|
||||
- Rustdoc 1.94.1
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
@@ -257,27 +255,27 @@
|
||||
| visionOS 2.2 | 2.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
+105
-100
@@ -1,106 +1,103 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.2 (24G325)
|
||||
- OS Version: macOS 15.7.5 (24G617)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20251203.0058.1
|
||||
- Image Version: 20260330.0336.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Node.js 22.21.1
|
||||
- Perl 5.40.2
|
||||
- PHP 8.5.0
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.3.10
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 22.22.2
|
||||
- Perl 5.42.1
|
||||
- PHP 8.5.4
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.2
|
||||
- Homebrew 5.0.4
|
||||
- NPM 10.9.4
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- Composer 2.9.5
|
||||
- Homebrew 5.1.1
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.9
|
||||
- Vcpkg 2026 (build from commit b5d1a94fb7)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.2.1
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.17.0
|
||||
- Git 2.50.1
|
||||
- Curl 8.19.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.89.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- Unxip 3.3
|
||||
- yq 4.52.5
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- AWS CLI 2.34.19
|
||||
- AWS SAM CLI 1.157.1
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.1
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.62.2
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (20622.2.11.119.1)
|
||||
- SafariDriver 26.1 (20622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.4 (20624.1.16.18.2)
|
||||
- SafariDriver 26.4 (20624.1.16.18.2)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.84
|
||||
- Microsoft Edge WebDriver 146.0.3856.84
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -112,58 +109,60 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.29+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_X64 |
|
||||
| 21.0.9+10.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.1+8.0 | JAVA_HOME_25_X64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.10.20
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.14.1
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.1
|
||||
- Rust 1.94.1
|
||||
- Rustdoc 1.94.1
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
| 16.4 (default) | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app<br>/Applications/Xcode.app |
|
||||
@@ -182,6 +181,7 @@
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
@@ -189,6 +189,7 @@
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
@@ -196,6 +197,7 @@
|
||||
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
@@ -203,6 +205,7 @@
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
@@ -210,6 +213,7 @@
|
||||
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
@@ -217,6 +221,7 @@
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| Simulator - watchOS 11.2 | watchsimulator11.2 | 16.2 |
|
||||
@@ -224,6 +229,7 @@
|
||||
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
@@ -231,6 +237,7 @@
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
@@ -238,6 +245,7 @@
|
||||
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
@@ -245,39 +253,36 @@
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.4 | 18.4 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.4 | 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.4 | 11.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 26.0 | 26.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -295,7 +300,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.2-57293/ParallelsDesktop-26.1.2-57293.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.3.0-57392/ParallelsDesktop-26.3.0-57392.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,101 +1,98 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.2 (24G325)
|
||||
- OS Version: macOS 15.7.4 (24G517)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20251203.0057.1
|
||||
- Image Version: 20260330.0243.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Node.js 22.21.1
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.3.10
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 22.22.2
|
||||
- Perl 5.42.1
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- NPM 10.9.4
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- Homebrew 5.1.1
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.9
|
||||
- Vcpkg 2026 (build from commit b5d1a94fb7)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.2.1
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.89.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.14.3
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- Unxip 3.3
|
||||
- yq 4.52.5
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- AWS CLI 2.34.19
|
||||
- AWS SAM CLI 1.157.1
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.1
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.1 (20622.2.11.119.1)
|
||||
- SafariDriver 26.1 (20622.2.11.119.1)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.3 (20623.2.7.18.1)
|
||||
- SafariDriver 26.3 (20623.2.7.18.1)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.84
|
||||
- Microsoft Edge WebDriver 146.0.3856.84
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -107,56 +104,59 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.29+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.14.1
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.1
|
||||
- Rust 1.94.1
|
||||
- Rustdoc 1.94.1
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
| 16.4 (default) | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app<br>/Applications/Xcode.app |
|
||||
@@ -175,6 +175,7 @@
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
@@ -182,6 +183,7 @@
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
@@ -189,6 +191,7 @@
|
||||
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
@@ -196,6 +199,7 @@
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
@@ -203,6 +207,7 @@
|
||||
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
@@ -210,6 +215,7 @@
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 11.0 | watchsimulator11.0 | 16.0 |
|
||||
| Simulator - watchOS 11.1 | watchsimulator11.1 | 16.1 |
|
||||
| Simulator - watchOS 11.2 | watchsimulator11.2 | 16.2 |
|
||||
@@ -217,6 +223,7 @@
|
||||
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
@@ -224,6 +231,7 @@
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
@@ -231,6 +239,7 @@
|
||||
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
@@ -238,44 +247,41 @@
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.4 | 18.4 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.4 | 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 11.4 | 11.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 26.0 | 26.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 2.3 | 2.3 | Apple Vision Pro |
|
||||
| visionOS 2.4 | 2.4 | Apple Vision Pro |
|
||||
| visionOS 2.5 | 2.5 | Apple Vision Pro |
|
||||
| visionOS 26.0 | 26.0 | Apple Vision Pro |
|
||||
| visionOS 26.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 26
|
||||
- OS Version: macOS 26.3.1 (25D2128)
|
||||
- Kernel Version: Darwin 25.3.0
|
||||
- Image Version: 20260324.0226.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 24.14.0
|
||||
- Perl 5.42.1
|
||||
- PHP 8.5.4
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.8
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.5
|
||||
- Homebrew 5.1.1
|
||||
- NPM 11.9.0
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.8
|
||||
- Vcpkg 2026 (build from commit ed8445dd2a)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.19.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.88.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 3.6.1 27 Jan 2026 (Library: OpenSSL 3.6.1 27 Jan 2026)
|
||||
- Packer 1.15.0
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.52.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.15
|
||||
- AWS SAM CLI 1.156.0
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.0
|
||||
- CodeQL Action Bundle 2.24.3
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 26.3.0.0.1.1771626560
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.3.1 (21623.2.7.11.7)
|
||||
- SafariDriver 26.3.1 (21623.2.7.11.7)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.72
|
||||
- Microsoft Edge WebDriver 146.0.3856.72
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.10
|
||||
- 3.3.10
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.20.1
|
||||
- 22.22.1
|
||||
- 24.14.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.94.0
|
||||
- Rust 1.94.0
|
||||
- Rustdoc 1.94.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------ | ---------------------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.4 | 17E192 | /Applications/Xcode_26.4_Release_Candidate.app | /Applications/Xcode_26.4.0.app<br>/Applications/Xcode_26.4.app |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 (default) | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| macOS 26.4 | macosx26.4 | 26.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| iOS 26.4 | iphoneos26.4 | 26.4 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 26.4 | iphonesimulator26.4 | 26.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| tvOS 26.4 | appletvos26.4 | 26.4 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 26.4 | appletvsimulator26.4 | 26.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| watchOS 26.4 | watchos26.4 | 26.4 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 26.4 | watchsimulator26.4 | 26.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| visionOS 26.4 | xros26.4 | 26.4 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 26.4 | xrsimulator26.4 | 26.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.4 | driverkit25.4 | 26.4 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 26.0 | 26.0 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
@@ -1,101 +1,98 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[macOS] Deprecation of Xcode 16.4 on macOS 26 on December 8th.](https://github.com/actions/runner-images/issues/13345) |
|
||||
| [[macOS] The macOS 13 Ventura based runner images will begin deprecation on September 22nd and will be fully unsupported by December 4th for GitHub and ADO](https://github.com/actions/runner-images/issues/13046) |
|
||||
| [[macOS] The additional macOS 15 Sonoma Intel-based image will be available in GitHub Actions](https://github.com/actions/runner-images/issues/13045) |
|
||||
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
|
||||
| [[macOS] Deprecation of 4 tools on November 3rd.](https://github.com/actions/runner-images/issues/12873) |
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 26
|
||||
- OS Version: macOS 26.0.1 (25A362)
|
||||
- Kernel Version: Darwin 25.0.0
|
||||
- Image Version: 20251203.0070.1
|
||||
- OS Version: macOS 26.3 (25D125)
|
||||
- Kernel Version: Darwin 25.3.0
|
||||
- Image Version: 20260325.0302.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.419, 9.0.102, 9.0.203, 9.0.312, 10.0.103, 10.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Node.js 24.11.1
|
||||
- Perl 5.40.2
|
||||
- Python3 3.14.0
|
||||
- Ruby 3.4.7
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 24.14.1
|
||||
- Perl 5.42.1
|
||||
- Python3 3.14.3
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.0
|
||||
- Bundler 4.0.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.0.4
|
||||
- NPM 11.6.2
|
||||
- Pip3 25.3 (python 3.14)
|
||||
- Pipx 1.8.0
|
||||
- RubyGems 4.0.0
|
||||
- Vcpkg 2025 (build from commit 80d025e829)
|
||||
- Homebrew 5.1.1
|
||||
- NPM 11.11.0
|
||||
- Pip3 26.0 (python 3.14)
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 4.0.9
|
||||
- Vcpkg 2026 (build from commit ff8f729804)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.2.1
|
||||
- Apache Maven 3.9.14
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.31.0
|
||||
- bazel 8.4.2
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.1
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.83.1
|
||||
- GitHub CLI 2.88.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 3.6.0 1 Oct 2025 (Library: OpenSSL 3.6.0 1 Oct 2025)
|
||||
- Packer 1.14.3
|
||||
- OpenSSL 3.6.1 27 Jan 2026 (Library: OpenSSL 3.6.1 27 Jan 2026)
|
||||
- Packer 1.15.0
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.49.2
|
||||
- Unxip 3.3
|
||||
- yq 4.52.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.32.8
|
||||
- AWS SAM CLI 1.149.0
|
||||
- AWS Session Manager CLI 1.2.764.0
|
||||
- Azure CLI 2.81.0
|
||||
- AWS CLI 2.34.16
|
||||
- AWS SAM CLI 1.156.0
|
||||
- AWS Session Manager CLI 1.2.792.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.39.26
|
||||
- Cmake 4.2.0
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Fastlane 2.229.1
|
||||
- SwiftFormat 0.58.7
|
||||
- Xcbeautify 3.1.1
|
||||
- Xcode Command Line Tools 26.1.0.0.1.1761104275
|
||||
- Bicep CLI 0.41.2
|
||||
- Cmake 4.3.0
|
||||
- CodeQL Action Bundle 2.24.3
|
||||
- Fastlane 2.232.2
|
||||
- SwiftFormat 0.60.1
|
||||
- Xcbeautify 3.1.4
|
||||
- Xcode Command Line Tools 26.4.0.0.1774242506
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.0.1 (21622.1.22.11.15)
|
||||
- SafariDriver 26.0.1 (21622.1.22.11.15)
|
||||
- Google Chrome 143.0.7499.41
|
||||
- Google Chrome for Testing 143.0.7499.40
|
||||
- ChromeDriver 143.0.7499.40
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Safari 26.3 (21623.2.7.11.6)
|
||||
- SafariDriver 26.3 (21623.2.7.11.6)
|
||||
- Google Chrome 146.0.7680.165
|
||||
- Google Chrome for Testing 146.0.7680.165
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Microsoft Edge 146.0.3856.72
|
||||
- Microsoft Edge WebDriver 146.0.3856.72
|
||||
- Mozilla Firefox 149.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.38.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -107,129 +104,130 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.29+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.2.10
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.10
|
||||
- 3.14.1
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.14.1
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.11
|
||||
- 1.25.5
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.0
|
||||
- Rust 1.94.0
|
||||
- Rustdoc 1.94.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.91
|
||||
- Clippy 0.1.94
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.3.0
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| ---------------- | -------- | ----------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.2 (beta) | 17C5038g | /Applications/Xcode_26.2_beta_2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode_26.2.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 (default) | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app<br>/Applications/Xcode.app |
|
||||
| 16.4 | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app |
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------ | ---------------------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.4 | 17E192 | /Applications/Xcode_26.4_Release_Candidate.app | /Applications/Xcode_26.4.0.app<br>/Applications/Xcode_26.4.app |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 (default) | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2 |
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| macOS 26.4 | macosx26.4 | 26.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2 |
|
||||
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| iOS 26.4 | iphoneos26.4 | 26.4 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2 |
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 26.4 | iphonesimulator26.4 | 26.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2 |
|
||||
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| tvOS 26.4 | appletvos26.4 | 26.4 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2 |
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 26.4 | appletvsimulator26.4 | 26.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2 |
|
||||
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| watchOS 26.4 | watchos26.4 | 26.4 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2 |
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 26.4 | watchsimulator26.4 | 26.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2 |
|
||||
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| visionOS 26.4 | xros26.4 | 26.4 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2 |
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 26.4 | xrsimulator26.4 | 26.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.4 | driverkit25.4 | 26.4 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 26.0 | 26.0 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 2.5 | 2.5 | Apple Vision Pro |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 26.0 | 26.0 | Apple Vision Pro |
|
||||
| visionOS 26.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.2.12 |
|
||||
| Android Emulator | 36.4.10 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
@@ -246,3 +244,6 @@
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
|
||||
@@ -49,8 +49,3 @@ function Test-SimulatorInstalled {
|
||||
|
||||
# First run doesn't provide full data about devices
|
||||
Get-XcodeInfoList | Out-Null
|
||||
|
||||
Write-Host "Validating and fixing Xcode simulators..."
|
||||
Get-BrokenXcodeSimulatorsList | ForEach-Object {
|
||||
Test-SimulatorInstalled -RuntimeId $_.RuntimeId -DeviceId $_.DeviceId -SimulatorName $_.SimulatorName -XcodeVersion $_.XcodeVersion
|
||||
}
|
||||
|
||||
@@ -10,9 +10,12 @@ echo "Enabling developer mode..."
|
||||
sudo /usr/sbin/DevToolsSecurity --enable
|
||||
|
||||
# Turn off hibernation and get rid of the sleepimage
|
||||
sudo pmset hibernatemode 0
|
||||
sudo pmset -a hibernatemode 0
|
||||
sudo rm -f /var/vm/sleepimage
|
||||
|
||||
# Set computer, disk, and display sleep to never
|
||||
sudo pmset -a sleep 0 disksleep 0 displaysleep 0
|
||||
|
||||
# Disable App Nap System Wide
|
||||
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.PerfPowerServic
|
||||
# Remove Parallels Desktop
|
||||
# https://github.com/actions/runner-images/issues/6105
|
||||
# https://github.com/actions/runner-images/issues/10143
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
brew uninstall parallels
|
||||
fi
|
||||
|
||||
|
||||
@@ -48,12 +48,7 @@ systemValuesArray=(
|
||||
"'kTCCServiceSystemPolicyNetworkVolumes','com.apple.Terminal',0,2,4,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'UNUSED',NULL,0,1678990068"
|
||||
)
|
||||
for values in "${systemValuesArray[@]}"; do
|
||||
if ! is_Ventura; then
|
||||
# TCC access table in Sonoma and later has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
|
||||
configure_system_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
else
|
||||
configure_system_tccdb "$values"
|
||||
fi
|
||||
configure_system_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
done
|
||||
|
||||
# $HOME/Library/Application\ Support/com.apple.TCC/TCC.db
|
||||
@@ -100,10 +95,5 @@ userValuesArray=(
|
||||
"'kTCCServiceUbiquity','com.apple.mail',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1551941469"
|
||||
)
|
||||
for values in "${userValuesArray[@]}"; do
|
||||
if ! is_Ventura; then
|
||||
# TCC access table in Sonoma and later has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
|
||||
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
else
|
||||
configure_user_tccdb "$values"
|
||||
fi
|
||||
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
done
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Close System Preferences window because in Ventura arm64 it is opened by default on Apperance tab
|
||||
# Close System Preferences window because since Ventura arm64 it is opened by default on Apperance tab
|
||||
if is_Arm64; then
|
||||
echo "Close System Preferences window"
|
||||
osascript -e 'tell application "System Preferences" to quit'
|
||||
|
||||
@@ -17,7 +17,7 @@ for package in $common_packages; do
|
||||
|
||||
tcl-tk@8)
|
||||
brew_smart_install "$package"
|
||||
if is_VenturaX64 || is_SonomaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_SequoiaX64 || is_TahoeX64; then
|
||||
# Fix for https://github.com/actions/runner-images/issues/11074
|
||||
ln -sf "$(brew --prefix tcl-tk@8)/lib/libtcl8.6.dylib" /usr/local/lib/libtcl8.6.dylib
|
||||
ln -sf "$(brew --prefix tcl-tk@8)/lib/libtk8.6.dylib" /usr/local/lib/libtk8.6.dylib
|
||||
@@ -42,22 +42,19 @@ for package in $cask_packages; do
|
||||
done
|
||||
|
||||
# Load "Parallels International GmbH"
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
sudo kextload /Applications/Parallels\ Desktop.app/Contents/Library/Extensions/10.9/prl_hypervisor.kext || true
|
||||
fi
|
||||
|
||||
# Execute AppleScript to change security preferences for macOS12, macOS13, macOS14 and macOS15
|
||||
# System Preferences -> Security & Privacy -> General -> Unlock -> Allow -> Not now
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
for retry in {4..0}; do
|
||||
echo "Executing AppleScript to change security preferences. Retries left: $retry"
|
||||
{
|
||||
set -e
|
||||
osascript -e 'tell application "System Events" to get application processes where visible is true'
|
||||
if is_VenturaX64; then
|
||||
osascript $HOME/utils/confirm-identified-developers-macos13.scpt $USER_PASSWORD
|
||||
fi
|
||||
|
||||
osascript -e 'tell application "System Events" to get application processes where visible is true'
|
||||
|
||||
if is_SonomaX64; then
|
||||
osascript $HOME/utils/confirm-identified-developers-macos14.scpt $USER_PASSWORD
|
||||
fi
|
||||
@@ -65,6 +62,7 @@ if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
if is_SequoiaX64; then
|
||||
osascript $HOME/utils/confirm-identified-developers-macos15.scpt $USER_PASSWORD
|
||||
fi
|
||||
|
||||
} && break
|
||||
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
@@ -78,7 +76,7 @@ if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
fi
|
||||
|
||||
# Validate "Parallels International GmbH" kext
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
|
||||
echo "Closing System Settings window if it is still opened"
|
||||
killall "System Settings" || true
|
||||
|
||||
@@ -7,15 +7,7 @@
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Installing Git..."
|
||||
#brew_smart_install "git"
|
||||
|
||||
# pin Git to 2.50.1 due to problems in the latest Git version 2.51.0
|
||||
COMMIT=6b39030bc0d0a0a8df99afe37e5ae4d61ba07c88
|
||||
FORMULA_URL="https://raw.githubusercontent.com/Homebrew/homebrew-core/$COMMIT/Formula/g/git.rb"
|
||||
FORMULA_PATH="$(brew --repository)/Library/Taps/homebrew/homebrew-core/Formula/g/git.rb"
|
||||
mkdir -p "$(dirname $FORMULA_PATH)"
|
||||
curl -fsSL $FORMULA_URL -o $FORMULA_PATH
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_FROM_API=1 brew install git
|
||||
brew_smart_install "git"
|
||||
|
||||
git config --global --add safe.directory "*"
|
||||
|
||||
|
||||
@@ -9,5 +9,7 @@ source ~/utils/utils.sh
|
||||
llvmVersion=$(get_toolset_value '.llvm.version')
|
||||
|
||||
brew_smart_install "llvm@${llvmVersion}"
|
||||
# After brew update to 5.1.0 we have to manually unlink llvm to avoid conflicts with pre-installed llvm on macOS
|
||||
brew unlink "llvm@${llvmVersion}"
|
||||
|
||||
invoke_tests "LLVM"
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-pypy.sh
|
||||
## Desc: Install PyPy
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
InstallPyPy() {
|
||||
local package_url=$1
|
||||
|
||||
PACKAGE_TAR_NAME=$(basename $package_url)
|
||||
echo "Downloading tar archive '$PACKAGE_TAR_NAME'"
|
||||
archive_path=$(download_with_retry $package_url)
|
||||
|
||||
echo "Expand '$PACKAGE_TAR_NAME' to the /tmp folder"
|
||||
tar xf $archive_path -C /tmp
|
||||
|
||||
# Get Python version
|
||||
PACKAGE_NAME=${PACKAGE_TAR_NAME/.tar.bz2/}
|
||||
MAJOR_VERSION=$(echo ${PACKAGE_NAME/pypy/} | cut -d. -f1)
|
||||
PYTHON_MAJOR="python$MAJOR_VERSION"
|
||||
|
||||
if [[ $MAJOR_VERSION != 2 ]]; then
|
||||
PYPY_MAJOR="pypy$MAJOR_VERSION"
|
||||
else
|
||||
PYPY_MAJOR="pypy"
|
||||
fi
|
||||
|
||||
PACKAGE_TEMP_FOLDER="/tmp/$PACKAGE_NAME"
|
||||
PYTHON_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(sys.version_info[0],sys.version_info[1],sys.version_info[2]))")
|
||||
PYPY_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(*sys.pypy_version_info[0:3]))")
|
||||
echo "Put '$PYPY_FULL_VERSION' to PYPY_VERSION file"
|
||||
echo $PYPY_FULL_VERSION > "$PACKAGE_TEMP_FOLDER/PYPY_VERSION"
|
||||
|
||||
# PyPy folder structure
|
||||
PYPY_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/PyPy
|
||||
PYPY_TOOLCACHE_VERSION_PATH=$PYPY_TOOLCACHE_PATH/$PYTHON_FULL_VERSION
|
||||
PYPY_TOOLCACHE_VERSION_ARCH_PATH=$PYPY_TOOLCACHE_VERSION_PATH/x64
|
||||
|
||||
echo "Check if PyPy hostedtoolcache folder exist..."
|
||||
if [[ ! -d $PYPY_TOOLCACHE_PATH ]]; then
|
||||
mkdir -p $PYPY_TOOLCACHE_PATH
|
||||
fi
|
||||
|
||||
echo "Create PyPy '$PYPY_TOOLCACHE_VERSION_PATH' folder"
|
||||
mkdir $PYPY_TOOLCACHE_VERSION_PATH
|
||||
|
||||
echo "Move PyPy $PACKAGE_TEMP_FOLDER binaries to $PYPY_TOOLCACHE_VERSION_ARCH_PATH folder"
|
||||
mv $PACKAGE_TEMP_FOLDER $PYPY_TOOLCACHE_VERSION_ARCH_PATH
|
||||
|
||||
echo "Create additional symlinks (Required for UsePythonVersion Azure DevOps task)"
|
||||
cd $PYPY_TOOLCACHE_VERSION_ARCH_PATH/bin
|
||||
|
||||
PYPY_FULL_VERSION=$(./$PYPY_MAJOR -c "import sys;print('{}.{}.{}'.format(*sys.pypy_version_info[0:3]))")
|
||||
echo "PYPY_FULL_VERSION is $PYPY_FULL_VERSION"
|
||||
echo $PYPY_FULL_VERSION > "PYPY_VERSION"
|
||||
|
||||
# Starting from PyPy 7.3.4 these links are already included in the package
|
||||
[[ -f ./$PYTHON_MAJOR ]] || ln -s $PYPY_MAJOR $PYTHON_MAJOR
|
||||
[[ -f ./python ]] || ln -s $PYTHON_MAJOR python
|
||||
|
||||
chmod +x ./python ./$PYTHON_MAJOR
|
||||
|
||||
echo "Install latest Pip"
|
||||
./python -m ensurepip
|
||||
./python -m pip install --ignore-installed pip
|
||||
|
||||
echo "Create complete file"
|
||||
touch $PYPY_TOOLCACHE_VERSION_PATH/x64.complete
|
||||
}
|
||||
|
||||
arch=$(get_arch)
|
||||
versions_json_path=$(download_with_retry "https://downloads.python.org/pypy/versions.json")
|
||||
toolsetVersions=$(get_toolset_value '.toolcache[] | select(.name | contains("PyPy")) | .arch.'$arch'.versions[]')
|
||||
|
||||
for toolsetVersion in $toolsetVersions; do
|
||||
latestMajorPyPyVersion=$(cat $versions_json_path |
|
||||
jq -r --arg toolsetVersion $toolsetVersion '.[]
|
||||
| select((.python_version | startswith($toolsetVersion)) and .stable == true).files[]
|
||||
| select(.platform == "darwin").download_url' | head -1)
|
||||
if [[ -z $latestMajorPyPyVersion ]]; then
|
||||
echo "Failed to get PyPy version $toolsetVersion"
|
||||
exit 1
|
||||
fi
|
||||
InstallPyPy $latestMajorPyPyVersion
|
||||
done
|
||||
@@ -37,7 +37,7 @@ $languageAndRuntime.AddNodes($(Get-ClangLLVMVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-GccVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-FortranVersions))
|
||||
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
|
||||
if (($os.IsVentura -or $os.IsSonoma)) {
|
||||
if (($os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
|
||||
@@ -58,15 +58,13 @@ if ((-not $os.IsArm64)) {
|
||||
}
|
||||
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
|
||||
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
|
||||
if (($os.IsVentura -or $os.IsSonoma)) {
|
||||
if (($os.IsSonoma)) {
|
||||
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
|
||||
if (-not $os.IsVenturaArm64) {
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
|
||||
|
||||
# Project Management
|
||||
@@ -174,12 +172,12 @@ $android.AddTable($androidTable)
|
||||
$androidEnv = $android.AddHeader("Environment variables")
|
||||
$androidEnv.AddTable($(Build-AndroidEnvironmentTable))
|
||||
|
||||
if ($os.IsSonoma -or $os.IsVentura -or $os.IsSequoia) {
|
||||
if (($os.IsSonoma -or $os.IsSequoia -or $os.IsTahoe)) {
|
||||
$miscellaneous = $installedSoftware.AddHeader("Miscellaneous")
|
||||
$miscellaneous.AddToolVersion("Tcl/Tk", $(Get-TclTkVersion))
|
||||
}
|
||||
|
||||
if ((-not $os.IsArm64)) {
|
||||
if (($os.IsSonomaX64 -or $os.IsSequoiaX64)) {
|
||||
|
||||
Write-Host "Adding environment variables for parallels"
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
function Get-ToolcacheRubyVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache" "Ruby"
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
@@ -12,17 +10,6 @@ function Get-ToolcachePythonVersions {
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
}
|
||||
|
||||
function Get-ToolcachePyPyVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache/PyPy/*/x64"
|
||||
Get-ChildItem -Path $toolcachePath | Sort-Object { [Version] $_.Parent.Name } | ForEach-Object {
|
||||
$foundVersionPath = $_.FullName
|
||||
$foundVersionName = (Get-Item ($foundVersionPath -replace "x64") | Sort-Object -Property {[version]$_.name} -Descending | Select-Object -First 1).name
|
||||
$arrPyPyVersion = ((& "$foundVersionPath/bin/python" -c "import sys;print(sys.version.split('\n')[1])") -split " ")
|
||||
$pypyVersion = "$($arrPyPyVersion[0]) $($arrPyPyVersion[1])"
|
||||
return "{0} {1}]" -f $foundVersionName, $pypyVersion
|
||||
}
|
||||
}
|
||||
|
||||
function Get-ToolcacheNodeVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache" "Node"
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
@@ -36,13 +23,6 @@ function Get-ToolcacheGoVersions {
|
||||
function Build-ToolcacheSection {
|
||||
|
||||
$nodes = @()
|
||||
|
||||
if ($os.IsVenturaX64) {
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")
|
||||
)
|
||||
}
|
||||
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List")
|
||||
[ToolVersionsListNode]::new("Python", $(Get-ToolcachePythonVersions), '^\d+\.\d+', "List"),
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Xcode.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
function Get-XcodePaths {
|
||||
$xcodePaths = Get-ChildItem -Path "/Applications" -Filter "Xcode_*.app" | Where-Object { !$_.LinkType }
|
||||
return $xcodePaths | Select-Object -ExpandProperty Fullname
|
||||
|
||||
@@ -29,9 +29,6 @@ function Get-OSVersion {
|
||||
Version = $osVersion.Version
|
||||
Platform = $osVersion.Platform
|
||||
IsArm64 = $processorArchitecture -eq "arm64"
|
||||
IsVentura = $($osVersion.Version.Major -eq "13")
|
||||
IsVenturaArm64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -eq "arm64")
|
||||
IsVenturaX64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -ne "arm64")
|
||||
IsSonoma = $($osVersion.Version.Major -eq "14")
|
||||
IsSonomaArm64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -eq "arm64")
|
||||
IsSonomaX64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -ne "arm64")
|
||||
@@ -39,6 +36,8 @@ function Get-OSVersion {
|
||||
IsSequoiaArm64 = $($osVersion.Version.Major -eq "15" -and $processorArchitecture -eq "arm64")
|
||||
IsSequoiaX64 = $($osVersion.Version.Major -eq "15" -and $processorArchitecture -ne "arm64")
|
||||
IsTahoe = $($osVersion.Version.Major -eq "26")
|
||||
IsTahoeArm64 = $($osVersion.Version.Major -eq "26" -and $processorArchitecture -eq "arm64")
|
||||
IsTahoeX64 = $($osVersion.Version.Major -eq "26" -and $processorArchitecture -ne "arm64")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -156,157 +156,3 @@ function Invoke-XCVersion {
|
||||
throw "Command [$Command] has finished with non-zero exit code."
|
||||
}
|
||||
}
|
||||
|
||||
function Get-BrokenXcodeSimulatorsList {
|
||||
return @(
|
||||
# tvOS Simulators
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-2";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-4";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-16-0";
|
||||
XcodeVersion = "14.2"
|
||||
},
|
||||
# watchOS-8-0 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
# watchOS-8-3 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
# watchOS-8-5 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
# watchOS-9-0 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch SE (40mm) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-SE-40mm-2nd-generation";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-9-0";
|
||||
XcodeVersion = "14.2"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch SE (44mm) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-SE-44mm-2nd-generation";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-9-0";
|
||||
XcodeVersion = "14.2"
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ function Approve-XcodeLicense {
|
||||
Write-Host "Approving Xcode license for '$XcodeRootPath'..."
|
||||
$xcodeBuildPath = Get-XcodeToolPath -XcodeRootPath $XcodeRootPath -ToolName "xcodebuild"
|
||||
|
||||
if ($os.IsVentura -or $os.IsSonoma) {
|
||||
if ($os.IsSonoma) {
|
||||
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept" -Timeout 15
|
||||
} else {
|
||||
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept"
|
||||
@@ -142,6 +142,12 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
$xcodebuildPath = Get-XcodeToolPath -Version $Version -ToolName 'xcodebuild'
|
||||
$validRuntimes = @("iOS", "watchOS", "tvOS")
|
||||
|
||||
# Determine architecture variant suffix for Xcode 26+
|
||||
$archSuffix = ""
|
||||
if ($Version -match '^(\d+)\.' -and [int]$matches[1] -ge 26) {
|
||||
$archSuffix = "-architectureVariant universal"
|
||||
}
|
||||
|
||||
# visionOS is only available on arm64
|
||||
if ($Arch -eq "arm64") {
|
||||
$validRuntimes += "visionOS"
|
||||
@@ -150,7 +156,7 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
# Install all runtimes / skip runtimes
|
||||
if ($Runtimes -eq "default") {
|
||||
Write-Host "Installing all runtimes for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadAllPlatforms" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadAllPlatforms $archSuffix" | Out-Null
|
||||
return
|
||||
} elseif ($Runtimes -eq "none") {
|
||||
Write-Host "Skipping runtimes installation for Xcode $Version ..."
|
||||
@@ -197,17 +203,17 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
}
|
||||
"default" {
|
||||
Write-Host "Installing default $platform runtime for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform $archSuffix" | Out-Null
|
||||
continue
|
||||
}
|
||||
default {
|
||||
# Version might be a semver or a build number
|
||||
if (($platformVersion -match "^\d{1,2}\.\d(\.\d)?$") -or ($platformVersion -match "^[a-zA-Z0-9]{6,8}$")) {
|
||||
Write-Host "Installing $platform $platformVersion runtime for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform -buildVersion $platformVersion" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform -buildVersion $platformVersion $archSuffix" | Out-Null
|
||||
continue
|
||||
}
|
||||
throw "$platformVersion is not a valid value for $platform version. Valid values are 'latest' or 'skip' or a semver from 0.0 to 99.9.(9)."
|
||||
throw "$platformVersion is not a valid value for $platform version. Valid values are 'default', or 'skip', or a semver from 0.0 to 99.9.(9), or a build number."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# This AppleScript clicks "Allow" for "System Software from developer "Parallels International GmbH"
|
||||
# Steps:
|
||||
# - Open System Settings -> Privacy & Security
|
||||
# - Click 'Allow' for 'System Software from developer "Parallels International GmbH'
|
||||
# - Enter password for runner
|
||||
|
||||
on run argv
|
||||
set userpassword to item 1 of argv
|
||||
|
||||
tell application "System Settings"
|
||||
activate
|
||||
delay 5
|
||||
end tell
|
||||
|
||||
tell application "System Events"
|
||||
tell process "System Settings"
|
||||
set frontmost to true
|
||||
repeat until exists window 1
|
||||
delay 2
|
||||
end repeat
|
||||
|
||||
tell splitter group 1 of group 1 of window 1
|
||||
select row 20 of outline 1 of scroll area 1 of group 1
|
||||
delay 5
|
||||
click UI Element 2 of group 4 of scroll area 1 of group 1 of group 2
|
||||
delay 5
|
||||
keystroke userpassword
|
||||
delay 5
|
||||
keystroke return
|
||||
delay 5
|
||||
end tell
|
||||
end tell
|
||||
end tell
|
||||
end run
|
||||
@@ -49,6 +49,14 @@ is_Tahoe() {
|
||||
[ "$OSTYPE" = "darwin25" ]
|
||||
}
|
||||
|
||||
is_TahoeArm64() {
|
||||
is_Tahoe && is_Arm64
|
||||
}
|
||||
|
||||
is_TahoeX64() {
|
||||
is_Tahoe && ! is_Arm64
|
||||
}
|
||||
|
||||
is_Sequoia() {
|
||||
[ "$OSTYPE" = "darwin24" ]
|
||||
}
|
||||
@@ -73,18 +81,6 @@ is_SonomaX64() {
|
||||
is_Sonoma && ! is_Arm64
|
||||
}
|
||||
|
||||
is_Ventura() {
|
||||
[ "$OSTYPE" = "darwin22" ]
|
||||
}
|
||||
|
||||
is_VenturaArm64() {
|
||||
is_Ventura && is_Arm64
|
||||
}
|
||||
|
||||
is_VenturaX64() {
|
||||
is_Ventura && ! is_Arm64
|
||||
}
|
||||
|
||||
get_toolset_value() {
|
||||
local toolset_path=$(echo "$IMAGE_FOLDER/toolset.json")
|
||||
local query=$1
|
||||
|
||||
@@ -56,7 +56,7 @@ Describe "Perl" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Tcl/Tk" -Skip:(-not ($os.IsVenturaX64 -or $os.IsSonomaX64)) {
|
||||
Describe "Tcl/Tk" -Skip:($os.IsArm64) {
|
||||
It "libtcl" {
|
||||
Test-Path "/usr/local/lib/libtcl8.6.dylib" | Should -BeTrue
|
||||
Test-Path "/usr/local/lib/libtk8.6.dylib" | Should -BeTrue
|
||||
@@ -69,7 +69,7 @@ Describe "bazelisk" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Github CLI" {
|
||||
Describe "GitHub CLI" {
|
||||
It "GitHub CLI" {
|
||||
"gh --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ Describe "GCC" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "vcpkg" -Skip:($os.IsVenturaArm64) {
|
||||
Describe "vcpkg" {
|
||||
It "vcpkg" {
|
||||
"vcpkg version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -9,4 +9,9 @@ Describe "Clang/LLVM" {
|
||||
$clangVersion = & "$(brew --prefix llvm@$toolsetVersion)/bin/clang" --version
|
||||
$clangVersion[0] | Should -BeLike "*${toolsetVersion}*"
|
||||
}
|
||||
|
||||
It "Default clang points to Apple clang" {
|
||||
(Get-CommandResult "which clang").Output.Trim() | Should -Be "/usr/bin/clang"
|
||||
(Get-CommandResult "clang --version").Output | Should -BeLike "*Apple clang*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ BeforeAll {
|
||||
}
|
||||
}
|
||||
|
||||
if ($os.IsVentura -or $os.IsSonoma) {
|
||||
if ($os.IsSonoma) {
|
||||
Describe "Mono" {
|
||||
$MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions"
|
||||
$monoToolsetVersion = @((Get-ToolsetContent).mono.framework.version)
|
||||
|
||||
@@ -99,49 +99,6 @@ Describe "Toolcache" {
|
||||
}
|
||||
}
|
||||
}
|
||||
Context "PyPy" -Skip:(-not $os.IsVenturaX64) {
|
||||
$pypyDirectory = Join-Path $toolcacheDirectory "PyPy"
|
||||
$pypyPackage = $packages | Where-Object { $_.ToolName -eq "pypy" } | Select-Object -First 1
|
||||
$testCase = @{ PypyDirectory = $pypyDirectory }
|
||||
|
||||
It "Toolcache directory exists" -TestCases $testCase {
|
||||
param ( [string] $PypyDirectory )
|
||||
|
||||
$PypyDirectory | Should -Exist
|
||||
}
|
||||
|
||||
It "Toolcache directory contains at least one version of PyPy" -TestCases $testCase {
|
||||
param ( [string] $PypyDirectory )
|
||||
|
||||
(Get-ChildItem -Path $PypyDirectory -Directory).Count | Should -BeGreaterThan 0
|
||||
}
|
||||
|
||||
$pypyPackage.Versions | Where-Object { $_ } | ForEach-Object {
|
||||
Context "$_" {
|
||||
$versionDirectory = Get-ChildItem -Path $pypyDirectory -Directory -Filter "$_*" | Select-Object -First 1
|
||||
$binFilename = If ($_.StartsWith("3")) { "pypy3" } else { "pypy" }
|
||||
$pypyBinPath = Join-Path $versionDirectory.FullName $pypyPackage.Arch "bin" $binFilename
|
||||
$testCase = @{ PypyVersion = $_; PypyBinPath = $pypyBinPath }
|
||||
|
||||
It "Version" -TestCases $testCase {
|
||||
param (
|
||||
[string] $PypyVersion,
|
||||
[string] $PypyBinPath
|
||||
)
|
||||
|
||||
$result = Get-CommandResult "$PypyBinPath --version"
|
||||
$result.Output | Should -BeLike "*$PypyVersion*"
|
||||
$result.ExitCode | Should -Be 0
|
||||
}
|
||||
|
||||
It "Run test script" -TestCases $testCase {
|
||||
param ( [string] $PypyBinPath )
|
||||
|
||||
"$PypyBinPath -c 'import sys;print(sys.version)'" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context "Node" {
|
||||
$nodeDirectory = Join-Path $toolcacheDirectory "node"
|
||||
|
||||
@@ -1,300 +0,0 @@
|
||||
packer {
|
||||
required_plugins {
|
||||
veertu-anka = {
|
||||
version = ">= v3.2.0"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "builder_type" {
|
||||
type = string
|
||||
default = "veertu-anka-vm-clone"
|
||||
validation {
|
||||
condition = contains(["veertu-anka-vm-clone", "null"], var.builder_type)
|
||||
error_message = "The builder_type value must be one of [veertu-anka-vm-clone, null]."
|
||||
}
|
||||
}
|
||||
|
||||
variable "source_vm_name" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "source_vm_port" {
|
||||
type = number
|
||||
default = 22
|
||||
}
|
||||
|
||||
variable "source_vm_tag" {
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "socks_proxy" {
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "build_id" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
sensitive = true
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcpu_count" {
|
||||
type = string
|
||||
default = "6"
|
||||
}
|
||||
|
||||
variable "ram_size" {
|
||||
type = string
|
||||
default = "24G"
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos13"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
vm_name = "${var.build_id}"
|
||||
source_vm_name = "${var.source_vm_name}"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
}
|
||||
|
||||
source "null" "template" {
|
||||
ssh_host = "${var.source_vm_name}"
|
||||
ssh_port = "${var.source_vm_port}"
|
||||
ssh_username = "${var.vm_username}"
|
||||
ssh_password = "${var.vm_password}"
|
||||
ssh_proxy_host = "${var.socks_proxy}"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.${var.builder_type}.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bash_profile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = ["mkdir ~/bootstrap"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "bootstrap"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers-macos13.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-tccdb-macos.sh",
|
||||
"${path.root}/../scripts/build/configure-autologin.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-mono.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-openssl.sh",
|
||||
"${path.root}/../scripts/build/install-ruby.sh",
|
||||
"${path.root}/../scripts/build/install-rubygems.sh",
|
||||
"${path.root}/../scripts/build/install-git.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh",
|
||||
"${path.root}/../scripts/build/install-unxip.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh",
|
||||
"${path.root}/../scripts/build/install-firefox.sh",
|
||||
"${path.root}/../scripts/build/install-pypy.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Configure-Xcode-Simulators.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = ["rm -rf \"$(brew --cache)\""]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
}
|
||||
}
|
||||
+16
-11
@@ -81,7 +81,7 @@ variable "ram_size" {
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos13"
|
||||
default = "macos26"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
@@ -149,7 +149,7 @@ build {
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
source = "${path.root}/../toolsets/toolset-26.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
@@ -158,7 +158,7 @@ build {
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -203,20 +203,16 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-rosetta.sh",
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-mono.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-openssl.sh",
|
||||
"${path.root}/../scripts/build/install-ruby.sh",
|
||||
"${path.root}/../scripts/build/install-rubygems.sh",
|
||||
"${path.root}/../scripts/build/install-git.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh",
|
||||
"${path.root}/../scripts/build/install-unxip.sh"
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -238,12 +234,15 @@ build {
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-firefox.sh",
|
||||
@@ -272,15 +271,21 @@ build {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/"
|
||||
destination = "${path.root}/../../image-output/macos-26-Readme.md"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/"
|
||||
source = "${local.image_folder}/output/software-report.md"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/software-report.json"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/software-report.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
@@ -1,258 +0,0 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "15.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{ "link": "15.2", "filename": "Xcode_15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
|
||||
{ "link": "15.1", "filename": "Xcode_15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
|
||||
{ "link": "15.0.1", "filename": "Xcode_15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
|
||||
{ "link": "14.3.1", "filename": "Xcode_14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
|
||||
{ "link": "14.2", "filename": "Xcode_14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
|
||||
{ "link": "14.1", "filename": "Xcode_14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
|
||||
]
|
||||
},
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{ "link": "15.2", "filename": "Xcode_15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
|
||||
{ "link": "15.1", "filename": "Xcode_15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
|
||||
{ "link": "15.0.1", "filename": "Xcode_15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
|
||||
{ "link": "14.3.1", "filename": "Xcode_14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
|
||||
{ "link": "14.2", "filename": "Xcode_14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
|
||||
{ "link": "14.1", "filename": "Xcode_14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"java": {
|
||||
"x64": {
|
||||
"default": "17",
|
||||
"versions": [ "8", "11", "17", "21"]
|
||||
},
|
||||
"arm64": {
|
||||
"default": "17",
|
||||
"versions": [ "11", "17", "21"]
|
||||
}
|
||||
},
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-mac-10406996_latest.zip",
|
||||
"sdk-tools": "sdk-tools-darwin-4333796.zip",
|
||||
"platform_min_version": "33",
|
||||
"build_tools_min_version": "33.0.2",
|
||||
"extras": [
|
||||
"android;m2repository", "google;m2repository", "google;google_play_services"
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"versions": [
|
||||
"26", "27", "28"
|
||||
]
|
||||
}
|
||||
},
|
||||
"powershellModules": [
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
{ "name": "PSScriptAnalyzer" }
|
||||
],
|
||||
"brew": {
|
||||
"common_packages": [
|
||||
"ant",
|
||||
"aria2",
|
||||
"azure-cli",
|
||||
"bazelisk",
|
||||
"carthage",
|
||||
"cmake",
|
||||
"gh",
|
||||
"gnupg",
|
||||
"gnu-tar",
|
||||
"kotlin",
|
||||
"libpq",
|
||||
"p7zip",
|
||||
"packer",
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
"yq",
|
||||
"xcbeautify",
|
||||
"xcodes"
|
||||
],
|
||||
"cask_packages": [
|
||||
"parallels"
|
||||
]
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
]
|
||||
},
|
||||
"dotnet": {
|
||||
"arch":{
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ruby": {
|
||||
"default": "3.3",
|
||||
"rubygems": [
|
||||
"cocoapods",
|
||||
"bundler",
|
||||
"fastlane"
|
||||
]
|
||||
},
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "Python",
|
||||
"url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.8.*",
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PyPy",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"2.7",
|
||||
"3.7",
|
||||
"3.8",
|
||||
"3.9",
|
||||
"3.10"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Node",
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go",
|
||||
"url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"node": {
|
||||
"default": "20"
|
||||
},
|
||||
"llvm": {
|
||||
"version": "15"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.4"
|
||||
},
|
||||
"mono": {
|
||||
"framework":{
|
||||
"version": "6.12.0.188",
|
||||
"sha256": "07cdd4e5e72b562892960b7fc73af470db7a4ffc2f68bb834eb3d0a874bbd12c"
|
||||
},
|
||||
"nunit": {
|
||||
"version": "3.15.4",
|
||||
"sha256": "356dab61433b5be76b76fd0e2e979bda56d164f6d85a900e55c3a4a5fffa28de"
|
||||
}
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
}
|
||||
}
|
||||
@@ -132,8 +132,8 @@
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-mac-10406996_latest.zip",
|
||||
"sdk-tools": "sdk-tools-darwin-4333796.zip",
|
||||
"platform_min_version": "33",
|
||||
"build_tools_min_version": "33.0.2",
|
||||
"platform_min_version": "34",
|
||||
"build_tools_min_version": "34.0.0",
|
||||
"extras": [
|
||||
"android;m2repository", "google;m2repository", "google;google_play_services"
|
||||
],
|
||||
@@ -143,9 +143,9 @@
|
||||
"cmake;4.1.2"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -153,7 +153,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -232,7 +232,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
@@ -303,14 +302,16 @@
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,24 @@
|
||||
"default": "16.4",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
@@ -17,7 +35,11 @@
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "default"
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
@@ -25,10 +47,10 @@
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.4", "18.5", "18.6"] },
|
||||
{ "watchOS": ["11.2", "11.4", "11.5"] },
|
||||
{ "tvOS": ["18.2", "18.4", "18.5"] }
|
||||
]
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["18.5"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.3",
|
||||
@@ -63,6 +85,25 @@
|
||||
},
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] },
|
||||
{ "visionOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
@@ -77,7 +118,12 @@
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "default"
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] },
|
||||
{ "visionOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
@@ -85,9 +131,9 @@
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.4", "18.5", "18.6"] },
|
||||
{ "watchOS": ["11.2", "11.4", "11.5"] },
|
||||
{ "tvOS": ["18.2", "18.4", "18.5"] },
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["18.5"] },
|
||||
{ "visionOS": ["2.3", "2.4", "2.5"] }
|
||||
]
|
||||
},
|
||||
@@ -149,7 +195,7 @@
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27","28", "29"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -157,7 +203,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -236,7 +282,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
@@ -307,14 +352,16 @@
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,33 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "26.0.1",
|
||||
"arm64":{
|
||||
"default": "26.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.2_Release_Candidate",
|
||||
"filename": "Xcode_26.2_Release_Candidate_Universal",
|
||||
"version": "26.2_Release_Candidate+17C48",
|
||||
"symlinks": ["26.2"],
|
||||
"sha256": "63743df751791508ac8e4f01a33e3f28f3a59a86ff3f33c8c155c3046daedf42",
|
||||
"link": "26.4",
|
||||
"filename": "Xcode_26.4_Universal",
|
||||
"version": "26.4+17E192",
|
||||
"sha256": "1049032d89389cc7d803d7097359a7420c2e9747b4ce2b9cf4b81c9f3f634dfa",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
@@ -25,7 +42,53 @@
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "none"
|
||||
}
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.4",
|
||||
"filename": "Xcode_26.4_Universal",
|
||||
"version": "26.4+17E192",
|
||||
"sha256": "1049032d89389cc7d803d7097359a7420c2e9747b4ce2b9cf4b81c9f3f634dfa",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] },
|
||||
{ "visionOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -64,7 +127,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"14.3.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -90,6 +153,7 @@
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
@@ -98,9 +162,7 @@
|
||||
"xcbeautify",
|
||||
"xcodes"
|
||||
],
|
||||
"cask_packages": [
|
||||
"parallels"
|
||||
]
|
||||
"cask_packages": []
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
@@ -111,6 +173,13 @@
|
||||
},
|
||||
"dotnet": {
|
||||
"arch":{
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
@@ -134,6 +203,14 @@
|
||||
"url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
@@ -149,6 +226,13 @@
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
@@ -163,6 +247,14 @@
|
||||
"url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
@@ -176,11 +268,20 @@
|
||||
{
|
||||
"name": "Ruby",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -192,6 +293,9 @@
|
||||
"llvm": {
|
||||
"version": "20"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.5"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
FROM ubuntu:24.04 AS base
|
||||
|
||||
ARG IMAGE_VERSION=1.0.0
|
||||
ARG IMAGE_OWNER="GitHub"
|
||||
|
||||
ENV IMAGE_OWNER=$IMAGE_OWNER
|
||||
ENV ImageVersion=$IMAGE_VERSION
|
||||
ENV IMAGE_VERSION=$IMAGE_VERSION
|
||||
ENV ImageOS="Linux"
|
||||
ENV IMAGE_TARGET_PLATFORM="GitHub"
|
||||
ENV POWERSHELL_DISTRIBUTION_CHANNEL="GitHub-Actions-$ImageOS"
|
||||
ENV IMAGEDATA_NAME="ubuntu:24.04"
|
||||
ENV NVM_DIR="/etc/skel/.nvm"
|
||||
ENV HELPER_SCRIPTS="/tmp/scripts/helpers"
|
||||
ENV INSTALLER_SCRIPT_FOLDER="/tmp/toolsets"
|
||||
|
||||
# Avoid interactive prompts
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
COPY scripts/build /tmp/scripts/build
|
||||
COPY scripts/helpers /tmp/scripts/helpers
|
||||
COPY toolsets/ /tmp/toolsets/
|
||||
RUN find /tmp/scripts -name "*.sh" -type f -exec chmod +x {} \;
|
||||
|
||||
COPY scripts/entrypoint.sh /opt/entrypoint.sh
|
||||
RUN chmod +x /opt/entrypoint.sh
|
||||
|
||||
RUN echo 'set -eo pipefail' >> /etc/bash.bashrc
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get install -y sudo lsb-release jq dpkg && \
|
||||
touch /run/.containerenv && \
|
||||
/tmp/scripts/build/configure-apt-sources.sh && \
|
||||
/tmp/scripts/build/configure-apt.sh && \
|
||||
/tmp/scripts/build/install-apt-vital.sh && \
|
||||
/tmp/scripts/build/install-ms-repos.sh && \
|
||||
/tmp/scripts/build/configure-image-data-file.sh && \
|
||||
/tmp/scripts/build/configure-environment.sh && \
|
||||
/tmp/scripts/build/install-actions-cache.sh && \
|
||||
/tmp/scripts/build/install-apt-common.sh && \
|
||||
/tmp/scripts/build/install-azcopy.sh && \
|
||||
/tmp/scripts/build/install-azure-cli.sh && \
|
||||
/tmp/scripts/build/install-azure-devops-cli.sh && \
|
||||
/tmp/scripts/build/install-bicep.sh && \
|
||||
/tmp/scripts/build/install-aws-tools.sh && \
|
||||
/tmp/scripts/build/install-git.sh && \
|
||||
/tmp/scripts/build/install-git-lfs.sh && \
|
||||
/tmp/scripts/build/install-github-cli.sh && \
|
||||
/tmp/scripts/build/install-google-cloud-cli.sh && \
|
||||
/tmp/scripts/build/install-nvm.sh && \
|
||||
/tmp/scripts/build/install-nodejs.sh && \
|
||||
/tmp/scripts/build/install-powershell.sh && \
|
||||
/tmp/scripts/build/configure-dpkg.sh && \
|
||||
/tmp/scripts/build/install-yq.sh && \
|
||||
/tmp/scripts/build/install-python.sh && \
|
||||
/tmp/scripts/build/install-zstd.sh && \
|
||||
/tmp/scripts/build/install-pipx-packages.sh && \
|
||||
/tmp/scripts/build/install-docker-cli.sh && \
|
||||
/tmp/scripts/build/configure-system.sh && \
|
||||
/tmp/scripts/helpers/cleanup.sh
|
||||
|
||||
RUN sed -i '/set -eo pipefail/d' /etc/bash.bashrc
|
||||
|
||||
ENTRYPOINT ["/opt/entrypoint.sh"]
|
||||
|
||||
CMD [ "bash" ]
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [IMAGE_NAME]"
|
||||
echo ""
|
||||
echo "Generate a software report for a Docker image."
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " IMAGE_NAME Docker image name to generate report for (default: ubuntu-slim:test)"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Generate report for ubuntu-slim:test (builds image first)"
|
||||
echo " $0 my-registry/ubuntu:latest # Generate report for existing image"
|
||||
echo " $0 ubuntu-slim:v1.2.3 # Generate report for tagged image"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
}
|
||||
|
||||
# Handle help flags
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set the image name from parameter or use default
|
||||
IMAGE_NAME="${1:-ubuntu-slim:test}"
|
||||
|
||||
# Build the image only if using the default name (for backward compatibility)
|
||||
if [[ "$IMAGE_NAME" == "ubuntu-slim:test" ]]; then
|
||||
echo "Building image: $IMAGE_NAME"
|
||||
docker build --debug --progress plain -t "$IMAGE_NAME" .
|
||||
else
|
||||
# Check if the image exists
|
||||
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||
echo "Error: Image '$IMAGE_NAME' does not exist. Please build it first or provide a valid image name."
|
||||
echo "Run '$0 --help' for usage information."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Generating software report for image: $IMAGE_NAME"
|
||||
|
||||
# Get the script directory
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BASE_DIR="$(cd ../../helpers/software-report-base && pwd)"
|
||||
|
||||
echo $BASE_DIR
|
||||
|
||||
# Create a temporary directory for output
|
||||
OUTPUT_DIR=$(mktemp -d)
|
||||
echo "Using temporary directory: $OUTPUT_DIR"
|
||||
|
||||
# Run the container and execute the PowerShell script inside it
|
||||
echo "Running Generate-SoftwareReport.ps1 inside the container..."
|
||||
docker run --rm \
|
||||
-v "$OUTPUT_DIR:/output" \
|
||||
-v "$SCRIPT_DIR/scripts/docs-gen:/scripts/docs-gen:ro" \
|
||||
-v "$BASE_DIR:/scripts/software-report-base:ro" \
|
||||
"$IMAGE_NAME" \
|
||||
pwsh /scripts/docs-gen/Generate-SoftwareReport.ps1 -OutputDirectory /output
|
||||
|
||||
if [ -f "$OUTPUT_DIR/software-report.md" ]; then
|
||||
cp "$OUTPUT_DIR/software-report.md" ubuntu-slim-Readme.md
|
||||
echo "✓ Copied software-report.md to current directory"
|
||||
else
|
||||
echo "✗ Error: software-report.md was not generated"
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "$OUTPUT_DIR/software-report.json" ]; then
|
||||
cp "$OUTPUT_DIR/software-report.json" ubuntu-slim-Report.json
|
||||
echo "✓ Copied software-report.json to current directory"
|
||||
else
|
||||
echo "✗ Error: software-report.json was not generated"
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up temporary directory
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
echo "✓ Software report generation complete"
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-apt-sources.sh
|
||||
## Desc: Configure apt sources with failover from Azure to Ubuntu archives.
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
touch /etc/apt/apt-mirrors.txt
|
||||
|
||||
printf "http://azure.archive.ubuntu.com/ubuntu/\tpriority:1\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
printf "https://archive.ubuntu.com/ubuntu/\tpriority:2\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
printf "https://security.ubuntu.com/ubuntu/\tpriority:3\n" | tee -a /etc/apt/apt-mirrors.txt
|
||||
|
||||
if is_ubuntu24; then
|
||||
sed -i 's|http://archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list.d/ubuntu.sources
|
||||
else
|
||||
sed -i 's|http://archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list
|
||||
fi
|
||||
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-apt.sh
|
||||
## Desc: Configure apt, install jq and apt-fast packages.
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
# Stop and disable apt-daily upgrade services;
|
||||
# systemctl stop apt-daily.timer
|
||||
# systemctl disable apt-daily.timer
|
||||
# systemctl disable apt-daily.service
|
||||
# systemctl stop apt-daily-upgrade.timer
|
||||
# systemctl disable apt-daily-upgrade.timer
|
||||
# systemctl disable apt-daily-upgrade.service
|
||||
|
||||
# Enable retry logic for apt up to 10 times
|
||||
echo "APT::Acquire::Retries \"10\";" > /etc/apt/apt.conf.d/80-retries
|
||||
|
||||
# Configure apt to always assume Y
|
||||
echo "APT::Get::Assume-Yes \"true\";" > /etc/apt/apt.conf.d/90assumeyes
|
||||
|
||||
# APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
|
||||
# In case you have multiple systems that you want to receive the same set of updates,
|
||||
# you can set APT::Machine-ID to a UUID such that they all phase the same,
|
||||
# or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
|
||||
# apt-cache policy pkgname
|
||||
echo 'APT::Get::Always-Include-Phased-Updates "true";' > /etc/apt/apt.conf.d/99-phased-updates
|
||||
|
||||
# Fix bad proxy and http headers settings
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/99bad_proxy
|
||||
Acquire::http::Pipeline-Depth 0;
|
||||
Acquire::http::No-Cache true;
|
||||
Acquire::https::Pipeline-Depth 0;
|
||||
Acquire::https::No-Cache true;
|
||||
Acquire::BrokenProxy true;
|
||||
EOF
|
||||
|
||||
echo 'APT sources'
|
||||
if ! is_ubuntu24; then
|
||||
cat /etc/apt/sources.list
|
||||
else
|
||||
cat /etc/apt/sources.list.d/ubuntu.sources
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
|
||||
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-dpkg.sh
|
||||
## Desc: Configure dpkg
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
# This is the anti-frontend. It never interacts with you at all,
|
||||
# and makes the default answers be used for all questions. It
|
||||
# might mail error messages to root, but that's it; otherwise it
|
||||
# is completely silent and unobtrusive, a perfect frontend for
|
||||
# automatic installs. If you are using this front-end, and require
|
||||
# non-default answers to questions, you will need to pre-seed the
|
||||
# debconf database
|
||||
set_etc_environment_variable "DEBIAN_FRONTEND" "noninteractive"
|
||||
|
||||
# dpkg can be instructed not to ask for confirmation
|
||||
# when replacing a configuration file (with the --force-confdef --force-confold options)
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/10dpkg-options
|
||||
Dpkg::Options {
|
||||
"--force-confdef";
|
||||
"--force-confold";
|
||||
}
|
||||
EOF
|
||||
|
||||
# hide information about packages that are no longer required
|
||||
cat <<EOF >> /etc/apt/apt.conf.d/10apt-autoremove
|
||||
APT::Get::AutomaticRemove "0";
|
||||
APT::Get::HideAutoRemove "1";
|
||||
EOF
|
||||
|
||||
# Install libicu70 package for Ubuntu 24
|
||||
if is_ubuntu24 ; then
|
||||
wget https://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu70_70.1-2_amd64.deb
|
||||
|
||||
EXPECTED_LIBICU_SHA512="a6315482d93606e375c272718d2458870b95e4ed4b672ea8640cf7bc2d2c2f41aea13b798b1e417e1ffc472a90c6aad150d3d293aa9bddec48e39106e4042807"
|
||||
ACTUAL_LIBICU_SHA512="$(sha512sum "./libicu70_70.1-2_amd64.deb" | awk '{print $1}')"
|
||||
[ "$EXPECTED_LIBICU_SHA512" = "$ACTUAL_LIBICU_SHA512" ] || { echo "libicu checksum mismatch in configure-dpkg.sh"; exit 1;}
|
||||
sudo apt-get install -y ./libicu70_70.1-2_amd64.deb
|
||||
fi
|
||||
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-environment.sh
|
||||
## Desc: Configure system and environment
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
whoami
|
||||
|
||||
# Set ImageVersion and ImageOS env variables
|
||||
set_etc_environment_variable "ImageVersion" "${IMAGE_VERSION}"
|
||||
set_etc_environment_variable "ImageOS" "${IMAGE_OS}"
|
||||
|
||||
# Set the ACCEPT_EULA variable to Y value to confirm your acceptance of the End-User Licensing Agreement
|
||||
set_etc_environment_variable "ACCEPT_EULA" "Y"
|
||||
|
||||
# This directory is supposed to be created in $HOME and owned by user(https://github.com/actions/runner-images/issues/491)
|
||||
mkdir -p /etc/skel/.config/configstore
|
||||
set_etc_environment_variable "XDG_CONFIG_HOME" '$HOME/.config'
|
||||
|
||||
# Prepare directory and env variable for toolcache
|
||||
echo "Setting up AGENT_TOOLSDIRECTORY and RUNNER_TOOL_CACHE variable to /opt/hostedtoolcache"
|
||||
AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache
|
||||
mkdir $AGENT_TOOLSDIRECTORY
|
||||
set_etc_environment_variable "AGENT_TOOLSDIRECTORY" "${AGENT_TOOLSDIRECTORY}"
|
||||
set_etc_environment_variable "RUNNER_TOOL_CACHE" "${AGENT_TOOLSDIRECTORY}"
|
||||
chmod -R 777 $AGENT_TOOLSDIRECTORY
|
||||
|
||||
# https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
|
||||
# https://www.suse.com/support/kb/doc/?id=000016692
|
||||
echo 'vm.max_map_count=262144' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://kind.sigs.k8s.io/docs/user/known-issues/#pod-errors-due-to-too-many-open-files
|
||||
echo 'fs.inotify.max_user_watches=655360' | tee -a /etc/sysctl.conf
|
||||
echo 'fs.inotify.max_user_instances=1280' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://github.com/actions/runner-images/issues/9491
|
||||
echo 'vm.mmap_rnd_bits=28' | tee -a /etc/sysctl.conf
|
||||
|
||||
# https://github.com/actions/runner-images/pull/7860
|
||||
netfilter_rule='/etc/udev/rules.d/50-netfilter.rules'
|
||||
rules_directory="$(dirname "${netfilter_rule}")"
|
||||
mkdir -p $rules_directory
|
||||
touch $netfilter_rule
|
||||
echo 'ACTION=="add", SUBSYSTEM=="module", KERNEL=="nf_conntrack", RUN+="/usr/sbin/sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1"' | tee -a $netfilter_rule
|
||||
|
||||
# Remove fwupd if installed. We're running on VMs in Azure and the fwupd package is not needed.
|
||||
# Leaving it enable means periodic refreshes show in network traffic and firewall logs
|
||||
# Check if fwupd-refresh.timer exists in systemd
|
||||
if systemctl list-unit-files fwupd-refresh.timer &>/dev/null; then
|
||||
echo "Masking fwupd-refresh.timer..."
|
||||
systemctl mask fwupd-refresh.timer
|
||||
fi
|
||||
|
||||
# This is a legacy check, leaving for earlier versions of Ubuntu
|
||||
# If fwupd config still exists, disable the motd updates
|
||||
if [[ -f "/etc/fwupd/daemon.conf" ]]; then
|
||||
sed -i 's/UpdateMotd=true/UpdateMotd=false/g' /etc/fwupd/daemon.conf
|
||||
fi
|
||||
|
||||
# Disable to load providers
|
||||
# https://github.com/microsoft/azure-pipelines-agent/issues/3834
|
||||
if is_ubuntu22; then
|
||||
sed -i 's/openssl_conf = openssl_init/#openssl_conf = openssl_init/g' /etc/ssl/openssl.cnf
|
||||
fi
|
||||
|
||||
# # Disable man-db auto update
|
||||
# echo "set man-db/auto-update false" | debconf-communicate
|
||||
# dpkg-reconfigure man-db
|
||||
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
function create_imagedata_json() {
|
||||
|
||||
arch=$(uname -m)
|
||||
if [[ $arch == "x86_64" ]]; then
|
||||
arch="x64"
|
||||
elif [[ $arch == "aarch64" ]]; then
|
||||
arch="arm64"
|
||||
else
|
||||
echo "Unsupported architecture: $arch"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "$IMAGEDATA_INCLUDED_SOFTWARE" ]]; then
|
||||
included_software="- Included Software: ${IMAGEDATA_INCLUDED_SOFTWARE}"
|
||||
fi
|
||||
|
||||
imagedata_file="/imagegeneration/imagedata.json"
|
||||
|
||||
cat <<EOF > $imagedata_file
|
||||
[
|
||||
{
|
||||
"group": "VM Image",
|
||||
"detail": "- OS: Linux (${arch})\n- Source: Docker\n- Name: ${IMAGEDATA_NAME}\n- Version: ${IMAGE_VERSION}\n${included_software}"
|
||||
}
|
||||
]
|
||||
EOF
|
||||
|
||||
}
|
||||
|
||||
mkdir -p /imagegeneration
|
||||
|
||||
# Generate the imagedata JSON file displayed on workflow initialization
|
||||
if [[ -n "$IMAGEDATA_NAME" ]]; then
|
||||
echo "Generating imagedata JSON file"
|
||||
create_imagedata_json
|
||||
else
|
||||
echo "IMAGEDATA_NAME is null or empty. Skipping imagedata JSON generation."
|
||||
fi
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: configure-system.sh
|
||||
## Desc: Post deployment system configuration actions
|
||||
################################################################################
|
||||
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
echo "chmod -R 777 /opt"
|
||||
chmod -R 777 /opt
|
||||
echo "chmod -R 777 /usr/share"
|
||||
chmod -R 777 /usr/share
|
||||
|
||||
# Remove quotes around PATH
|
||||
ENVPATH=$(grep 'PATH=' /etc/environment | head -n 1 | sed -z 's/^PATH=*//')
|
||||
ENVPATH=${ENVPATH#"\""}
|
||||
ENVPATH=${ENVPATH%"\""}
|
||||
replace_etc_environment_variable "PATH" "${ENVPATH}"
|
||||
echo "Updated /etc/environment: $(cat /etc/environment)"
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-actions-cache.sh
|
||||
## Desc: Download latest release from https://github.com/actions/action-versions
|
||||
## Maintainer: #actions-runtime and @TingluoHuang
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
# Prepare directory and env variable for ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
ACTION_ARCHIVE_CACHE_DIR=/opt/actionarchivecache
|
||||
mkdir -p $ACTION_ARCHIVE_CACHE_DIR
|
||||
chmod -R 777 $ACTION_ARCHIVE_CACHE_DIR
|
||||
echo "Setting up ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE variable to ${ACTION_ARCHIVE_CACHE_DIR}"
|
||||
set_etc_environment_variable "ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE" "${ACTION_ARCHIVE_CACHE_DIR}"
|
||||
|
||||
# Download latest release from github.com/actions/action-versions and untar to /opt/actionarchivecache
|
||||
download_url=$(resolve_github_release_asset_url "actions/action-versions" "endswith(\"action-versions.tar.gz\")" "latest")
|
||||
archive_path=$(download_with_retry "$download_url")
|
||||
tar -xzf "$archive_path" -C $ACTION_ARCHIVE_CACHE_DIR
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-apt-common.sh
|
||||
## Desc: Install basic command line utilities and dev packages
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
common_packages=$(get_toolset_value .apt.common_packages[])
|
||||
cmd_packages=$(get_toolset_value .apt.cmd_packages[])
|
||||
|
||||
apt-get install --no-install-recommends $common_packages $cmd_packages
|
||||
|
||||
# for package in $common_packages $cmd_packages; do
|
||||
# echo "Install $package"
|
||||
# apt-get install --no-install-recommends $package
|
||||
# done
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-apt-vital.sh
|
||||
## Desc: Install vital command line utilities
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
vital_packages=$(get_toolset_value .apt.vital_packages[])
|
||||
apt-get install --no-install-recommends $vital_packages
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-aws-tools.sh
|
||||
## Desc: Install the AWS CLI, Session Manager plugin for the AWS CLI, and AWS SAM CLI
|
||||
## Supply chain security: AWS SAM CLI - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
awscliv2_archive_path=$(download_with_retry "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip")
|
||||
unzip -qq "$awscliv2_archive_path" -d /tmp/installers/
|
||||
/tmp/installers/aws/install -i /usr/local/aws-cli -b /usr/local/bin
|
||||
|
||||
smplugin_deb_path=$(download_with_retry "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb")
|
||||
apt-get install "$smplugin_deb_path"
|
||||
|
||||
# Download the latest aws sam cli release
|
||||
aws_sam_cli_archive_name="aws-sam-cli-linux-x86_64.zip"
|
||||
sam_cli_download_url=$(resolve_github_release_asset_url "aws/aws-sam-cli" "endswith(\"$aws_sam_cli_archive_name\")" "latest")
|
||||
aws_sam_cli_archive_path=$(download_with_retry "$sam_cli_download_url")
|
||||
|
||||
# Supply chain security - AWS SAM CLI
|
||||
aws_sam_cli_hash=$(get_checksum_from_github_release "aws/aws-sam-cli" "${aws_sam_cli_archive_name}.. " "latest" "SHA256")
|
||||
use_checksum_comparison "$aws_sam_cli_archive_path" "$aws_sam_cli_hash"
|
||||
|
||||
# Install the latest aws sam cli release
|
||||
mkdir -p /tmp/installers/aws-sam-cli
|
||||
unzip "$aws_sam_cli_archive_path" -d /tmp/installers/aws-sam-cli
|
||||
/tmp/installers/aws-sam-cli/install -i /usr/local/aws-sam-cli -b /usr/local/bin
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azcopy.sh
|
||||
## Desc: Install AzCopy
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install AzCopy10
|
||||
archive_path=$(download_with_retry "https://aka.ms/downloadazcopy-v10-linux")
|
||||
tar xzf "$archive_path" --strip-components=1 -C /tmp
|
||||
install /tmp/azcopy /usr/local/bin/azcopy
|
||||
|
||||
# Create azcopy 10 alias for backward compatibility
|
||||
ln -sf /usr/local/bin/azcopy /usr/local/bin/azcopy10
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azure-cli.sh
|
||||
## Desc: Install Azure CLI (az)
|
||||
################################################################################
|
||||
|
||||
# Install Azure CLI (instructions taken from https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)
|
||||
curl -fsSL https://aka.ms/InstallAzureCLIDeb | sudo bash
|
||||
|
||||
echo "azure-cli https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
|
||||
rm -f /etc/apt/sources.list.d/azure-cli.list
|
||||
rm -f /etc/apt/sources.list.d/azure-cli.list.save
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-azure-devops-cli.sh
|
||||
## Desc: Install Azure DevOps CLI (az devops)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
# AZURE_EXTENSION_DIR shell variable defines where modules are installed
|
||||
# https://docs.microsoft.com/en-us/cli/azure/azure-cli-extensions-overview
|
||||
export AZURE_EXTENSION_DIR=/opt/az/azcliextensions
|
||||
set_etc_environment_variable "AZURE_EXTENSION_DIR" "${AZURE_EXTENSION_DIR}"
|
||||
|
||||
# install azure devops Cli extension
|
||||
az extension add -n azure-devops
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-bicep.sh
|
||||
## Desc: Install bicep cli
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install Bicep CLI
|
||||
download_url=$(resolve_github_release_asset_url "Azure/bicep" "endswith(\"bicep-linux-x64\")" "latest")
|
||||
bicep_binary_path=$(download_with_retry "${download_url}")
|
||||
|
||||
# Mark it as executable
|
||||
install "$bicep_binary_path" /usr/local/bin/bicep
|
||||
@@ -0,0 +1,25 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-docker-cli.sh
|
||||
## Desc: Install Docker CLI and plugins (Compose, Buildx) but not the engine.
|
||||
## The Docker daemon is not included since ubuntu-slim runs as a container.
|
||||
## ubuntu-slim does not run in Privileged mode, so functionality from these tools is limited.
|
||||
## It cannot build or run containers locally.
|
||||
################################################################################
|
||||
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
|
||||
echo \
|
||||
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
apt-get update
|
||||
|
||||
# Install Docker CLI components (not the daemon)
|
||||
# docker-ce-cli: Docker command line interface
|
||||
# docker-buildx-plugin: Build with BuildKit
|
||||
# docker-compose-plugin: Docker Compose V2
|
||||
apt-get install --no-install-recommends -y \
|
||||
docker-ce-cli \
|
||||
docker-buildx-plugin \
|
||||
docker-compose-plugin
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-git-lfs.sh
|
||||
## Desc: Install Git-lfs
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
GIT_LFS_REPO="https://packagecloud.io/install/repositories/github/git-lfs"
|
||||
|
||||
# Install git-lfs
|
||||
curl -fsSL $GIT_LFS_REPO/script.deb.sh | bash
|
||||
apt-get install git-lfs
|
||||
|
||||
# Remove source repo's
|
||||
rm /etc/apt/sources.list.d/github_git-lfs.list
|
||||
|
||||
# Document apt source repo's
|
||||
echo "git-lfs $GIT_LFS_REPO" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-git.sh
|
||||
## Desc: Install Git and Git-FTP
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
GIT_REPO="ppa:git-core/ppa"
|
||||
|
||||
## Install git
|
||||
add-apt-repository $GIT_REPO -y
|
||||
apt-get update
|
||||
apt-get install git
|
||||
|
||||
# Git version 2.35.2 introduces security fix that breaks action\checkout https://github.com/actions/checkout/issues/760
|
||||
cat <<EOF >> /etc/gitconfig
|
||||
[safe]
|
||||
directory = *
|
||||
EOF
|
||||
|
||||
# Install git-ftp
|
||||
apt-get install git-ftp
|
||||
|
||||
# Remove source repo's
|
||||
add-apt-repository --remove $GIT_REPO
|
||||
|
||||
# Document apt source repo's
|
||||
echo "git-core $GIT_REPO" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
|
||||
# Add well-known SSH host keys to known_hosts
|
||||
ssh-keyscan -t rsa,ecdsa,ed25519 github.com >> /etc/ssh/ssh_known_hosts
|
||||
ssh-keyscan -t rsa ssh.dev.azure.com >> /etc/ssh/ssh_known_hosts
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-github-cli.sh
|
||||
## Desc: Install GitHub CLI
|
||||
## Must be run as non-root user after homebrew
|
||||
## Supply chain security: GitHub CLI - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download GitHub CLI
|
||||
gh_cli_url=$(resolve_github_release_asset_url "cli/cli" "contains(\"linux\") and contains(\"amd64\") and endswith(\".deb\")" "latest")
|
||||
gh_cli_deb_path=$(download_with_retry "$gh_cli_url")
|
||||
|
||||
# Supply chain security - GitHub CLI
|
||||
hash_url=$(resolve_github_release_asset_url "cli/cli" "endswith(\"checksums.txt\")" "latest")
|
||||
external_hash=$(get_checksum_from_url "$hash_url" "linux_amd64.deb" "SHA256")
|
||||
use_checksum_comparison "$gh_cli_deb_path" "$external_hash"
|
||||
|
||||
# Install GitHub CLI
|
||||
apt-get install "$gh_cli_deb_path"
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-google-cloud-cli.sh
|
||||
## Desc: Install the Google Cloud CLI
|
||||
################################################################################
|
||||
|
||||
REPO_URL="https://packages.cloud.google.com/apt"
|
||||
|
||||
# Install the Google Cloud CLI
|
||||
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] $REPO_URL cloud-sdk main" > /etc/apt/sources.list.d/google-cloud-sdk.list
|
||||
wget -qO- https://packages.cloud.google.com/apt/doc/apt-key.gpg | gpg --dearmor > /usr/share/keyrings/cloud.google.gpg
|
||||
apt-get update
|
||||
apt-get install google-cloud-cli
|
||||
|
||||
# remove apt
|
||||
rm /etc/apt/sources.list.d/google-cloud-sdk.list
|
||||
rm /usr/share/keyrings/cloud.google.gpg
|
||||
|
||||
# add repo to the apt-sources.txt
|
||||
echo "google-cloud-sdk $REPO_URL" >> $HELPER_SCRIPTS/apt-sources.txt
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-ms-repos.sh
|
||||
## Desc: Install official Microsoft package repos for the distribution
|
||||
################################################################################
|
||||
|
||||
os_label=$(lsb_release -rs)
|
||||
|
||||
# Install Microsoft repository
|
||||
wget https://packages.microsoft.com/config/ubuntu/$os_label/packages-microsoft-prod.deb
|
||||
dpkg -i packages-microsoft-prod.deb
|
||||
|
||||
# update
|
||||
apt-get install apt-transport-https ca-certificates curl software-properties-common
|
||||
apt-get update
|
||||
apt-get dist-upgrade
|
||||
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-nodejs.sh
|
||||
## Desc: Install Node.js LTS and related tooling (Gulp, Grunt)
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Install default Node.js
|
||||
default_version=$(get_toolset_value '.node.default')
|
||||
|
||||
curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n -o ~/n
|
||||
sudo bash ~/n $default_version
|
||||
|
||||
# Install node modules
|
||||
node_modules=$(get_toolset_value '.node_modules[].name')
|
||||
if [ -n "$node_modules" ]; then
|
||||
npm install -g $node_modules
|
||||
else
|
||||
echo "No node modules to install"
|
||||
fi
|
||||
|
||||
# fix global modules installation as regular user
|
||||
# related issue https://github.com/actions/runner-images/issues/3727
|
||||
sudo chmod -R 777 /usr/local/lib/node_modules
|
||||
sudo chmod -R 777 /usr/local/bin
|
||||
|
||||
rm -rf ~/n
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-nvm.sh
|
||||
## Desc: Install Nvm
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
export NVM_DIR="/etc/skel/.nvm"
|
||||
mkdir ${NVM_DIR}
|
||||
nvm_version=$(curl -fsSL https://api.github.com/repos/nvm-sh/nvm/releases/latest | jq -r '.tag_name')
|
||||
curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/$nvm_version/install.sh | bash
|
||||
set_etc_environment_variable "NVM_DIR" '$HOME/.nvm'
|
||||
|
||||
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm' | tee -a /etc/skel/.bash_profile
|
||||
[ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh"
|
||||
|
||||
echo "source ${NVM_DIR}/nvm.sh" | tee -a /etc/skel/.bashrc
|
||||
|
||||
# set system node.js as default one
|
||||
nvm alias default system
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-pipx-packages.sh
|
||||
## Desc: Install tools via pipx
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
export PATH="$PATH:/opt/pipx_bin"
|
||||
|
||||
pipx_packages=$(get_toolset_value ".pipx[] .package")
|
||||
|
||||
if [ -z "$pipx_packages" ]; then
|
||||
echo "No pipx packages defined in toolset. Skipping pipx installation."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for package in $pipx_packages; do
|
||||
echo "Install $package into default python"
|
||||
pipx install $package
|
||||
|
||||
# https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
|
||||
# Install ansible into an existing ansible-core Virtual Environment
|
||||
if [[ $package == "ansible-core" ]]; then
|
||||
pipx inject $package ansible
|
||||
fi
|
||||
done
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-powershell.sh
|
||||
## Desc: Install PowerShell Core
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
pwsh_version=$(get_toolset_value .pwsh.version)
|
||||
|
||||
# Install Powershell
|
||||
|
||||
apt-get install powershell=$pwsh_version*
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-python.sh
|
||||
## Desc: Install Python 3
|
||||
################################################################################
|
||||
|
||||
set -e
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
|
||||
# Install Python, Python 3, pip, pip3
|
||||
apt-get install -y --no-install-recommends python3 python3-dev python3-pip python3-venv
|
||||
|
||||
if is_ubuntu24; then
|
||||
# Create temporary workaround to allow user to continue using pip
|
||||
sudo cat <<EOF > /etc/pip.conf
|
||||
[global]
|
||||
break-system-packages = true
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Install pipx
|
||||
# Set pipx custom directory
|
||||
export PIPX_BIN_DIR=/opt/pipx_bin
|
||||
export PIPX_HOME=/opt/pipx
|
||||
|
||||
python3 -m pip install pipx
|
||||
python3 -m pipx ensurepath
|
||||
|
||||
# Update /etc/environment
|
||||
set_etc_environment_variable "PIPX_BIN_DIR" $PIPX_BIN_DIR
|
||||
set_etc_environment_variable "PIPX_HOME" $PIPX_HOME
|
||||
prepend_etc_environment_path $PIPX_BIN_DIR
|
||||
|
||||
# Adding this dir to PATH will make installed pip commands are immediately available.
|
||||
prepend_etc_environment_path '$HOME/.local/bin'
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-yq.sh
|
||||
## Desc: Install yq - a command-line YAML, JSON and XML processor
|
||||
## Supply chain security: yq - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download yq
|
||||
yq_url=$(resolve_github_release_asset_url "mikefarah/yq" "endswith(\"yq_linux_amd64\")" "latest")
|
||||
binary_path=$(download_with_retry "${yq_url}")
|
||||
|
||||
# Supply chain security - yq
|
||||
hash_url=$(resolve_github_release_asset_url "mikefarah/yq" "endswith(\"checksums\")" "latest")
|
||||
external_hash=$(get_checksum_from_url "${hash_url}" "yq_linux_amd64 " "SHA256" "true" " " "19")
|
||||
use_checksum_comparison "$binary_path" "$external_hash"
|
||||
|
||||
# Install yq
|
||||
install "$binary_path" /usr/bin/yq
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install-zstd.sh
|
||||
## Desc: Install zstd
|
||||
## Supply chain security: zstd - checksum validation
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
|
||||
# Download zstd
|
||||
release_tag=$(curl -fsSL https://api.github.com/repos/facebook/zstd/releases/latest | jq -r '.tag_name')
|
||||
release_name="zstd-${release_tag//v}"
|
||||
download_url="https://github.com/facebook/zstd/releases/download/${release_tag}/${release_name}.tar.gz"
|
||||
archive_path=$(download_with_retry "${download_url}")
|
||||
|
||||
# Supply chain security - zstd
|
||||
external_hash=$(get_checksum_from_url "${download_url}.sha256" "${release_name}.tar.gz" "SHA256")
|
||||
use_checksum_comparison "$archive_path" "$external_hash"
|
||||
|
||||
# Install zstd
|
||||
apt-get install liblz4-dev
|
||||
tar xzf "$archive_path" -C /tmp
|
||||
|
||||
make -C "/tmp/${release_name}/contrib/pzstd" -j $(nproc) all
|
||||
make -C "/tmp/${release_name}" -j $(nproc) zstd-release
|
||||
|
||||
for copyprocess in zstd zstdless zstdgrep; do
|
||||
cp "/tmp/${release_name}/programs/${copyprocess}" /usr/local/bin/
|
||||
done
|
||||
|
||||
cp "/tmp/${release_name}/contrib/pzstd/pzstd" /usr/local/bin/
|
||||
|
||||
for symlink in zstdcat zstdmt unzstd; do
|
||||
ln -sf /usr/local/bin/zstd /usr/local/bin/${symlink}
|
||||
done
|
||||
@@ -0,0 +1,152 @@
|
||||
function Get-CommandResult {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs a command in bash and returns the output and exit code.
|
||||
|
||||
.DESCRIPTION
|
||||
Function runs a provided command in bash and returns the output and exit code as hashtable.
|
||||
|
||||
.PARAMETER Command
|
||||
The command to run.
|
||||
|
||||
.PARAMETER ExpectedExitCode
|
||||
The expected exit code. If the actual exit code does not match, an exception is thrown.
|
||||
|
||||
.PARAMETER Multiline
|
||||
If true, the output is returned as an array of strings. Otherwise, the output is returned as a single string.
|
||||
|
||||
.PARAMETER ValidateExitCode
|
||||
If true, the actual exit code is compared to the expected exit code.
|
||||
|
||||
.EXAMPLE
|
||||
$result = Get-CommandResult "ls -la"
|
||||
|
||||
This command runs "ls -la" in bash and returns the output and exit code as hashtable.
|
||||
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[string] $Command,
|
||||
[int[]] $ExpectedExitCode = 0,
|
||||
[switch] $Multiline,
|
||||
[bool] $ValidateExitCode = $true
|
||||
)
|
||||
|
||||
# Bash trick to suppress and show error output because some commands write to stderr (for example, "python --version")
|
||||
$stdout = & bash -c "$Command 2>&1"
|
||||
$exitCode = $LASTEXITCODE
|
||||
|
||||
if ($ValidateExitCode) {
|
||||
if ($ExpectedExitCode -notcontains $exitCode) {
|
||||
try {
|
||||
throw "StdOut: '$stdout' ExitCode: '$exitCode'"
|
||||
} catch {
|
||||
Write-Host $_.Exception.Message
|
||||
Write-Host $_.ScriptStackTrace
|
||||
exit $LASTEXITCODE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return @{
|
||||
Output = If ($Multiline -eq $true) { $stdout } else { [string] $stdout }
|
||||
ExitCode = $exitCode
|
||||
}
|
||||
}
|
||||
|
||||
function Test-IsUbuntu22 {
|
||||
return (lsb_release -rs) -eq "22.04"
|
||||
}
|
||||
|
||||
function Test-IsUbuntu24 {
|
||||
return (lsb_release -rs) -eq "24.04"
|
||||
}
|
||||
|
||||
function Get-ToolsetContent {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Retrieves the content of the toolset.json file.
|
||||
|
||||
.DESCRIPTION
|
||||
This function reads the toolset.json in path provided by INSTALLER_SCRIPT_FOLDER
|
||||
environment variable and returns the content as a PowerShell object.
|
||||
#>
|
||||
|
||||
$toolsetPath = Join-Path $env:INSTALLER_SCRIPT_FOLDER "toolset.json"
|
||||
$toolsetJson = Get-Content -Path $toolsetPath -Raw
|
||||
ConvertFrom-Json -InputObject $toolsetJson
|
||||
}
|
||||
|
||||
function Invoke-DownloadWithRetry {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Downloads a file from a given URL with retry functionality.
|
||||
|
||||
.DESCRIPTION
|
||||
The Invoke-DownloadWithRetry function downloads a file from the specified URL
|
||||
to the specified path. It includes retry functionality in case the download fails.
|
||||
|
||||
.PARAMETER Url
|
||||
The URL of the file to download.
|
||||
|
||||
.PARAMETER Path
|
||||
The path where the downloaded file will be saved. If not provided, a temporary path
|
||||
will be used.
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-DownloadWithRetry -Url "https://example.com/file.zip" -Path "/usr/local/bin"
|
||||
Downloads the file from the specified URL and saves it to the specified path.
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-DownloadWithRetry -Url "https://example.com/file.zip"
|
||||
Downloads the file from the specified URL and saves it to a temporary path.
|
||||
|
||||
.OUTPUTS
|
||||
The path where the downloaded file is saved.
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Url,
|
||||
[Alias("Destination")]
|
||||
[string] $DestinationPath
|
||||
)
|
||||
|
||||
if (-not $DestinationPath) {
|
||||
$invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''
|
||||
$re = "[{0}]" -f [RegEx]::Escape($invalidChars)
|
||||
$fileName = [IO.Path]::GetFileName($Url) -replace $re
|
||||
|
||||
if ([String]::IsNullOrEmpty($fileName)) {
|
||||
$fileName = [System.IO.Path]::GetRandomFileName()
|
||||
}
|
||||
$DestinationPath = Join-Path -Path "/tmp" -ChildPath $fileName
|
||||
}
|
||||
|
||||
Write-Host "Downloading package from $Url to $DestinationPath..."
|
||||
|
||||
$interval = 30
|
||||
$downloadStartTime = Get-Date
|
||||
for ($retries = 20; $retries -gt 0; $retries--) {
|
||||
try {
|
||||
$attemptStartTime = Get-Date
|
||||
Invoke-WebRequest -Uri $Url -Outfile $DestinationPath
|
||||
$attemptSeconds = [math]::Round(($(Get-Date) - $attemptStartTime).TotalSeconds, 2)
|
||||
Write-Host "Package downloaded in $attemptSeconds seconds"
|
||||
break
|
||||
} catch {
|
||||
$attemptSeconds = [math]::Round(($(Get-Date) - $attemptStartTime).TotalSeconds, 2)
|
||||
Write-Warning "Package download failed in $attemptSeconds seconds"
|
||||
Write-Warning $_.Exception.Message
|
||||
}
|
||||
|
||||
if ($retries -eq 0) {
|
||||
$totalSeconds = [math]::Round(($(Get-Date) - $downloadStartTime).TotalSeconds, 2)
|
||||
throw "Package download failed after $totalSeconds seconds"
|
||||
}
|
||||
|
||||
Write-Warning "Waiting $interval seconds before retrying (retries left: $retries)..."
|
||||
Start-Sleep -Seconds $interval
|
||||
}
|
||||
|
||||
return $DestinationPath
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
using module ../software-report-base/SoftwareReport.psm1
|
||||
using module ../software-report-base/SoftwareReport.Nodes.psm1
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
[string] $OutputDirectory
|
||||
)
|
||||
|
||||
$global:ErrorActionPreference = "Stop"
|
||||
$global:ErrorView = "NormalView"
|
||||
Set-StrictMode -Version Latest
|
||||
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Common.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Helpers.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "Common.Helpers.psm1") -DisableNameChecking
|
||||
Import-Module (Join-Path $PSScriptRoot "SoftwareReport.Tools.psm1") -DisableNameChecking
|
||||
|
||||
# Restore file owner in user profile
|
||||
sudo chown -R ${env:USER}: $env:HOME
|
||||
|
||||
# Software report
|
||||
$softwareReport = [SoftwareReport]::new("Ubuntu-Slim")
|
||||
$softwareReport.Root.AddToolVersion("OS Version:", $(Get-OSVersionFull))
|
||||
$softwareReport.Root.AddToolVersion("Image Version:", $env:IMAGE_VERSION)
|
||||
$softwareReport.Root.AddToolVersion("Systemd version:", $(Get-SystemdVersion))
|
||||
|
||||
$installedSoftware = $softwareReport.Root.AddHeader("Installed Software")
|
||||
|
||||
# Language and Runtime
|
||||
$languageAndRuntime = $installedSoftware.AddHeader("Language and Runtime")
|
||||
$languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
||||
$languageAndRuntime.AddToolVersion("Dash", $(Get-DashVersion))
|
||||
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
|
||||
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
||||
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
|
||||
|
||||
# Package Management
|
||||
$packageManagement = $installedSoftware.AddHeader("Package Management")
|
||||
$packageManagement.AddToolVersion("Npm", $(Get-NpmVersion))
|
||||
$packageManagement.AddToolVersion("Pip", $(Get-PipVersion))
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
|
||||
# Tools
|
||||
$tools = $installedSoftware.AddHeader("Tools")
|
||||
$tools.AddToolVersion("AzCopy", $(Get-AzCopyVersion))
|
||||
$tools.AddToolVersion("Bicep", $(Get-BicepVersion))
|
||||
$tools.AddToolVersion("Docker Compose v2", $(Get-DockerComposeV2Version))
|
||||
$tools.AddToolVersion("Docker-Buildx", $(Get-DockerBuildxVersion))
|
||||
$tools.AddToolVersion("Docker Client", $(Get-DockerClientVersion))
|
||||
$tools.AddToolVersion("Git", $(Get-GitVersion))
|
||||
$tools.AddToolVersion("Git LFS", $(Get-GitLFSVersion))
|
||||
$tools.AddToolVersion("Git-ftp", $(Get-GitFTPVersion))
|
||||
$tools.AddToolVersion("jq", $(Get-JqVersion))
|
||||
$tools.AddToolVersion("nvm", $(Get-NvmVersion))
|
||||
$tools.AddToolVersion("OpenSSL", $(Get-OpensslVersion))
|
||||
$tools.AddToolVersion("yq", $(Get-YqVersion))
|
||||
$tools.AddToolVersion("zstd", $(Get-ZstdVersion))
|
||||
|
||||
# CLI Tools
|
||||
$cliTools = $installedSoftware.AddHeader("CLI Tools")
|
||||
$cliTools.AddToolVersion("AWS CLI", $(Get-AWSCliVersion))
|
||||
$cliTools.AddToolVersion("AWS CLI Session Manager Plugin", $(Get-AWSCliSessionManagerPluginVersion))
|
||||
$cliTools.AddToolVersion("AWS SAM CLI", $(Get-AWSSAMVersion))
|
||||
$cliTools.AddToolVersion("Azure CLI", $(Get-AzureCliVersion))
|
||||
$cliTools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion))
|
||||
$cliTools.AddToolVersion("GitHub CLI", $(Get-GitHubCliVersion))
|
||||
$cliTools.AddToolVersion("Google Cloud CLI", $(Get-GoogleCloudCLIVersion))
|
||||
|
||||
# PowerShell Tools
|
||||
$powerShellTools = $installedSoftware.AddHeader("PowerShell Tools")
|
||||
$powerShellTools.AddToolVersion("PowerShell", $(Get-PowershellVersion))
|
||||
|
||||
$installedSoftware.AddHeader("Installed apt packages").AddTable($(Get-AptPackages))
|
||||
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/software-report.md" -Encoding UTF8NoBOM
|
||||
@@ -0,0 +1,81 @@
|
||||
function Get-BashVersion {
|
||||
$version = bash -c 'echo ${BASH_VERSION}'
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-DashVersion {
|
||||
$version = dpkg-query -W -f '${Version}' dash
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-NodeVersion {
|
||||
$nodeVersion = $(node --version).Substring(1)
|
||||
return $nodeVersion
|
||||
}
|
||||
|
||||
function Get-OpensslVersion {
|
||||
$opensslVersion = $(dpkg-query -W -f '${Version}' openssl)
|
||||
return $opensslVersion
|
||||
}
|
||||
|
||||
function Get-PerlVersion {
|
||||
$version = $(perl -e 'print substr($^V,1)')
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-PythonVersion {
|
||||
$result = Get-CommandResult "python --version"
|
||||
$version = $result.Output | Get-StringPart -Part 1
|
||||
return $version
|
||||
}
|
||||
|
||||
function Get-PowershellVersion {
|
||||
$pwshVersion = $(pwsh --version) | Get-StringPart -Part 1
|
||||
return $pwshVersion
|
||||
}
|
||||
|
||||
function Get-NpmVersion {
|
||||
$npmVersion = npm --version
|
||||
return $npmVersion
|
||||
}
|
||||
|
||||
function Get-PipVersion {
|
||||
$pipVersion = pip --version | Get-StringPart -Part 1
|
||||
return $pipVersion
|
||||
}
|
||||
|
||||
function Get-Pip3Version {
|
||||
$pip3Version = pip3 --version | Get-StringPart -Part 1
|
||||
return $pip3Version
|
||||
}
|
||||
|
||||
function Get-AptPackages {
|
||||
$apt = (Get-ToolsetContent).Apt
|
||||
$output = @()
|
||||
ForEach ($pkg in ($apt.vital_packages + $apt.common_packages + $apt.cmd_packages)) {
|
||||
$version = $(dpkg-query -W -f '${Version}' $pkg)
|
||||
if ($null -eq $version) {
|
||||
$version = $(dpkg-query -W -f '${Version}' "$pkg*")
|
||||
}
|
||||
|
||||
$version = $version -replace '~','\~'
|
||||
|
||||
$output += [PSCustomObject] @{
|
||||
Name = $pkg
|
||||
Version = $version
|
||||
}
|
||||
}
|
||||
return ($output | Sort-Object Name)
|
||||
}
|
||||
|
||||
function Get-PipxVersion {
|
||||
$result = (Get-CommandResult "pipx --version").Output
|
||||
$result -match "(?<version>\d+\.\d+\.\d+\.?\d*)" | Out-Null
|
||||
return $Matches.Version
|
||||
}
|
||||
|
||||
function Get-SystemdVersion {
|
||||
$matchCollection = [regex]::Matches((systemctl --version | head -n 1), "\((.*?)\)")
|
||||
$result = foreach ($match in $matchCollection) {$match.Groups[1].Value}
|
||||
return $result
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
function Get-StringPart {
|
||||
param (
|
||||
[Parameter(ValueFromPipeline)]
|
||||
[string] $ToolOutput,
|
||||
[string] $Delimiter = " ",
|
||||
[int[]] $Part
|
||||
)
|
||||
|
||||
$parts = $ToolOutput.Split($Delimiter, [System.StringSplitOptions]::RemoveEmptyEntries)
|
||||
$selectedParts = $parts[$Part]
|
||||
return [string]::Join($Delimiter, $selectedParts)
|
||||
}
|
||||
|
||||
function Get-PathWithLink {
|
||||
param (
|
||||
[string] $InputPath
|
||||
)
|
||||
|
||||
$link = Get-Item $InputPath | Select-Object -ExpandProperty Target
|
||||
if (-not [string]::IsNullOrEmpty($link)) {
|
||||
return "${InputPath} -> ${link}"
|
||||
}
|
||||
return "${InputPath}"
|
||||
}
|
||||
|
||||
function Get-OSVersionShort {
|
||||
$(Get-OSVersionFull) | Get-StringPart -Delimiter '.' -Part 0,1
|
||||
}
|
||||
|
||||
function Get-OSVersionFull {
|
||||
lsb_release -ds | Get-StringPart -Part 1, 2
|
||||
}
|
||||
|
||||
function Get-KernelVersion {
|
||||
$kernelVersion = uname -r
|
||||
return $kernelVersion
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
function Get-AzCopyVersion {
|
||||
$azcopyVersion = [string]$(azcopy --version) | Get-StringPart -Part 2
|
||||
return "$azcopyVersion - available by ``azcopy`` and ``azcopy10`` aliases"
|
||||
}
|
||||
|
||||
function Get-BicepVersion {
|
||||
(bicep --version | Out-String) -match "bicep cli version (?<version>\d+\.\d+\.\d+)" | Out-Null
|
||||
return $Matches.Version
|
||||
}
|
||||
|
||||
function Get-GitVersion {
|
||||
$gitVersion = git --version | Get-StringPart -Part -1
|
||||
return $gitVersion
|
||||
}
|
||||
|
||||
function Get-GitLFSVersion {
|
||||
$result = Get-CommandResult "git-lfs --version"
|
||||
$gitlfsversion = $result.Output | Get-StringPart -Part 0 | Get-StringPart -Part 1 -Delimiter "/"
|
||||
return $gitlfsversion
|
||||
}
|
||||
|
||||
function Get-GitFTPVersion {
|
||||
$gitftpVersion = git-ftp --version | Get-StringPart -Part 2
|
||||
return $gitftpVersion
|
||||
}
|
||||
|
||||
function Get-GoogleCloudCLIVersion {
|
||||
return (gcloud --version | Select-Object -First 1) | Get-StringPart -Part 3
|
||||
}
|
||||
|
||||
function Get-NvmVersion {
|
||||
$nvmVersion = bash -c "source /etc/skel/.nvm/nvm.sh && nvm --version"
|
||||
return $nvmVersion
|
||||
}
|
||||
|
||||
function Get-JqVersion {
|
||||
$jqVersion = jq --version | Get-StringPart -Part 1 -Delimiter "-"
|
||||
return $jqVersion
|
||||
}
|
||||
|
||||
function Get-AzureCliVersion {
|
||||
$azcliVersion = (az version | ConvertFrom-Json).'azure-cli'
|
||||
return $azcliVersion
|
||||
}
|
||||
|
||||
function Get-AzureDevopsVersion {
|
||||
$azdevopsVersion = (az version | ConvertFrom-Json).extensions.'azure-devops'
|
||||
return $azdevopsVersion
|
||||
}
|
||||
|
||||
function Get-AWSCliVersion {
|
||||
$result = Get-CommandResult "aws --version"
|
||||
$awsVersion = $result.Output | Get-StringPart -Part 0 | Get-StringPart -Part 1 -Delimiter "/"
|
||||
return $awsVersion
|
||||
}
|
||||
|
||||
function Get-AWSCliSessionManagerPluginVersion {
|
||||
$result = (Get-CommandResult "session-manager-plugin --version").Output
|
||||
return $result
|
||||
}
|
||||
|
||||
function Get-AWSSAMVersion {
|
||||
return $(sam --version | Get-StringPart -Part -1)
|
||||
}
|
||||
|
||||
function Get-GitHubCliVersion {
|
||||
$ghVersion = gh --version | Select-String "gh version" | Get-StringPart -Part 2
|
||||
return $ghVersion
|
||||
}
|
||||
|
||||
function Get-ZstdVersion {
|
||||
$zstdVersion = zstd --version | Get-StringPart -Part 1 -Delimiter "v" | Get-StringPart -Part 0 -Delimiter ","
|
||||
return "$zstdVersion"
|
||||
}
|
||||
|
||||
function Get-YqVersion {
|
||||
$yqVersion = $(yq -V) | Get-StringPart -Part 3
|
||||
return $yqVersion.TrimStart("v").Trim()
|
||||
}
|
||||
|
||||
function Get-DockerComposeV2Version {
|
||||
$composeVersion = docker compose version | Get-StringPart -Part 3 | Get-StringPart -Part 0 -Delimiter "v"
|
||||
return $composeVersion
|
||||
}
|
||||
|
||||
function Get-DockerClientVersion {
|
||||
$dockerClientVersion = sudo docker version --format '{{.Client.Version}}'
|
||||
return $dockerClientVersion
|
||||
}
|
||||
|
||||
function Get-DockerBuildxVersion {
|
||||
$buildxVersion = docker buildx version | Get-StringPart -Part 1 | Get-StringPart -Part 0 -Delimiter "v"
|
||||
return $buildxVersion
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
# /opt/entrypoint.sh
|
||||
|
||||
# Load environment variables from file
|
||||
set -a
|
||||
source /etc/environment
|
||||
set +a
|
||||
|
||||
# Execute the actual command
|
||||
exec "$@"
|
||||
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# delete all .gz and rotated file
|
||||
find /var/log -type f -regex ".*\.gz$" -delete
|
||||
find /var/log -type f -regex ".*\.[0-9]$" -delete
|
||||
|
||||
# wipe log files
|
||||
find /var/log/ -type f -exec cp /dev/null {} \;
|
||||
|
||||
rm -rf /tmp/downloads /tmp/installers
|
||||
|
||||
apt-get clean
|
||||
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: etc-environment.sh
|
||||
## Desc: Helper functions for source and modify /etc/environment
|
||||
################################################################################
|
||||
|
||||
# NB: sed expression use '%' as a delimiter in order to simplify handling
|
||||
# values containing slashes (i.e. directory path)
|
||||
# The values containing '%' will break the functions
|
||||
|
||||
get_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
|
||||
# remove `variable_name=` and possible quotes from the line
|
||||
grep "^${variable_name}=" /etc/environment | sed -E "s%^${variable_name}=\"?([^\"]+)\"?.*$%\1%"
|
||||
}
|
||||
|
||||
add_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
echo "${variable_name}=${variable_value}" | sudo tee -a /etc/environment
|
||||
}
|
||||
|
||||
replace_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
# modify /etc/environment in place by replacing a string that begins with variable_name
|
||||
sudo sed -i -e "s%^${variable_name}=.*$%${variable_name}=${variable_value}%" /etc/environment
|
||||
}
|
||||
|
||||
set_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local variable_value=$2
|
||||
|
||||
if grep "^${variable_name}=" /etc/environment > /dev/null; then
|
||||
replace_etc_environment_variable $variable_name $variable_value
|
||||
else
|
||||
add_etc_environment_variable $variable_name $variable_value
|
||||
fi
|
||||
}
|
||||
|
||||
prepend_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local element=$2
|
||||
|
||||
# TODO: handle the case if the variable does not exist
|
||||
existing_value=$(get_etc_environment_variable "${variable_name}")
|
||||
set_etc_environment_variable "${variable_name}" "${element}:${existing_value}"
|
||||
}
|
||||
|
||||
append_etc_environment_variable() {
|
||||
local variable_name=$1
|
||||
local element=$2
|
||||
|
||||
# TODO: handle the case if the variable does not exist
|
||||
existing_value=$(get_etc_environment_variable "${variable_name}")
|
||||
set_etc_environment_variable "${variable_name}" "${existing_value}:${element}"
|
||||
}
|
||||
|
||||
prepend_etc_environment_path() {
|
||||
local element=$1
|
||||
|
||||
prepend_etc_environment_variable PATH "${element}"
|
||||
}
|
||||
|
||||
append_etc_environment_path() {
|
||||
local element=$1
|
||||
|
||||
append_etc_environment_variable PATH "${element}"
|
||||
}
|
||||
|
||||
# Process /etc/environment as if it were shell script with `export VAR=...` expressions
|
||||
# The PATH variable is handled specially in order to do not override the existing PATH
|
||||
# variable. The value of PATH variable read from /etc/environment is added to the end
|
||||
# of value of the exiting PATH variable exactly as it would happen with real PAM app read
|
||||
# /etc/environment
|
||||
#
|
||||
# TODO: there might be the others variables to be processed in the same way as "PATH" variable
|
||||
# ie MANPATH, INFOPATH, LD_*, etc. In the current implementation the values from /etc/environment
|
||||
# replace the values of the current environment
|
||||
reload_etc_environment() {
|
||||
# add `export ` to every variable of /etc/environment except PATH and eval the result shell script
|
||||
eval $(grep -v '^PATH=' /etc/environment | sed -e 's%^%export %')
|
||||
# handle PATH specially
|
||||
etc_path=$(get_etc_environment_variable PATH)
|
||||
export PATH="$PATH:$etc_path"
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: install.sh
|
||||
## Desc: Helper functions for installing tools
|
||||
################################################################################
|
||||
|
||||
download_with_retry() {
|
||||
local url=$1
|
||||
local download_path=$2
|
||||
|
||||
if [ -z "$download_path" ]; then
|
||||
mkdir -p /tmp/downloads
|
||||
download_path="/tmp/downloads/$(basename "$url")"
|
||||
fi
|
||||
|
||||
echo "Downloading package from $url to $download_path..." >&2
|
||||
|
||||
interval=30
|
||||
download_start_time=$(date +%s)
|
||||
|
||||
for ((retries=20; retries>0; retries--)); do
|
||||
attempt_start_time=$(date +%s)
|
||||
if http_code=$(curl -4sSLo "$download_path" "$url" -w '%{http_code}'); then
|
||||
attempt_seconds=$(($(date +%s) - attempt_start_time))
|
||||
if [ "$http_code" -eq 200 ]; then
|
||||
echo "Package downloaded in $attempt_seconds seconds" >&2
|
||||
break
|
||||
else
|
||||
echo "Received HTTP status code $http_code after $attempt_seconds seconds" >&2
|
||||
fi
|
||||
else
|
||||
attempt_seconds=$(($(date +%s) - attempt_start_time))
|
||||
echo "Package download failed in $attempt_seconds seconds" >&2
|
||||
fi
|
||||
|
||||
if [ "$retries" -le 1 ]; then
|
||||
total_seconds=$(($(date +%s) - download_start_time))
|
||||
echo "Package download failed after $total_seconds seconds" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Waiting $interval seconds before retrying (retries left: $retries)..." >&2
|
||||
sleep $interval
|
||||
done
|
||||
|
||||
echo "$download_path"
|
||||
}
|
||||
|
||||
get_github_releases_by_version() {
|
||||
local repo=$1
|
||||
local version=${2:-".+"}
|
||||
local allow_pre_release=${3:-false}
|
||||
local with_assets_only=${4:-false}
|
||||
|
||||
page_size="100"
|
||||
|
||||
json=$(curl -fsSL "https://api.github.com/repos/${repo}/releases?per_page=${page_size}")
|
||||
|
||||
if [[ -z "$json" ]]; then
|
||||
echo "Failed to get releases" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $with_assets_only == "true" ]]; then
|
||||
json=$(echo $json | jq -r '.[] | select(.assets | length > 0)')
|
||||
else
|
||||
json=$(echo $json | jq -r '.[]')
|
||||
fi
|
||||
|
||||
if [[ $allow_pre_release == "true" ]]; then
|
||||
json=$(echo $json | jq -r '.')
|
||||
else
|
||||
json=$(echo $json | jq -r '. | select(.prerelease==false)')
|
||||
fi
|
||||
|
||||
# Filter out rc/beta/etc releases, convert to numeric version and sort
|
||||
json=$(echo $json | jq '. | select(.tag_name | test(".*-[a-z]|beta") | not)' | jq '.tag_name |= gsub("[^\\d.]"; "")' | jq -s 'sort_by(.tag_name | split(".") | map(tonumber))')
|
||||
|
||||
# Select releases matching version
|
||||
if [[ $version == "latest" ]]; then
|
||||
json_filtered=$(echo $json | jq .[-1])
|
||||
elif [[ $version == *"+"* ]] || [[ $version == *"*"* ]]; then
|
||||
json_filtered=$(echo $json | jq --arg version $version '.[] | select(.tag_name | test($version))')
|
||||
else
|
||||
json_filtered=$(echo $json | jq --arg version $version '.[] | select(.tag_name | contains($version))')
|
||||
fi
|
||||
|
||||
if [[ -z "$json_filtered" ]]; then
|
||||
echo "Failed to get releases from ${repo} matching version ${version}" >&2
|
||||
echo "Available versions: $(echo "$json" | jq -r '.tag_name')" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo $json_filtered
|
||||
}
|
||||
|
||||
resolve_github_release_asset_url() {
|
||||
local repo=$1
|
||||
local url_filter=$2
|
||||
local version=${3:-".+"}
|
||||
local allow_pre_release=${4:-false}
|
||||
local allow_multiple_matches=${5:-false}
|
||||
|
||||
matching_releases=$(get_github_releases_by_version "${repo}" "${version}" "${allow_pre_release}" "true")
|
||||
matched_url=$(echo $matching_releases | jq -r ".assets[].browser_download_url | select(${url_filter})")
|
||||
|
||||
if [[ -z "$matched_url" ]]; then
|
||||
echo "Found no download urls matching pattern: ${url_filter}" >&2
|
||||
echo "Available download urls: $(echo "$matching_releases" | jq -r '.assets[].browser_download_url')" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$(echo "$matched_url" | wc -l)" -gt 1 ]]; then
|
||||
if [[ $allow_multiple_matches == "true" ]]; then
|
||||
matched_url=$(echo "$matched_url" | tail -n 1)
|
||||
else
|
||||
echo "Multiple matches found for ${version} version and ${url_filter} URL filter. Please make filters more specific" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $matched_url
|
||||
}
|
||||
|
||||
get_checksum_from_github_release() {
|
||||
local repo=$1
|
||||
local file_name=$2
|
||||
local version=${3:-".+"}
|
||||
local hash_type=$4
|
||||
local allow_pre_release=${5:-false}
|
||||
|
||||
if [[ -z "$file_name" ]]; then
|
||||
echo "File name is not specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$hash_type" == "SHA256" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{64}"
|
||||
elif [[ "$hash_type" == "SHA512" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{128}"
|
||||
else
|
||||
echo "Unknown hash type: ${hash_type}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
matching_releases=$(get_github_releases_by_version "${repo}" "${version}" "${allow_pre_release}" "true")
|
||||
matched_line=$(printf "$(echo $matching_releases | jq '.body')\n" | grep "$file_name")
|
||||
|
||||
if [[ -z "$matched_line" ]]; then
|
||||
echo "File name ${file_name} not found in release body" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$(echo "$matched_line" | wc -l)" -gt 1 ]]; then
|
||||
echo "Multiple matches found for ${file_name} in release body: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
hash=$(echo $matched_line | grep -oP "$hash_pattern")
|
||||
|
||||
if [[ -z "$hash" ]]; then
|
||||
echo "Found ${file_name} in body of release, but failed to get hash from it: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$hash"
|
||||
}
|
||||
|
||||
get_checksum_from_url() {
|
||||
local url=$1
|
||||
local file_name=$2
|
||||
local hash_type=$3
|
||||
local use_custom_search_pattern=${4:-false}
|
||||
local delimiter=${5:-' '}
|
||||
local word_number=${6:-1}
|
||||
|
||||
if [[ "$hash_type" == "SHA256" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{64}"
|
||||
elif [[ "$hash_type" == "SHA512" ]]; then
|
||||
hash_pattern="[A-Fa-f0-9]{128}"
|
||||
else
|
||||
echo "Unknown hash type: ${hash_type}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
checksums_file_path=$(download_with_retry "$url")
|
||||
checksums=$(cat "$checksums_file_path")
|
||||
rm "$checksums_file_path"
|
||||
|
||||
matched_line=$(printf "$checksums\n" | grep "$file_name")
|
||||
|
||||
if [[ "$(echo "$matched_line" | wc -l)" -gt 1 ]]; then
|
||||
echo "Found multiple lines matching file name ${file_name} in checksum file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$matched_line" ]]; then
|
||||
echo "File name ${file_name} not found in checksum file." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $use_custom_search_pattern == "true" ]]; then
|
||||
hash=$(echo "$matched_line" | sed 's/ */ /g' | cut -d "$delimiter" -f "$word_number" | tr -d -c '[:alnum:]')
|
||||
else
|
||||
hash=$(echo $matched_line | grep -oP "$hash_pattern")
|
||||
fi
|
||||
|
||||
if [[ -z "$hash" ]]; then
|
||||
echo "Found ${file_name} in checksum file, but failed to get hash from it: ${matched_line}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$hash"
|
||||
}
|
||||
|
||||
use_checksum_comparison() {
|
||||
local file_path=$1
|
||||
local checksum=$2
|
||||
local sha_type=${3:-"256"}
|
||||
|
||||
echo "Performing checksum verification"
|
||||
|
||||
if [[ ! -f "$file_path" ]]; then
|
||||
echo "File not found: $file_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local_file_hash=$(shasum --algorithm "$sha_type" "$file_path" | awk '{print $1}')
|
||||
|
||||
if [[ "$local_file_hash" != "$checksum" ]]; then
|
||||
echo "Checksum verification failed. Expected hash: $checksum; Actual hash: $local_file_hash."
|
||||
exit 1
|
||||
else
|
||||
echo "Checksum verification passed. Expected hash: $checksum; Actual hash: $local_file_hash."
|
||||
fi
|
||||
}
|
||||
|
||||
get_toolset_value() {
|
||||
local toolset_path="${INSTALLER_SCRIPT_FOLDER}/toolset.json"
|
||||
local query=$1
|
||||
|
||||
echo "$(jq -r "$query" $toolset_path)"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash -e
|
||||
################################################################################
|
||||
## File: os.sh
|
||||
## Desc: Helper functions for OS releases
|
||||
################################################################################
|
||||
|
||||
is_ubuntu22() {
|
||||
lsb_release -rs | grep -q '22.04'
|
||||
}
|
||||
|
||||
is_ubuntu24() {
|
||||
lsb_release -rs | grep -q '24.04'
|
||||
}
|
||||
Executable
+101
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
# This script builds and runs various tests on the ubuntu-slim Docker image
|
||||
# to ensure it contains the expected software and configurations.
|
||||
# The build and test workflows for docker images expect this script to be present.
|
||||
#
|
||||
# Usage: test.sh [IMAGE_NAME]
|
||||
# If IMAGE_NAME is not provided, defaults to ubuntu-slim:test
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [IMAGE_NAME]"
|
||||
echo ""
|
||||
echo "Test a Docker image to ensure it contains the expected software and configurations."
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " IMAGE_NAME Docker image name to test (default: ubuntu-slim:test)"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Test ubuntu-slim:test (builds image first)"
|
||||
echo " $0 my-registry/ubuntu:latest # Test existing image"
|
||||
echo " $0 ubuntu-slim:v1.2.3 # Test tagged image"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
}
|
||||
|
||||
# Handle help flags
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set the image name from parameter or use default
|
||||
IMAGE_NAME="${1:-ubuntu-slim:test}"
|
||||
|
||||
echo "Testing image: $IMAGE_NAME"
|
||||
|
||||
run_test() {
|
||||
local desc="$1"
|
||||
shift
|
||||
if output=$(docker run --rm "$IMAGE_NAME" "$@" 2>&1); then
|
||||
echo "PASS: $desc"
|
||||
echo "$output" | sed 's/^/ /'
|
||||
else
|
||||
echo "FAIL: $desc"
|
||||
echo "$output" | sed 's/^/ /'
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Build the image only if using the default name (for backward compatibility)
|
||||
if [[ "$IMAGE_NAME" == "ubuntu-slim:test" ]]; then
|
||||
echo "Building image: $IMAGE_NAME"
|
||||
if ! docker build --no-cache --debug --progress plain -t "$IMAGE_NAME" .; then
|
||||
echo "Error: Docker build failed"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# Check if the image exists
|
||||
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||
echo "Error: Image '$IMAGE_NAME' does not exist. Please build it first or provide a valid image name."
|
||||
echo "Run '$0 --help' for usage information."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Running tests on image: $IMAGE_NAME"
|
||||
|
||||
docker history --no-trunc "$IMAGE_NAME"
|
||||
docker inspect -f "{{ .Size }}" "$IMAGE_NAME" | numfmt --to=iec | sed 's/^/Image size: /'
|
||||
|
||||
# Ensure key software is installed and runnable
|
||||
run_test "GitHub CLI is installed" gh --version
|
||||
run_test "Azure CLI is installed" az version
|
||||
run_test "AWS CLI is installed" aws --version
|
||||
run_test "Session Manager plugin is installed" session-manager-plugin --version
|
||||
run_test "AWS SAM CLI is installed" sam --version
|
||||
run_test "jq is installed" jq --version
|
||||
run_test "git is installed" git --version
|
||||
run_test "node is installed" node --version
|
||||
run_test "npm is installed" npm --version
|
||||
run_test "python3 is installed" python3 --version
|
||||
run_test "python is aliased" python --version
|
||||
run_test "pipx is installed" pipx --version
|
||||
run_test "curl is installed" curl --version
|
||||
run_test "wget is installed" wget --version
|
||||
run_test "yq is installed" yq --version
|
||||
run_test "parallel is installed" parallel --version
|
||||
run_test "bc is installed" bc --version
|
||||
run_test "zstd is installed" zstd --version
|
||||
run_test "google cloud SDK is installed" gcloud --version
|
||||
run_test "git lfs is installed" git lfs version
|
||||
run_test "powershell is installed" pwsh --version
|
||||
run_test "docker-cli is installed" docker --version
|
||||
run_test "docker compose is installed" docker compose version
|
||||
run_test "docker buildx is installed" docker buildx version
|
||||
|
||||
# Quick check: ensure the imagedata JSON file was created during image build
|
||||
run_test "imagedata JSON file exists" test -f /imagegeneration/imagedata.json
|
||||
@@ -0,0 +1,109 @@
|
||||
{
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "node",
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "linux",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CodeQL",
|
||||
"platform" : "linux",
|
||||
"arch": "x64",
|
||||
"versions": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"apt": {
|
||||
"vital_packages": [
|
||||
"apt-utils",
|
||||
"bzip2",
|
||||
"ca-certificates",
|
||||
"curl",
|
||||
"g++",
|
||||
"gcc",
|
||||
"make",
|
||||
"jq",
|
||||
"tar",
|
||||
"unzip",
|
||||
"wget"
|
||||
],
|
||||
"common_packages": [
|
||||
"autoconf",
|
||||
"automake",
|
||||
"bc",
|
||||
"dbus",
|
||||
"dnsutils",
|
||||
"dpkg",
|
||||
"dpkg-dev",
|
||||
"fakeroot",
|
||||
"fonts-noto-color-emoji",
|
||||
"gnupg2",
|
||||
"iproute2",
|
||||
"iputils-ping",
|
||||
"libyaml-dev",
|
||||
"libtool",
|
||||
"libssl-dev",
|
||||
"libsqlite3-dev",
|
||||
"locales",
|
||||
"lzma",
|
||||
"mercurial",
|
||||
"openssh-client",
|
||||
"p7zip-rar",
|
||||
"pkg-config",
|
||||
"python-is-python3",
|
||||
"rpm",
|
||||
"texinfo",
|
||||
"tk",
|
||||
"tree",
|
||||
"tzdata",
|
||||
"upx",
|
||||
"xvfb",
|
||||
"xz-utils",
|
||||
"zsync"
|
||||
],
|
||||
"cmd_packages": [
|
||||
"acl",
|
||||
"binutils",
|
||||
"libnss3-tools",
|
||||
"coreutils",
|
||||
"file",
|
||||
"findutils",
|
||||
"flex",
|
||||
"ftp",
|
||||
"haveged",
|
||||
"lz4",
|
||||
"netcat-openbsd",
|
||||
"net-tools",
|
||||
"p7zip-full",
|
||||
"parallel",
|
||||
"patchelf",
|
||||
"pigz",
|
||||
"pollinate",
|
||||
"rsync",
|
||||
"shellcheck",
|
||||
"sqlite3",
|
||||
"ssh",
|
||||
"sshpass",
|
||||
"sudo",
|
||||
"systemd-coredump",
|
||||
"telnet",
|
||||
"time",
|
||||
"zip"
|
||||
]
|
||||
},
|
||||
"brew": [
|
||||
],
|
||||
"node": {
|
||||
"default": "24"
|
||||
},
|
||||
"node_modules": [ ],
|
||||
"pwsh": {
|
||||
"version": "7.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
# Ubuntu-Slim
|
||||
- OS Version: 24.04.3 LTS
|
||||
- Image Version: 20260120.46.1
|
||||
- Systemd version: 255.4-1ubuntu8.12
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- Bash 5.2.21(1)-release
|
||||
- Dash 0.5.12-6ubuntu5
|
||||
- Node.js 24.13.0
|
||||
- Perl 5.38.2
|
||||
- Python 3.12.3
|
||||
|
||||
### Package Management
|
||||
- Npm 11.6.2
|
||||
- Pip 24.0
|
||||
- Pip3 24.0
|
||||
- Pipx 1.8.0
|
||||
|
||||
### Tools
|
||||
- AzCopy 10.31.1 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bicep 0.39.26
|
||||
- Docker Compose v2 5.0.1
|
||||
- Docker-Buildx 0.30.1
|
||||
- Docker Client 29.1.5
|
||||
- Git 2.52.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- jq 1.7
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.13-0ubuntu3.6
|
||||
- yq 4.50.1
|
||||
- zstd 1.5.7
|
||||
|
||||
### CLI Tools
|
||||
- AWS CLI 2.33.2
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.151.0
|
||||
- Azure CLI 2.82.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.85.0
|
||||
- Google Cloud CLI 552.0.0
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.5.4
|
||||
|
||||
### Installed apt packages
|
||||
| Name | Version |
|
||||
| ---------------------- | ---------------------------- |
|
||||
| acl | 2.3.2-1build1.1 |
|
||||
| apt-utils | 2.8.3 |
|
||||
| autoconf | 2.71-3 |
|
||||
| automake | 1:1.16.5-1.3ubuntu1 |
|
||||
| bc | 1.07.1-3ubuntu4 |
|
||||
| binutils | 2.42-4ubuntu2.8 |
|
||||
| bzip2 | 1.0.8-5.1build0.1 |
|
||||
| ca-certificates | 20240203 |
|
||||
| coreutils | 9.4-3ubuntu6.1 |
|
||||
| curl | 8.5.0-2ubuntu10.6 |
|
||||
| dbus | 1.14.10-4ubuntu4.1 |
|
||||
| dnsutils | 1:9.18.39-0ubuntu0.24.04.2 |
|
||||
| dpkg | 1.22.6ubuntu6.5 |
|
||||
| dpkg-dev | 1.22.6ubuntu6.5 |
|
||||
| fakeroot | 1.33-1 |
|
||||
| file | 1:5.45-3build1 |
|
||||
| findutils | 4.9.0-5build1 |
|
||||
| flex | 2.6.4-8.2build1 |
|
||||
| fonts-noto-color-emoji | 2.047-0ubuntu0.24.04.1 |
|
||||
| ftp | 20230507-2build3 |
|
||||
| g++ | 4:13.2.0-7ubuntu1 |
|
||||
| gcc | 4:13.2.0-7ubuntu1 |
|
||||
| gnupg2 | 2.4.4-2ubuntu17.4 |
|
||||
| haveged | 1.9.14-1ubuntu2 |
|
||||
| iproute2 | 6.1.0-1ubuntu6.2 |
|
||||
| iputils-ping | 3:20240117-1ubuntu0.1 |
|
||||
| jq | 1.7.1-3ubuntu0.24.04.1 |
|
||||
| libnss3-tools | 2:3.98-1build1 |
|
||||
| libsqlite3-dev | 3.45.1-1ubuntu2.5 |
|
||||
| libssl-dev | 3.0.13-0ubuntu3.6 |
|
||||
| libtool | 2.4.7-7build1 |
|
||||
| libyaml-dev | 0.2.5-1build1 |
|
||||
| locales | 2.39-0ubuntu8.6 |
|
||||
| lz4 | 1.9.4-1build1.1 |
|
||||
| lzma | 9.22-2.2 |
|
||||
| make | 4.3-4.1build2 |
|
||||
| mercurial | 6.7.2-1ubuntu2.2 |
|
||||
| net-tools | 2.10-0.1ubuntu4.4 |
|
||||
| netcat-openbsd | 1.226-1ubuntu2 |
|
||||
| openssh-client | 1:9.6p1-3ubuntu13.14 |
|
||||
| p7zip-full | 16.02+transitional.1 |
|
||||
| p7zip-rar | 16.02+transitional.1 |
|
||||
| parallel | 20231122+ds-1 |
|
||||
| patchelf | 0.18.0-1.1build1 |
|
||||
| pigz | 2.8-1 |
|
||||
| pkg-config | 1.8.1-2build1 |
|
||||
| pollinate | 4.33-3.1ubuntu1.1 |
|
||||
| python-is-python3 | 3.11.4-1 |
|
||||
| rpm | 4.18.2+dfsg-2.1build2 |
|
||||
| rsync | 3.2.7-1ubuntu1.2 |
|
||||
| shellcheck | 0.9.0-1 |
|
||||
| sqlite3 | 3.45.1-1ubuntu2.5 |
|
||||
| ssh | 1:9.6p1-3ubuntu13.14 |
|
||||
| sshpass | 1.09-1 |
|
||||
| sudo | 1.9.15p5-3ubuntu5.24.04.1 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.12 |
|
||||
| tar | 1.35+dfsg-3build1 |
|
||||
| telnet | 0.17+2.5-3ubuntu4 |
|
||||
| texinfo | 7.1-3build2 |
|
||||
| time | 1.9-0.2build1 |
|
||||
| tk | 8.6.14build1 |
|
||||
| tree | 2.1.1-2ubuntu3.24.04.2 |
|
||||
| tzdata | 2025b-0ubuntu0.24.04.1 |
|
||||
| unzip | 6.0-28ubuntu4.1 |
|
||||
| upx | 4.2.2-3 |
|
||||
| wget | 1.21.4-1ubuntu4.1 |
|
||||
| xvfb | 2:21.1.12-1ubuntu1.5 |
|
||||
| xz-utils | 5.6.1+really5.4.5-1ubuntu0.2 |
|
||||
| zip | 3.0-13ubuntu0.2 |
|
||||
| zsync | 0.6.2-5build1 |
|
||||
@@ -0,0 +1,285 @@
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Ubuntu-Slim",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "OS Version:",
|
||||
"Version": "24.04.3 LTS"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Image Version:",
|
||||
"Version": "20260120.46.1"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Systemd version:",
|
||||
"Version": "255.4-1ubuntu8.12"
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Installed Software",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Language and Runtime",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Bash",
|
||||
"Version": "5.2.21(1)-release"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Dash",
|
||||
"Version": "0.5.12-6ubuntu5"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Node.js",
|
||||
"Version": "24.13.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Perl",
|
||||
"Version": "5.38.2"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Python",
|
||||
"Version": "3.12.3"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Package Management",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Npm",
|
||||
"Version": "11.6.2"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Pip",
|
||||
"Version": "24.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Pip3",
|
||||
"Version": "24.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Pipx",
|
||||
"Version": "1.8.0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Tools",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "AzCopy",
|
||||
"Version": "10.31.1 - available by `azcopy` and `azcopy10` aliases"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Bicep",
|
||||
"Version": "0.39.26"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Docker Compose v2",
|
||||
"Version": "5.0.1"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Docker-Buildx",
|
||||
"Version": "0.30.1"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Docker Client",
|
||||
"Version": "29.1.5"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Git",
|
||||
"Version": "2.52.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Git LFS",
|
||||
"Version": "3.7.1"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Git-ftp",
|
||||
"Version": "1.6.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "jq",
|
||||
"Version": "1.7"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "nvm",
|
||||
"Version": "0.40.3"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "OpenSSL",
|
||||
"Version": "3.0.13-0ubuntu3.6"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "yq",
|
||||
"Version": "4.50.1"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "zstd",
|
||||
"Version": "1.5.7"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "CLI Tools",
|
||||
"Children": [
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "AWS CLI",
|
||||
"Version": "2.33.2"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "AWS CLI Session Manager Plugin",
|
||||
"Version": "1.2.764.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "AWS SAM CLI",
|
||||
"Version": "1.151.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Azure CLI",
|
||||
"Version": "2.82.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Azure CLI (azure-devops)",
|
||||
"Version": "1.0.2"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "GitHub CLI",
|
||||
"Version": "2.85.0"
|
||||
},
|
||||
{
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "Google Cloud CLI",
|
||||
"Version": "552.0.0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "PowerShell Tools",
|
||||
"Children": {
|
||||
"NodeType": "ToolVersionNode",
|
||||
"ToolName": "PowerShell",
|
||||
"Version": "7.5.4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"NodeType": "HeaderNode",
|
||||
"Title": "Installed apt packages",
|
||||
"Children": {
|
||||
"NodeType": "TableNode",
|
||||
"Headers": "Name|Version",
|
||||
"Rows": [
|
||||
"acl|2.3.2-1build1.1",
|
||||
"apt-utils|2.8.3",
|
||||
"autoconf|2.71-3",
|
||||
"automake|1:1.16.5-1.3ubuntu1",
|
||||
"bc|1.07.1-3ubuntu4",
|
||||
"binutils|2.42-4ubuntu2.8",
|
||||
"bzip2|1.0.8-5.1build0.1",
|
||||
"ca-certificates|20240203",
|
||||
"coreutils|9.4-3ubuntu6.1",
|
||||
"curl|8.5.0-2ubuntu10.6",
|
||||
"dbus|1.14.10-4ubuntu4.1",
|
||||
"dnsutils|1:9.18.39-0ubuntu0.24.04.2",
|
||||
"dpkg|1.22.6ubuntu6.5",
|
||||
"dpkg-dev|1.22.6ubuntu6.5",
|
||||
"fakeroot|1.33-1",
|
||||
"file|1:5.45-3build1",
|
||||
"findutils|4.9.0-5build1",
|
||||
"flex|2.6.4-8.2build1",
|
||||
"fonts-noto-color-emoji|2.047-0ubuntu0.24.04.1",
|
||||
"ftp|20230507-2build3",
|
||||
"g++|4:13.2.0-7ubuntu1",
|
||||
"gcc|4:13.2.0-7ubuntu1",
|
||||
"gnupg2|2.4.4-2ubuntu17.4",
|
||||
"haveged|1.9.14-1ubuntu2",
|
||||
"iproute2|6.1.0-1ubuntu6.2",
|
||||
"iputils-ping|3:20240117-1ubuntu0.1",
|
||||
"jq|1.7.1-3ubuntu0.24.04.1",
|
||||
"libnss3-tools|2:3.98-1build1",
|
||||
"libsqlite3-dev|3.45.1-1ubuntu2.5",
|
||||
"libssl-dev|3.0.13-0ubuntu3.6",
|
||||
"libtool|2.4.7-7build1",
|
||||
"libyaml-dev|0.2.5-1build1",
|
||||
"locales|2.39-0ubuntu8.6",
|
||||
"lz4|1.9.4-1build1.1",
|
||||
"lzma|9.22-2.2",
|
||||
"make|4.3-4.1build2",
|
||||
"mercurial|6.7.2-1ubuntu2.2",
|
||||
"net-tools|2.10-0.1ubuntu4.4",
|
||||
"netcat-openbsd|1.226-1ubuntu2",
|
||||
"openssh-client|1:9.6p1-3ubuntu13.14",
|
||||
"p7zip-full|16.02+transitional.1",
|
||||
"p7zip-rar|16.02+transitional.1",
|
||||
"parallel|20231122+ds-1",
|
||||
"patchelf|0.18.0-1.1build1",
|
||||
"pigz|2.8-1",
|
||||
"pkg-config|1.8.1-2build1",
|
||||
"pollinate|4.33-3.1ubuntu1.1",
|
||||
"python-is-python3|3.11.4-1",
|
||||
"rpm|4.18.2+dfsg-2.1build2",
|
||||
"rsync|3.2.7-1ubuntu1.2",
|
||||
"shellcheck|0.9.0-1",
|
||||
"sqlite3|3.45.1-1ubuntu2.5",
|
||||
"ssh|1:9.6p1-3ubuntu13.14",
|
||||
"sshpass|1.09-1",
|
||||
"sudo|1.9.15p5-3ubuntu5.24.04.1",
|
||||
"systemd-coredump|255.4-1ubuntu8.12",
|
||||
"tar|1.35+dfsg-3build1",
|
||||
"telnet|0.17+2.5-3ubuntu4",
|
||||
"texinfo|7.1-3build2",
|
||||
"time|1.9-0.2build1",
|
||||
"tk|8.6.14build1",
|
||||
"tree|2.1.1-2ubuntu3.24.04.2",
|
||||
"tzdata|2025b-0ubuntu0.24.04.1",
|
||||
"unzip|6.0-28ubuntu4.1",
|
||||
"upx|4.2.2-3",
|
||||
"wget|1.21.4-1ubuntu4.1",
|
||||
"xvfb|2:21.1.12-1ubuntu1.5",
|
||||
"xz-utils|5.6.1+really5.4.5-1ubuntu0.2",
|
||||
"zip|3.0-13ubuntu0.2",
|
||||
"zsync|0.6.2-5build1"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+120
-139
@@ -1,11 +1,11 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
***
|
||||
# Ubuntu 22.04
|
||||
- OS Version: 22.04.5 LTS
|
||||
- Kernel Version: 6.8.0-1041-azure
|
||||
- Image Version: 20251125.163.1
|
||||
- Kernel Version: 6.8.0-1044-azure
|
||||
- Image Version: 20260322.68.1
|
||||
- Systemd version: 249.11-0ubuntu3.17
|
||||
|
||||
## Installed Software
|
||||
@@ -18,28 +18,28 @@
|
||||
- Dash 0.5.11+git20210903+057cd650a4ed-3build1
|
||||
- GNU C++: 10.5.0, 11.4.0, 12.3.0
|
||||
- GNU Fortran: 10.5.0, 11.4.0, 12.3.0
|
||||
- Julia 1.12.2
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Julia 1.12.5
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Mono 6.12.0.200
|
||||
- MSBuild 16.10.1.31701 (Mono 6.12.0.200)
|
||||
- Node.js 20.19.6
|
||||
- Node.js 20.20.1
|
||||
- Perl 5.34.0
|
||||
- Python 3.10.12
|
||||
- Ruby 3.0.2p107
|
||||
- Swift 6.2.1
|
||||
- Swift 6.2.4
|
||||
|
||||
### Package Management
|
||||
- cpan 1.64
|
||||
- Helm 3.19.2
|
||||
- Homebrew 5.0.3
|
||||
- Miniconda 25.9.1
|
||||
- Helm 3.20.1
|
||||
- Homebrew 5.1.0
|
||||
- Miniconda 26.1.1
|
||||
- Npm 10.8.2
|
||||
- NuGet 6.6.1.2
|
||||
- Pip 22.0.2
|
||||
- Pip3 22.0.2
|
||||
- Pipx 1.8.0
|
||||
- Pipx 1.10.1
|
||||
- RubyGems 3.3.5
|
||||
- Vcpkg (build from commit 9aee6e968f)
|
||||
- Vcpkg (build from commit b472291f29)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -58,117 +58,117 @@ to accomplish this.
|
||||
|
||||
### Project Management
|
||||
- Ant 1.10.12
|
||||
- Gradle 9.2.1
|
||||
- Lerna 9.0.1
|
||||
- Maven 3.9.11
|
||||
- Sbt 1.11.7
|
||||
- Gradle 9.4.1
|
||||
- Lerna 9.0.7
|
||||
- Maven 3.9.14
|
||||
- Sbt 1.12.6
|
||||
|
||||
### Tools
|
||||
- Ansible 2.17.14
|
||||
- apt-fast 1.10.0
|
||||
- AzCopy 10.31.0 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 8.4.2
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- AzCopy 10.32.2 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 9.0.1
|
||||
- Bazelisk 1.28.1
|
||||
- Bicep 0.41.2
|
||||
- Buildah 1.23.1
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Docker Amazon ECR Credential Helper 0.11.0
|
||||
- CodeQL Action Bundle 2.24.3
|
||||
- Docker Amazon ECR Credential Helper 0.12.0
|
||||
- Docker Compose v2 2.38.2
|
||||
- Docker-Buildx 0.30.1
|
||||
- Docker-Buildx 0.32.1
|
||||
- Docker Client 28.0.4
|
||||
- Docker Server 28.0.4
|
||||
- Fastlane 2.229.1
|
||||
- Git 2.52.0
|
||||
- Fastlane 2.232.2
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- Haveged 1.9.14
|
||||
- Heroku 10.15.1
|
||||
- Heroku 11.0.0
|
||||
- jq 1.6
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kustomize 5.8.0
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.3
|
||||
- Kustomize 5.8.1
|
||||
- Leiningen 2.12.0
|
||||
- MediaInfo 21.09
|
||||
- Mercurial 6.1.1
|
||||
- Minikube 1.37.0
|
||||
- Minikube 1.38.1
|
||||
- n 10.2.0
|
||||
- Newman 6.2.1
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.2-0ubuntu1.20
|
||||
- Packer 1.14.3
|
||||
- Parcel 2.16.1
|
||||
- Newman 6.2.2
|
||||
- nvm 0.40.4
|
||||
- OpenSSL 3.0.2-0ubuntu1.21
|
||||
- Packer 1.15.0
|
||||
- Parcel 2.16.4
|
||||
- Podman 3.4.4
|
||||
- Pulumi 3.208.0
|
||||
- R 4.5.2
|
||||
- Pulumi 3.227.0
|
||||
- R 4.5.3
|
||||
- Skopeo 1.4.1
|
||||
- Sphinx Open Source Search Server 2.2.11
|
||||
- SVN 1.14.1
|
||||
- Terraform 1.14.0
|
||||
- yamllint 1.37.1
|
||||
- yq 4.49.2
|
||||
- Terraform 1.14.7
|
||||
- yamllint 1.38.0
|
||||
- yq 4.52.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- Alibaba Cloud CLI 3.1.5
|
||||
- AWS CLI 2.32.5
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.148.0
|
||||
- Azure CLI 2.80.0
|
||||
- Alibaba Cloud CLI 3.3.2
|
||||
- AWS CLI 2.34.14
|
||||
- AWS CLI Session Manager Plugin 1.2.792.0
|
||||
- AWS SAM CLI 1.156.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- Google Cloud CLI 548.0.0
|
||||
- Netlify CLI 23.11.1
|
||||
- OpenShift CLI 4.20.5
|
||||
- ORAS CLI 1.3.0
|
||||
- Vercel CLI 48.10.13
|
||||
- GitHub CLI 2.88.1
|
||||
- Google Cloud CLI 561.0.0
|
||||
- Netlify CLI 24.4.0
|
||||
- OpenShift CLI 4.21.6
|
||||
- ORAS CLI 1.3.1
|
||||
- Vercel CLI 50.35.0
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.472+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.29+7 (default) | JAVA_HOME_11_X64 |
|
||||
| 17.0.17+10 | JAVA_HOME_17_X64 |
|
||||
| 21.0.9+10 | JAVA_HOME_21_X64 |
|
||||
| 25.0.1+8 | JAVA_HOME_25_X64 |
|
||||
| 8.0.482+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.30+7 (default) | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7 | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10 | JAVA_HOME_25_X64 |
|
||||
|
||||
### PHP Tools
|
||||
- PHP: 8.1.2
|
||||
- Composer 2.9.2
|
||||
- PHPUnit 8.5.48
|
||||
- Composer 2.9.5
|
||||
- PHPUnit 8.5.52
|
||||
```
|
||||
Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
```
|
||||
|
||||
### Haskell Tools
|
||||
- Cabal 3.16.0.0
|
||||
- GHC 9.12.2
|
||||
- Cabal 3.16.1.0
|
||||
- GHC 9.14.1
|
||||
- GHCup 0.1.50.2
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.0
|
||||
- Rust 1.94.0
|
||||
- Rustdoc 1.94.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.72.1
|
||||
- Cargo audit 0.22.0
|
||||
- Cargo clippy 0.1.91
|
||||
- Cargo audit 0.22.1
|
||||
- Cargo clippy 0.1.94
|
||||
- Cargo outdated 0.17.0
|
||||
- Cbindgen 0.29.2
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.175
|
||||
- ChromeDriver 142.0.7444.175
|
||||
- Chromium 142.0.7444.0
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Selenium server 4.38.0
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 146.0.7680.153
|
||||
- ChromeDriver 146.0.7680.153
|
||||
- Chromium 146.0.7680.0
|
||||
- Microsoft Edge 146.0.3856.72
|
||||
- Microsoft Edge WebDriver 146.0.3856.72
|
||||
- Selenium server 4.41.0
|
||||
- Mozilla Firefox 148.0.2
|
||||
- Geckodriver 0.36.0
|
||||
|
||||
#### Environment variables
|
||||
@@ -180,14 +180,14 @@ Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
| SELENIUM_JAR_PATH | /usr/share/java/selenium-server.jar |
|
||||
|
||||
### .NET Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.125, 8.0.206, 8.0.319, 8.0.419, 9.0.115, 9.0.205, 9.0.312, 10.0.105, 10.0.201
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### Databases
|
||||
- sqlite3 3.37.2
|
||||
|
||||
#### PostgreSQL
|
||||
- PostgreSQL 14.20
|
||||
- PostgreSQL 14.22
|
||||
```
|
||||
User: postgres
|
||||
PostgreSQL service is disabled by default.
|
||||
@@ -195,7 +195,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
```
|
||||
|
||||
#### MySQL
|
||||
- MySQL 8.0.44-0ubuntu0.22.04.1
|
||||
- MySQL 8.0.45-0ubuntu0.22.04.1
|
||||
```
|
||||
User: root
|
||||
Password: root
|
||||
@@ -205,50 +205,50 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
|
||||
#### MS SQL
|
||||
- sqlcmd 17.10.0001.1
|
||||
- SqlPackage 170.2.70.1
|
||||
- SqlPackage 170.3.93.6
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
#### Node.js
|
||||
- 20.19.5
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.1
|
||||
- 22.22.1
|
||||
- 24.14.0
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.14
|
||||
- 3.12.12
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.10.20
|
||||
- 3.11.15
|
||||
- 3.12.13
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### PyPy
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.16 [PyPy 7.3.19]
|
||||
- 3.11.13 [PyPy 7.3.20]
|
||||
- 3.11.15 [PyPy 7.3.21]
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.2.10
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Az: 14.6.0
|
||||
- MarkdownPS: 1.10
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Microsoft.Graph: 2.36.1
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceStatus | ListenPort |
|
||||
@@ -257,17 +257,17 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| nginx | 1.18.0 | /etc/nginx/nginx.conf | inactive | 80 |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 9.0 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.0 33.0.1 33.0.2 33.0.3<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1<br>3.31.5 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.3.13750724 (default) |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 9.0 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1<br>3.31.5 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -275,29 +275,10 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| ANDROID_HOME | /usr/local/lib/android/sdk |
|
||||
| ANDROID_NDK | /usr/local/lib/android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /usr/local/lib/android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /usr/local/lib/android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /usr/local/lib/android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /usr/local/lib/android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /usr/local/lib/android/sdk |
|
||||
|
||||
### Cached Docker images
|
||||
| Repository:Tag | Digest | Created |
|
||||
| -------------------- | ------------------------------------------------------------------------ | ---------- |
|
||||
| alpine:3.16 | sha256:452e7292acee0ee16c332324d7de05fa2c99f9994ecc9f0779c602916a672ae4 | 2024-01-27 |
|
||||
| alpine:3.17 | sha256:8fc3dacfb6d69da8d44e42390de777e48577085db99aa4e4af35f483eb08b989 | 2024-09-06 |
|
||||
| alpine:3.18 | sha256:de0eb0b3f2a47ba1eb89389859a9bd88b28e82f5826b6969ad604979713c2d4f | 2025-02-14 |
|
||||
| alpine:3.19 | sha256:6baf43584bcb78f2e5847d1de515f23499913ac9f12bdf834811a3145eb11ca1 | 2025-10-08 |
|
||||
| debian:10 | sha256:58ce6f1271ae1c8a2006ff7d3e54e9874d839f573d8009c20154ad0f2fb0a225 | 2024-06-13 |
|
||||
| debian:11 | sha256:ee239c601913c0d3962208299eef70dcffcb7aac1787f7a02f6d3e2b518755e6 | 2025-11-17 |
|
||||
| moby/buildkit:latest | sha256:de10faf919fc71ba4eb1dd7bd6449566d012b0c9436b1c61bfee21d621b009aa | 2025-11-20 |
|
||||
| node:18 | sha256:c6ae79e38498325db67193d391e6ec1d224d96c693a8a4d943498556716d3783 | 2025-03-27 |
|
||||
| node:18-alpine | sha256:8d6421d663b4c28fd3ebc498332f249011d118945588d0a35cb9bc4b8ca09d9e | 2025-03-27 |
|
||||
| node:20 | sha256:66d2eb8b463114d1f416d61dbd5fa9cea83e8fc250feb997338467728a06124b | 2025-11-25 |
|
||||
| node:20-alpine | sha256:16858294071a56ffd4cce9f17b57136cc39e41507b40e245b4f8e906f7a19463 | 2025-11-25 |
|
||||
| node:22 | sha256:4ad2c2b350ab49fb637ab40a269ffe207c61818bb7eb3a4ea122001a0c605e1f | 2025-11-18 |
|
||||
| node:22-alpine | sha256:b2358485e3e33bc3a33114d2b1bdb18cdbe4df01bd2b257198eb51beb1f026c5 | 2025-10-29 |
|
||||
| ubuntu:20.04 | sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214 | 2025-04-08 |
|
||||
| ubuntu:22.04 | sha256:104ae83764a5119017b8e8d6218fa0832b09df65aae7d5a6de29a85d813da2fb | 2025-10-13 |
|
||||
|
||||
### Installed apt packages
|
||||
| Name | Version |
|
||||
| ---------------------- | ----------------------------------- |
|
||||
@@ -305,12 +286,12 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| aria2 | 1.36.0-1 |
|
||||
| autoconf | 2.71-2 |
|
||||
| automake | 1:1.16.5-1.3 |
|
||||
| binutils | 2.38-4ubuntu2.10 |
|
||||
| binutils | 2.38-4ubuntu2.12 |
|
||||
| bison | 2:3.8.2+dfsg-1build1 |
|
||||
| brotli | 1.0.9-2build6 |
|
||||
| bzip2 | 1.0.8-5build1 |
|
||||
| coreutils | 8.32-4.1ubuntu1.2 |
|
||||
| curl | 7.81.0-1ubuntu1.21 |
|
||||
| coreutils | 8.32-4.1ubuntu1.3 |
|
||||
| curl | 7.81.0-1ubuntu1.23 |
|
||||
| dbus | 1.12.20-2ubuntu4.1 |
|
||||
| dnsutils | 1:9.18.39-0ubuntu0.22.04.2 |
|
||||
| dpkg | 1.21.1ubuntu2.6 |
|
||||
@@ -323,7 +304,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| ftp | 20210827-4build1 |
|
||||
| g++ | 4:11.2.0-1ubuntu1 |
|
||||
| gcc | 4:11.2.0-1ubuntu1 |
|
||||
| gnupg2 | 2.2.27-3ubuntu2.4 |
|
||||
| gnupg2 | 2.2.27-3ubuntu2.5 |
|
||||
| haveged | 1.9.14-1ubuntu1 |
|
||||
| imagemagick | 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.5 |
|
||||
| iproute2 | 5.15.0-1ubuntu2 |
|
||||
@@ -332,8 +313,8 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| lib32z1 | 1:1.2.11.dfsg-2ubuntu9.2 |
|
||||
| libc++-dev | 1:14.0-55\~exp2 |
|
||||
| libc++abi-dev | 1:14.0-55\~exp2 |
|
||||
| libc6-dev | 2.35-0ubuntu3.11 |
|
||||
| libcurl4 | 7.81.0-1ubuntu1.21 |
|
||||
| libc6-dev | 2.35-0ubuntu3.13 |
|
||||
| libcurl4 | 7.81.0-1ubuntu1.23 |
|
||||
| libgbm-dev | 23.2.1-1ubuntu3.1\~22.04.3 |
|
||||
| libgconf-2-4 | 3.2.6-7ubuntu2 |
|
||||
| libgsl-dev | 2.7.1+dfsg-3 |
|
||||
@@ -341,16 +322,16 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| libmagic-dev | 1:5.41-3ubuntu0.1 |
|
||||
| libmagickcore-dev | 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.5 |
|
||||
| libmagickwand-dev | 8:6.9.11.60+dfsg-1.3ubuntu0.22.04.5 |
|
||||
| libnss3-tools | 2:3.98-0ubuntu0.22.04.2 |
|
||||
| libnss3-tools | 2:3.98-0ubuntu0.22.04.3 |
|
||||
| libsecret-1-dev | 0.20.5-2 |
|
||||
| libsqlite3-dev | 3.37.2-2ubuntu0.5 |
|
||||
| libssl-dev | 3.0.2-0ubuntu1.20 |
|
||||
| libssl-dev | 3.0.2-0ubuntu1.21 |
|
||||
| libtool | 2.4.6-15build2 |
|
||||
| libunwind8 | 1.3.2-2build2.1 |
|
||||
| libxkbfile-dev | 1:1.1.0-1build3 |
|
||||
| libxss1 | 1:1.2.3-1build2 |
|
||||
| libyaml-dev | 0.2.2-1build2 |
|
||||
| locales | 2.35-0ubuntu3.11 |
|
||||
| locales | 2.35-0ubuntu3.13 |
|
||||
| lz4 | 1.9.3-2build2 |
|
||||
| m4 | 1.4.18-5ubuntu2 |
|
||||
| make | 4.3-4.1build1 |
|
||||
@@ -358,7 +339,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| mercurial | 6.1.1-1ubuntu1 |
|
||||
| net-tools | 1.60+git20181103.0eebece-1ubuntu5.4 |
|
||||
| netcat | 1.218-4ubuntu1 |
|
||||
| openssh-client | 1:8.9p1-3ubuntu0.13 |
|
||||
| openssh-client | 1:8.9p1-3ubuntu0.14 |
|
||||
| p7zip-full | 16.02+dfsg-8 |
|
||||
| p7zip-rar | 16.02-3build1 |
|
||||
| parallel | 20210822+ds-2 |
|
||||
@@ -373,10 +354,10 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| shellcheck | 0.8.0-2 |
|
||||
| sphinxsearch | 2.2.11-8 |
|
||||
| sqlite3 | 3.37.2-2ubuntu0.5 |
|
||||
| ssh | 1:8.9p1-3ubuntu0.13 |
|
||||
| ssh | 1:8.9p1-3ubuntu0.14 |
|
||||
| sshpass | 1.09-1 |
|
||||
| subversion | 1.14.1-3ubuntu0.22.04.1 |
|
||||
| sudo | 1.9.9-1ubuntu2.5 |
|
||||
| sudo | 1.9.9-1ubuntu2.6 |
|
||||
| swig | 4.0.2-1ubuntu1 |
|
||||
| systemd-coredump | 249.11-0ubuntu3.17 |
|
||||
| tar | 1.34+dfsg-1ubuntu0.1.22.04.2 |
|
||||
|
||||
+103
-103
@@ -1,12 +1,12 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Ubuntu & Windows] Four tools scheduled for deprecation on November 3, 2025](https://github.com/actions/runner-images/issues/12898) |
|
||||
| [[Windows/Ubuntu] Docker Server and Client will be updated to version 29.1.*, Docker Compose will be updated to version 2.40.3 on February 9th, 2026](https://github.com/actions/runner-images/issues/13474) |
|
||||
***
|
||||
# Ubuntu 24.04
|
||||
- OS Version: 24.04.3 LTS
|
||||
- Kernel Version: 6.11.0-1018-azure
|
||||
- Image Version: 20251126.144.1
|
||||
- Systemd version: 255.4-1ubuntu8.11
|
||||
- OS Version: 24.04.4 LTS
|
||||
- Kernel Version: 6.17.0-1008-azure
|
||||
- Image Version: 20260323.65.1
|
||||
- Systemd version: 255.4-1ubuntu8.12
|
||||
|
||||
## Installed Software
|
||||
|
||||
@@ -18,25 +18,25 @@
|
||||
- Dash 0.5.12-6ubuntu5
|
||||
- GNU C++: 12.4.0, 13.3.0, 14.2.0
|
||||
- GNU Fortran: 12.4.0, 13.3.0, 14.2.0
|
||||
- Julia 1.12.2
|
||||
- Kotlin 2.2.21-release-469
|
||||
- Node.js 20.19.6
|
||||
- Julia 1.12.5
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 20.20.1
|
||||
- Perl 5.38.2
|
||||
- Python 3.12.3
|
||||
- Ruby 3.2.3
|
||||
- Swift 6.2.1
|
||||
- Swift 6.2.4
|
||||
|
||||
### Package Management
|
||||
- cpan 1.64
|
||||
- Helm 3.19.2
|
||||
- Homebrew 5.0.3
|
||||
- Miniconda 25.9.1
|
||||
- Helm 3.20.1
|
||||
- Homebrew 5.1.1
|
||||
- Miniconda 26.1.1
|
||||
- Npm 10.8.2
|
||||
- Pip 24.0
|
||||
- Pip3 24.0
|
||||
- Pipx 1.8.0
|
||||
- Pipx 1.11.0
|
||||
- RubyGems 3.4.20
|
||||
- Vcpkg (build from commit da93ad9cab)
|
||||
- Vcpkg (build from commit 596c7b12a7)
|
||||
- Yarn 1.22.22
|
||||
|
||||
#### Environment variables
|
||||
@@ -55,100 +55,100 @@ to accomplish this.
|
||||
|
||||
### Project Management
|
||||
- Ant 1.10.14
|
||||
- Gradle 9.2.1
|
||||
- Lerna 9.0.1
|
||||
- Maven 3.9.11
|
||||
- Gradle 9.4.1
|
||||
- Lerna 9.0.7
|
||||
- Maven 3.9.14
|
||||
|
||||
### Tools
|
||||
- Ansible 2.20.0
|
||||
- AzCopy 10.31.0 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 8.4.2
|
||||
- Bazelisk 1.26.0
|
||||
- Bicep 0.39.26
|
||||
- Ansible 2.20.4
|
||||
- AzCopy 10.32.2 - available by `azcopy` and `azcopy10` aliases
|
||||
- Bazel 9.0.1
|
||||
- Bazelisk 1.28.1
|
||||
- Bicep 0.41.2
|
||||
- Buildah 1.33.7
|
||||
- CMake 3.31.6
|
||||
- CodeQL Action Bundle 2.23.6
|
||||
- Docker Amazon ECR Credential Helper 0.11.0
|
||||
- CodeQL Action Bundle 2.24.3
|
||||
- Docker Amazon ECR Credential Helper 0.12.0
|
||||
- Docker Compose v2 2.38.2
|
||||
- Docker-Buildx 0.30.1
|
||||
- Docker-Buildx 0.32.1
|
||||
- Docker Client 28.0.4
|
||||
- Docker Server 28.0.4
|
||||
- Fastlane 2.229.1
|
||||
- Git 2.52.0
|
||||
- Fastlane 2.232.2
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- Git-ftp 1.6.0
|
||||
- Haveged 1.9.14
|
||||
- jq 1.7
|
||||
- Kind 0.30.0
|
||||
- Kubectl 1.34.2
|
||||
- Kustomize 5.8.0
|
||||
- Kind 0.31.0
|
||||
- Kubectl 1.35.3
|
||||
- Kustomize 5.8.1
|
||||
- MediaInfo 24.01
|
||||
- Mercurial 6.7.2
|
||||
- Minikube 1.37.0
|
||||
- Minikube 1.38.1
|
||||
- n 10.2.0
|
||||
- Newman 6.2.1
|
||||
- nvm 0.40.3
|
||||
- OpenSSL 3.0.13-0ubuntu3.6
|
||||
- Packer 1.14.3
|
||||
- Parcel 2.16.1
|
||||
- Newman 6.2.2
|
||||
- nvm 0.40.4
|
||||
- OpenSSL 3.0.13-0ubuntu3.7
|
||||
- Packer 1.15.0
|
||||
- Parcel 2.16.4
|
||||
- Podman 4.9.3
|
||||
- Pulumi 3.209.0
|
||||
- Pulumi 3.227.0
|
||||
- Skopeo 1.13.3
|
||||
- Sphinx Open Source Search Server 2.2.11
|
||||
- yamllint 1.37.1
|
||||
- yq 4.49.2
|
||||
- yamllint 1.38.0
|
||||
- yq 4.52.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### CLI Tools
|
||||
- AWS CLI 2.32.5
|
||||
- AWS CLI Session Manager Plugin 1.2.764.0
|
||||
- AWS SAM CLI 1.148.0
|
||||
- Azure CLI 2.80.0
|
||||
- AWS CLI 2.34.15
|
||||
- AWS CLI Session Manager Plugin 1.2.792.0
|
||||
- AWS SAM CLI 1.156.0
|
||||
- Azure CLI 2.84.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- GitHub CLI 2.83.1
|
||||
- Google Cloud CLI 548.0.0
|
||||
- GitHub CLI 2.88.1
|
||||
- Google Cloud CLI 561.0.0
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 8.0.472+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.29+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.17+10 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.9+10 | JAVA_HOME_21_X64 |
|
||||
| 25.0.1+8 | JAVA_HOME_25_X64 |
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.482+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7 | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10 | JAVA_HOME_25_X64 |
|
||||
|
||||
### PHP Tools
|
||||
- PHP: 8.3.6
|
||||
- Composer 2.9.2
|
||||
- PHPUnit 8.5.48
|
||||
- Composer 2.9.5
|
||||
- PHPUnit 8.5.52
|
||||
```
|
||||
Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
```
|
||||
|
||||
### Haskell Tools
|
||||
- Cabal 3.16.0.0
|
||||
- GHC 9.12.2
|
||||
- Cabal 3.16.1.0
|
||||
- GHC 9.14.1
|
||||
- GHCup 0.1.50.2
|
||||
- Stack 3.7.1
|
||||
- Stack 3.9.3
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.91.1
|
||||
- Rust 1.91.1
|
||||
- Rustdoc 1.91.1
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.94.0
|
||||
- Rust 1.94.0
|
||||
- Rustdoc 1.94.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Rustfmt 1.8.0
|
||||
|
||||
### Browsers and Drivers
|
||||
- Google Chrome 142.0.7444.175
|
||||
- ChromeDriver 142.0.7444.175
|
||||
- Chromium 142.0.7444.0
|
||||
- Microsoft Edge 142.0.3595.94
|
||||
- Microsoft Edge WebDriver 142.0.3595.94
|
||||
- Selenium server 4.38.0
|
||||
- Mozilla Firefox 145.0.2
|
||||
- Google Chrome 146.0.7680.164
|
||||
- ChromeDriver 146.0.7680.165
|
||||
- Chromium 146.0.7680.0
|
||||
- Microsoft Edge 146.0.3856.72
|
||||
- Microsoft Edge WebDriver 146.0.3856.72
|
||||
- Selenium server 4.41.0
|
||||
- Mozilla Firefox 148.0.2
|
||||
- Geckodriver 0.36.0
|
||||
|
||||
#### Environment variables
|
||||
@@ -160,14 +160,14 @@ Both Xdebug and PCOV extensions are installed, but only Xdebug is enabled.
|
||||
| SELENIUM_JAR_PATH | /usr/share/java/selenium-server.jar |
|
||||
|
||||
### .NET Tools
|
||||
- .NET Core SDK: 8.0.122, 8.0.206, 8.0.319, 8.0.416, 9.0.112, 9.0.205, 9.0.308, 10.0.100
|
||||
- .NET Core SDK: 8.0.125, 8.0.206, 8.0.319, 8.0.419, 9.0.115, 9.0.205, 9.0.312, 10.0.105, 10.0.201
|
||||
- nbgv 3.9.50+6feeb89450
|
||||
|
||||
### Databases
|
||||
- sqlite3 3.45.1
|
||||
|
||||
#### PostgreSQL
|
||||
- PostgreSQL 16.11
|
||||
- PostgreSQL 16.13
|
||||
```
|
||||
User: postgres
|
||||
PostgreSQL service is disabled by default.
|
||||
@@ -175,7 +175,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
```
|
||||
|
||||
#### MySQL
|
||||
- MySQL 8.0.44-0ubuntu0.24.04.1
|
||||
- MySQL 8.0.45-0ubuntu0.24.04.1
|
||||
```
|
||||
User: root
|
||||
Password: root
|
||||
@@ -188,40 +188,40 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.10
|
||||
- 1.25.4
|
||||
- 1.24.13
|
||||
- 1.25.8
|
||||
|
||||
#### Node.js
|
||||
- 20.19.6
|
||||
- 22.21.1
|
||||
- 24.11.1
|
||||
- 20.20.1
|
||||
- 22.22.1
|
||||
- 24.14.0
|
||||
|
||||
#### Python
|
||||
- 3.9.25
|
||||
- 3.10.19
|
||||
- 3.11.14
|
||||
- 3.12.12
|
||||
- 3.13.9
|
||||
- 3.14.0
|
||||
- 3.10.20
|
||||
- 3.11.15
|
||||
- 3.12.13
|
||||
- 3.13.12
|
||||
- 3.14.3
|
||||
|
||||
#### PyPy
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.16 [PyPy 7.3.19]
|
||||
- 3.11.13 [PyPy 7.3.20]
|
||||
- 3.11.15 [PyPy 7.3.21]
|
||||
|
||||
#### Ruby
|
||||
- 3.2.9
|
||||
- 3.2.10
|
||||
- 3.3.10
|
||||
- 3.4.7
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.13
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.5.0
|
||||
- Microsoft.Graph: 2.32.0
|
||||
- Az: 14.6.0
|
||||
- Microsoft.Graph: 2.36.1
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Web Servers
|
||||
| Name | Version | ConfigFile | ServiceStatus | ListenPort |
|
||||
@@ -234,13 +234,13 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 12.0 |
|
||||
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platform-Tools | 36.0.0 |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -259,12 +259,12 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| aria2 | 1.37.0+debian-1build3 |
|
||||
| autoconf | 2.71-3 |
|
||||
| automake | 1:1.16.5-1.3ubuntu1 |
|
||||
| binutils | 2.42-4ubuntu2.6 |
|
||||
| binutils | 2.42-4ubuntu2.10 |
|
||||
| bison | 2:3.8.2+dfsg-1build2 |
|
||||
| brotli | 1.1.0-2build2 |
|
||||
| bzip2 | 1.0.8-5.1build0.1 |
|
||||
| coreutils | 9.4-3ubuntu6.1 |
|
||||
| curl | 8.5.0-2ubuntu10.6 |
|
||||
| coreutils | 9.4-3ubuntu6.2 |
|
||||
| curl | 8.5.0-2ubuntu10.8 |
|
||||
| dbus | 1.14.10-4ubuntu4.1 |
|
||||
| dnsutils | 1:9.18.39-0ubuntu0.24.04.2 |
|
||||
| dpkg | 1.22.6ubuntu6.5 |
|
||||
@@ -277,17 +277,17 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| ftp | 20230507-2build3 |
|
||||
| g++ | 4:13.2.0-7ubuntu1 |
|
||||
| gcc | 4:13.2.0-7ubuntu1 |
|
||||
| gnupg2 | 2.4.4-2ubuntu17.3 |
|
||||
| gnupg2 | 2.4.4-2ubuntu17.4 |
|
||||
| haveged | 1.9.14-1ubuntu2 |
|
||||
| iproute2 | 6.1.0-1ubuntu6.2 |
|
||||
| iputils-ping | 3:20240117-1ubuntu0.1 |
|
||||
| jq | 1.7.1-3ubuntu0.24.04.1 |
|
||||
| libnss3-tools | 2:3.98-1build1 |
|
||||
| libnss3-tools | 2:3.98-1ubuntu0.1 |
|
||||
| libsqlite3-dev | 3.45.1-1ubuntu2.5 |
|
||||
| libssl-dev | 3.0.13-0ubuntu3.6 |
|
||||
| libssl-dev | 3.0.13-0ubuntu3.7 |
|
||||
| libtool | 2.4.7-7build1 |
|
||||
| libyaml-dev | 0.2.5-1build1 |
|
||||
| locales | 2.39-0ubuntu8.6 |
|
||||
| locales | 2.39-0ubuntu8.7 |
|
||||
| lz4 | 1.9.4-1build1.1 |
|
||||
| m4 | 1.4.19-4build1 |
|
||||
| make | 4.3-4.1build2 |
|
||||
@@ -295,7 +295,7 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| mercurial | 6.7.2-1ubuntu2.2 |
|
||||
| net-tools | 2.10-0.1ubuntu4.4 |
|
||||
| netcat | 1.226-1ubuntu2 |
|
||||
| openssh-client | 1:9.6p1-3ubuntu13.14 |
|
||||
| openssh-client | 1:9.6p1-3ubuntu13.15 |
|
||||
| p7zip-full | 16.02+transitional.1 |
|
||||
| p7zip-rar | 16.02+transitional.1 |
|
||||
| parallel | 20231122+ds-1 |
|
||||
@@ -309,13 +309,13 @@ Use the following command as a part of your job to start the service: 'sudo syst
|
||||
| shellcheck | 0.9.0-1 |
|
||||
| sphinxsearch | 2.2.11-8build1 |
|
||||
| sqlite3 | 3.45.1-1ubuntu2.5 |
|
||||
| ssh | 1:9.6p1-3ubuntu13.14 |
|
||||
| ssh | 1:9.6p1-3ubuntu13.15 |
|
||||
| sshpass | 1.09-1 |
|
||||
| sudo | 1.9.15p5-3ubuntu5.24.04.1 |
|
||||
| sudo | 1.9.15p5-3ubuntu5.24.04.2 |
|
||||
| swig | 4.2.0-2ubuntu1 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.11 |
|
||||
| systemd-coredump | 255.4-1ubuntu8.12 |
|
||||
| tar | 1.35+dfsg-3build1 |
|
||||
| telnet | 0.17+2.5-3ubuntu4 |
|
||||
| telnet | 0.17+2.5-3ubuntu4.1 |
|
||||
| texinfo | 7.1-3build2 |
|
||||
| time | 1.9-0.2build1 |
|
||||
| tk | 8.6.14build1 |
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user