Compare commits
345 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 373741ffc0 | |||
| 146a79a80c | |||
| 2603a7dc4f | |||
| a54f1ac902 | |||
| df01eb49b1 | |||
| 2aedcdf9ed | |||
| 9d3768109e | |||
| bd758e8a19 | |||
| 65adff6904 | |||
| 1df4f97400 | |||
| 7218744804 | |||
| 0188ad53ff | |||
| 920ec17e54 | |||
| 1d950d2fc7 | |||
| a8a3c82585 | |||
| 7247516018 | |||
| b66fe40d0f | |||
| 39c08c7c6f | |||
| 881c6235bf | |||
| 6aef2146e2 | |||
| 9259f7501d | |||
| 8ec744bdb3 | |||
| a902dfc765 | |||
| 6808815d1e | |||
| 5d54f7d9d1 | |||
| d8fb49836b | |||
| dd9fd202ba | |||
| c81bdac23f | |||
| cc9ec6801d | |||
| 595154e5cd | |||
| 0c39e6a60b | |||
| 726a2a0f11 | |||
| 7678a3c383 | |||
| abbc5c3d85 | |||
| e031541032 | |||
| 1b60920cc9 | |||
| c722443db7 | |||
| 007ff3ca3f | |||
| 20f830c61a | |||
| 3675bf1b90 | |||
| e40f0dd61f | |||
| 5db997d7de | |||
| 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 | |||
| b3681d0108 | |||
| 0e1bcaf604 | |||
| f1cb2c81e1 | |||
| fd9887d6fe | |||
| a0ba8eab14 | |||
| 09b8be3b79 | |||
| 45c39b922d | |||
| cfcfdb7d62 | |||
| c62eec6083 | |||
| 4b19e14210 | |||
| fe9fe1c3f9 | |||
| ed72980fd0 | |||
| eba51f8f87 | |||
| 74a06c36b6 | |||
| 12dedd31ca | |||
| a4fdd31766 | |||
| fe23e4ab00 | |||
| 5f58af0964 | |||
| a183847c57 | |||
| 79625a3639 | |||
| d3fa237a67 | |||
| d0d1862c4a | |||
| df2584718f | |||
| 868bc6b53c | |||
| 9b1fa5a76c | |||
| 45c63aafc4 | |||
| db8d413376 | |||
| 0d358721af | |||
| 20d9e86d33 | |||
| 0f04992252 | |||
| 9dd0b1a8d4 | |||
| c5a12a401a | |||
| f5d8f202e7 | |||
| 51e536326f | |||
| dad935f2fe | |||
| fe2c39a3ea | |||
| f4280c339b | |||
| e48d82f863 | |||
| e90295a029 | |||
| adfab0747f | |||
| 51665f3347 | |||
| 0b19ddce5a | |||
| 940f8ffaff | |||
| 6fdc2b30e3 | |||
| b5d155ed87 | |||
| 62fa8463e4 | |||
| abf5454735 | |||
| c27d7d184a | |||
| 31875222a4 | |||
| 9b8c970943 | |||
| a15f42d197 | |||
| 038f49e85c | |||
| c88ab81ef3 | |||
| b4e92c5650 | |||
| 1f107542ae | |||
| 10901db80b | |||
| 7901df4cde | |||
| eecb8a7ff2 | |||
| 783b4575c4 | |||
| aab6e27787 | |||
| e7dc7ab548 | |||
| f34cbb76a9 | |||
| a1fa477069 | |||
| 1625af4b46 | |||
| 937b90eab7 | |||
| 42d93921f8 | |||
| 7054a12ef5 | |||
| 1db2aa222f | |||
| aa28939c6c | |||
| c8c5bf1c84 | |||
| f6dd2de1cc | |||
| dcc9bb6dbf | |||
| b1d8e89820 | |||
| f5d0e07710 | |||
| f45f955042 | |||
| ea58c5c8db | |||
| 6d89b51b85 | |||
| 3b9a213b72 | |||
| 45c6be9e64 | |||
| b6da00b4dc | |||
| afa5c0b353 | |||
| a7ed3ece41 | |||
| 3b63c38a32 | |||
| d4d5736e7d | |||
| 84653458a4 | |||
| 2f702974cc |
@@ -38,16 +38,16 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: Ubuntu Slim
|
||||
- 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
|
||||
|
||||
@@ -21,16 +21,16 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: Ubuntu Slim
|
||||
- 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
|
||||
|
||||
@@ -59,16 +59,16 @@ body:
|
||||
options:
|
||||
- label: Ubuntu 22.04
|
||||
- label: Ubuntu 24.04
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: Ubuntu Slim
|
||||
- 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?
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
# GitHub Copilot Instructions for Actions Runner Images Repository
|
||||
|
||||
## Scope and goals
|
||||
|
||||
- This repository serves as the source for building GitHub Actions runner and Azure DevOps agent images for Windows, Ubuntu, and macOS. You can find exact versions in the [Available Images](../README.md#available-images) section of README.md. Windows and Ubuntu images build on Azure infrastructure using Packer; macOS images use Anka virtualization.
|
||||
- Emphasize best practices for contributing to open-source projects, including code style, commit messages, and pull request etiquette.
|
||||
- Prefer clarity and correctness over creativity. If information is missing, ask clarifying questions or insert TODOs instead of guessing.
|
||||
|
||||
## Code and command instructions
|
||||
|
||||
- Follow the code style guide in [CONTRIBUTING.md](../CONTRIBUTING.md#code-style-guide) for Bash and PowerShell scripts, including naming conventions, file structure, and indentation rules.
|
||||
- Focus on re-using helpers when writing scripts. Windows, Linux and Ubuntu scripts have helper functions available to simplify installation and validation.
|
||||
- Always confirm versions and installation paths against existing toolset files and installation scripts.
|
||||
|
||||
## Output format
|
||||
|
||||
- Use GitHub Flavored Markdown only. Avoid raw HTML unless necessary.
|
||||
- One H1 (`#`) per page, followed by logical, sequential headings (`##`, `###`, …).
|
||||
- Use fenced code blocks with language identifiers (` ```bash `, ` ```json `, ` ```yaml `, etc.).
|
||||
- Use blockquote callouts for notes:
|
||||
> [!NOTE] Context or nuance
|
||||
> [!TIP] Helpful hint
|
||||
> [!WARNING] Risks or breaking changes
|
||||
> [!IMPORTANT] Critical requirement for functionality
|
||||
|
||||
## Style and tone
|
||||
|
||||
- Audience: Open-source contributors, GitHub Actions maintainers, and developers building custom runner images. Assume familiarity with CI/CD concepts, Packer, and basic infrastructure provisioning, but explain platform-specific details (Azure for Windows/Ubuntu, Anka for macOS) when relevant.
|
||||
- Voice: Second person ("you"), active voice, imperative for operational steps.
|
||||
- Be concise: short paragraphs and sentences. Prefer lists and step-by-steps, especially for operational procedures and troubleshooting.
|
||||
- Use inclusive, accessible language. Avoid idioms, sarcasm, and culturally specific references.
|
||||
- English: en-US (spelling, punctuation, and units).
|
||||
|
||||
## Safety and integrity
|
||||
|
||||
- Do not expose sensitive credentials (API tokens, Azure subscription IDs, etc.) in code examples.
|
||||
- Do not fabricate tool versions, installation paths, or software availability without verifying against toolset files or actual installation scripts.
|
||||
- Always call out assumptions and limitations explicitly, especially for changes affecting runner image behavior or software availability.
|
||||
- If ambiguous requests are made about image modifications, ask clarifying questions about target OS, tool versions, and compatibility requirements before proceeding.
|
||||
@@ -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
|
||||
|
||||
@@ -1,96 +1,112 @@
|
||||
name: Create SBOM for the release
|
||||
# Inherited variables:
|
||||
# github.event.client_payload.agentSpec - Current YAML Label
|
||||
# github.event.client_payload.ReleaseID - Current release ID
|
||||
# github.event.client_payload.imageVersion - AzDO image version "major.minor"
|
||||
#
|
||||
# Current SYFT tool issues:
|
||||
# macOS (major): prompt privileges that blocking process indefinitely (https://github.com/anchore/syft/issues/1367)
|
||||
|
||||
run-name: Collecting SBOM for ${{ github.event.client_payload.agentSpec || 'unknown image' }} - ${{ github.event.client_payload.imageVersion || 'unknown version' }}
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [generate-sbom]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
#Checking current release for SBOM
|
||||
sbom-check:
|
||||
outputs:
|
||||
check_status: ${{ steps.check.outputs.status }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
RELEASE_ID: ${{ github.event.client_payload.ReleaseID }}
|
||||
steps:
|
||||
- name: Check release for ${{ github.event.client_payload.agentSpec }}
|
||||
- name: Check SBOM asset for release ${{ env.RELEASE_ID }}
|
||||
id: check
|
||||
shell: pwsh
|
||||
run: |
|
||||
$apiUrl = "https://api.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}"
|
||||
$apiUrl = "https://api.github.com/repos/actions/runner-images/releases/$env:RELEASE_ID"
|
||||
$response = Invoke-RestMethod -Uri $apiUrl -Method Get -SkipHttpErrorCheck
|
||||
if ($response.message -ilike "Not Found") {
|
||||
echo "status=release_not_found" >> $env:GITHUB_OUTPUT
|
||||
Write-Error "Release ${{ github.event.client_payload.ReleaseID }} wasn't found"
|
||||
Write-Error "Release $env:RELEASE_ID wasn't found"
|
||||
exit 1
|
||||
}
|
||||
foreach ($asset in $response.assets) {
|
||||
if ($asset.name -like '*sbom*') {
|
||||
echo "status=sbom_exists" >> $env:GITHUB_OUTPUT
|
||||
return "Release ${{ github.event.client_payload.ReleaseID }} already contains a SBOM"
|
||||
return "Release $env:RELEASE_ID already contains a SBOM"
|
||||
}
|
||||
}
|
||||
Write-Host "Release has been found, SBOM is not attached, starting generation."
|
||||
echo "status=okay" >> $env:GITHUB_OUTPUT
|
||||
#Generating SBOM
|
||||
|
||||
building-sbom:
|
||||
needs: sbom-check
|
||||
if: ${{ needs.sbom-check.outputs.check_status == 'okay' }}
|
||||
runs-on: ${{ github.event.client_payload.agentSpec }}
|
||||
env:
|
||||
AGENT_SPEC: ${{ github.event.client_payload.agentSpec }}
|
||||
RELEASE_ID: ${{ github.event.client_payload.ReleaseID }}
|
||||
IMAGE_VERSION: ${{ github.event.client_payload.imageVersion }}
|
||||
steps:
|
||||
- name: Available image version check for ${{ github.event.client_payload.agentSpec }} - ${{ github.event.client_payload.imageVersion }}
|
||||
- name: Available image version check
|
||||
run: |
|
||||
$imageVersionComponents = $env:ImageVersion.Split('.')
|
||||
$imageMajorVersion = $imageVersionComponents[0]
|
||||
$imageMinorVersion = $imageVersionComponents[1]
|
||||
if ("$imageMajorVersion.$imageMinorVersion" -ne '${{ github.event.client_payload.imageVersion }}') {
|
||||
throw "Current runner $imageMajorVersion.$imageMinorVersion image version doesn't match ${{ github.event.client_payload.imageVersion }}."
|
||||
$expectedVersion = $env:IMAGE_VERSION
|
||||
$runnerVersion = $env:ImageVersion
|
||||
|
||||
# Split versions by dot
|
||||
$expectedParts = $expectedVersion.Split('.')
|
||||
$runnerParts = $runnerVersion.Split('.')
|
||||
|
||||
# Determine what parts to compare
|
||||
$minLength = [Math]::Min($expectedParts.Length, $runnerParts.Length)
|
||||
$expectedComparable = $expectedParts[0..($minLength-1)] -join '.'
|
||||
$runnerComparable = $runnerParts[0..($minLength-1)] -join '.'
|
||||
|
||||
# Perform the comparison
|
||||
if ($expectedComparable -ne $runnerComparable) {
|
||||
throw "Version mismatch: Expected version '$expectedVersion' doesn't match runner version '$runnerVersion'"
|
||||
}
|
||||
|
||||
- name: Install SYFT tool on Windows
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b C:/syft
|
||||
|
||||
- name: Install SYFT tool on Ubuntu
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
|
||||
|
||||
- name: Install SYFT v1.24.0 on macOS
|
||||
if: ${{ runner.os == 'macOS' }}
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin v1.24.0
|
||||
|
||||
#Running section.
|
||||
- name: Run SYFT on Windows
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
run: C:/syft/syft dir:C:/ -vv -o spdx-json=sbom.json
|
||||
|
||||
- name: Run SYFT on Ubuntu
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
run: syft dir:/ -vv -o spdx-json=sbom.json
|
||||
|
||||
- name: Run SYFT on macOS
|
||||
if: ${{ runner.os == 'macOS' }}
|
||||
# Skip protected folders to avoid prompt privileges that block process indefinitely (https://github.com/anchore/syft/issues/1367)
|
||||
run: sudo syft dir:/ -vv -o spdx-json=sbom.json --exclude ./Users --exclude ./System/Volumes --exclude ./private
|
||||
shell: bash
|
||||
#Preparing artifact (raw SBOM.json is too big)
|
||||
|
||||
- name: Compress SBOM file
|
||||
run: Compress-Archive sbom.json sbom.json.zip
|
||||
#Upload artifact action
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: sbom-${{ github.event.client_payload.agentSpec }}-${{ github.event.client_payload.imageVersion }}
|
||||
name: sbom-${{ env.AGENT_SPEC }}-${{ env.IMAGE_VERSION }}
|
||||
path: sbom.json.zip
|
||||
if-no-files-found: warn
|
||||
#Upload release asset action
|
||||
#Might be changed to softprops/action-gh-release after additional check
|
||||
|
||||
- name: Upload release asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: "https://uploads.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}/assets{?name,label}"
|
||||
upload_url: "https://uploads.github.com/repos/actions/runner-images/releases/${{ env.RELEASE_ID }}/assets{?name,label}"
|
||||
asset_path: ./sbom.json.zip
|
||||
asset_name: sbom.${{ github.event.client_payload.agentSpec }}.json.zip
|
||||
asset_name: sbom.${{ env.AGENT_SPEC }}.json.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
@@ -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
|
||||
+190
-5
@@ -10,11 +10,17 @@ Contributions to this project are [released](https://help.github.com/articles/gi
|
||||
|
||||
Please note that this project is released with a [Contributor Code of Conduct][code-of-conduct]. By participating in this project, you agree to abide by its terms.
|
||||
|
||||
## Contents
|
||||
|
||||
- [Submitting a pull request](#submitting-a-pull-request)
|
||||
- [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.
|
||||
1. Create a new branch: `git checkout -b my-branch-name`.
|
||||
1. Make your changes, ensuring that they include steps to install, validate post-install, and update the software report (please see [How to add a new tool](CONTRIBUTING.md#how-to-add-a-new-tool) for details).
|
||||
1. Make your changes, ensuring that they include steps to install, validate post-install, and update the software report (please see [Adding a new tool to an image](#adding-a-new-tool-to-an-image) for details).
|
||||
1. Test your changes by [creating an image and deploying a VM](docs/create-image-and-azure-resources.md).
|
||||
1. Push to your fork and [submit a pull request][pr].
|
||||
|
||||
@@ -28,24 +34,24 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
- Make sure that the tool satisfies the [Software Guidelines](README.md#software-guidelines).
|
||||
- Create an issue and get approval from us to add this tool to the image before creating the pull request.
|
||||
|
||||
## How to add a new tool
|
||||
## Adding a new tool to an image
|
||||
|
||||
### General rules
|
||||
|
||||
- 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
|
||||
|
||||
@@ -60,6 +66,185 @@ Use existing scripts such as [github-cli.sh](images/ubuntu/scripts/build/github-
|
||||
The macOS source lives in this repository and is available for everyone. However, the macOS image-generation CI doesn't support external contributions yet, so we are not able to accept pull requests for now.
|
||||
We are in the process of preparing the macOS CI to accept contributions. Until then, we appreciate your patience and ask that you continue to make tool requests by filing issues.
|
||||
|
||||
## Code style guide
|
||||
|
||||
The principles of clean code apply to all languages. The main points are:
|
||||
|
||||
- Use meaningful names for variables, functions, files, etc.
|
||||
- Keep functions short and simple.
|
||||
- Use comments to explain what the code does.
|
||||
- Use a consistent code style, naming convention, and file structure.
|
||||
|
||||
### File structure
|
||||
|
||||
- Each file should have a header with a title and a short description of the file.
|
||||
- Each file should have a newline at the end.
|
||||
- Use blank lines to separate logical blocks of code, but don't abuse blank lines:
|
||||
- Don't add a blank line in the beginning and end of a block or function.
|
||||
- Don't add blank lines between logically connected statements.
|
||||
- Avoid trailing whitespace.
|
||||
|
||||
### Bash scripts
|
||||
|
||||
#### Naming convention for bash scripts
|
||||
|
||||
- Use lowercase letters for variable names.
|
||||
- Use uppercase letters for constants.
|
||||
- Use underscores to separate words in variable names.
|
||||
|
||||
#### Bash script structure
|
||||
|
||||
Each script should start with the following shebang:
|
||||
|
||||
```bash
|
||||
#!/bin/bash -e
|
||||
```
|
||||
|
||||
> TODO: do we need to set pipefail?
|
||||
|
||||
This will make the script exit if any command fails.
|
||||
|
||||
After the shebang, add a header with the following format:
|
||||
|
||||
```bash
|
||||
################################################################################
|
||||
## File: <filename>
|
||||
## Desc: <short description of what the script does>
|
||||
################################################################################
|
||||
```
|
||||
|
||||
Then import helpers that are used in the script.
|
||||
|
||||
For Linux:
|
||||
|
||||
```bash
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
```
|
||||
|
||||
For macOS:
|
||||
|
||||
```bash
|
||||
source ~/utils/utils.sh
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You don't need to import all helpers, only the ones that are used in the script.
|
||||
|
||||
After that, add the script code.
|
||||
|
||||
### Indentations and line breaks in bash scripts
|
||||
|
||||
- Use 4 spaces for indentation.
|
||||
- Use 1 space between `if`/`for`/`while` and `[[` and between `[[` and the condition.
|
||||
- Place `then`/`do` on the new line.
|
||||
- For short `if`/`for`/`while` statements, use the one-line format.
|
||||
- Break long pipelines using `\`.
|
||||
|
||||
### Other recommendations for bash scripts
|
||||
|
||||
- For command substitution, use `$()` instead of backticks.
|
||||
- Use `[[` instead of `[` for conditional expressions.
|
||||
- Prefer using long options instead of short keys, but there are exceptions, e.g.:
|
||||
- `tar -xzf`
|
||||
- `apt-get -yqq`
|
||||
- `curl -sSLf`
|
||||
- `wget -qO-`
|
||||
|
||||
### PowerShell scripts
|
||||
|
||||
#### Naming convention for PowerShell scripts
|
||||
|
||||
- Use camelCase for variable names.
|
||||
- Use uppercase letters for constants.
|
||||
- Use `Verb-Noun` and PascalCase for function names.
|
||||
|
||||
### PowerShell script structure
|
||||
|
||||
Each script should start with the following header:
|
||||
|
||||
```powershell
|
||||
################################################################################
|
||||
## File: <filename>
|
||||
## Desc: <short description of what the script does>
|
||||
################################################################################
|
||||
```
|
||||
|
||||
Then declare functions that are used in the script.
|
||||
|
||||
> TODO: do we need to set the error action preference and progress preference?
|
||||
>
|
||||
> ```powershell
|
||||
> $ErrorActionPreference = "Stop"
|
||||
> $ProgressPreference = "SilentlyContinue"
|
||||
> ```
|
||||
|
||||
For Linux and macOS, import helpers that are used in the script:
|
||||
|
||||
For Linux:
|
||||
|
||||
```powershell
|
||||
Import-Module "$env:HELPER_SCRIPTS/Tests.Helpers.psm1" -DisableNameChecking
|
||||
```
|
||||
|
||||
For macOS:
|
||||
|
||||
```powershell
|
||||
Import-Module "$env:HOME/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "$env:HOME/image-generation/helpers/Xcode.Helpers.psm1" -DisableNameChecking
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You don't need to import all helpers, only the ones that are used in the script.
|
||||
|
||||
After that, add the script code.
|
||||
|
||||
### Indentations and line breaks in PowerShell scripts
|
||||
|
||||
- Use 4 spaces for indentation.
|
||||
- Use 1 space between `if`/`elseif`/`foreach` and `(` but not between `(` and the condition.
|
||||
- Add a space before and after pipe `|` and redirection `>` operators.
|
||||
- Align properties in hash tables.
|
||||
- Use [1TBS](https://en.wikipedia.org/wiki/Indentation_style#Variant:_1TBS_(OTBS)) style for curly braces:
|
||||
- If block of statement is long, then place it on the new line, indent it, and add a closing curly brace on the new line.
|
||||
- If block of statement is short, then place it on the same line as the statement.
|
||||
|
||||
```powershell
|
||||
function Show-Example1 {
|
||||
$exampleVariable = Get-ChildItem $env:TEMP
|
||||
$exampleVariable | ForEach-Object {
|
||||
$itemName = $_.Name
|
||||
$itemPath = $_.FullName
|
||||
}
|
||||
}
|
||||
|
||||
$Example2 | Some-Function -Arguments @{Parameter1 = "Disabled"}
|
||||
```
|
||||
|
||||
- Avoid using aliases.
|
||||
- Break long pipelines using backticks or use [splatting](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting?view=powershell-7.3):
|
||||
|
||||
```powershell
|
||||
# Instead of this
|
||||
Copy-Item -Path "test.txt" -Destination "test2.txt" -WhatIf
|
||||
|
||||
# you can use this
|
||||
$HashArguments = @{
|
||||
Path = "test.txt"
|
||||
Destination = "test2.txt"
|
||||
WhatIf = $true
|
||||
}
|
||||
Copy-Item @HashArguments
|
||||
```
|
||||
|
||||
When using backticks be extra careful with trailing whitespace as they can cause errors.
|
||||
|
||||
### Other recommendations for PowerShell scripts
|
||||
|
||||
- Verify exit codes of commands.
|
||||
- When writing a function, provide a docstring that describes what the function does.
|
||||
|
||||
## Resources
|
||||
|
||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+120
-124
@@ -1,109 +1,105 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[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.7.6 (23H626)
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20250928.1654
|
||||
- Image Version: 20260420.0006.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.414, 9.0.102, 9.0.203, 9.0.305
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- 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 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
|
||||
- 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.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.20-release-333
|
||||
- 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.5
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.13
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.2
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.12
|
||||
- Homebrew 4.6.14
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.2
|
||||
- Vcpkg 2025 (build from commit 2e6fcc4457)
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 256acc6401)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.1.0
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.1
|
||||
- bazel 8.4.1
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.16.0
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.80.0
|
||||
- Curl 8.19.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.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.2
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.47.2
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.31.3
|
||||
- AWS SAM CLI 1.144.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.77.0
|
||||
- AWS CLI 2.34.32
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.37.4
|
||||
- Cmake 4.1.1
|
||||
- CodeQL Action Bundle 2.23.1
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.58.1
|
||||
- Xcbeautify 2.30.1
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.61.0
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (19621.2.5.18.1)
|
||||
- SafariDriver 18.5 (19621.2.5.18.1)
|
||||
- Google Chrome 140.0.7339.214
|
||||
- Google Chrome for Testing 140.0.7339.207
|
||||
- ChromeDriver 140.0.7339.207
|
||||
- Microsoft Edge 140.0.3485.94
|
||||
- Microsoft Edge WebDriver 140.0.3485.94
|
||||
- Mozilla Firefox 143.0.1
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -113,57 +109,57 @@
|
||||
| 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 | JAVA_HOME_17_X64 |
|
||||
| 21.0.8+9.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.0+36.0 | 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 | 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.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.6
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.10.20
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.20.0
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.90.0
|
||||
- Rust 1.90.0
|
||||
- Rustdoc 1.90.0
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.90
|
||||
- Rustfmt 1.8.0-stable
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.12
|
||||
- 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 |
|
||||
@@ -239,49 +235,49 @@
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 17.0 | 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 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 | 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 | 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 | 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 | 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 | 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) |
|
||||
| tvOS 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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 9 (41mm)<br>Apple Watch Series 9 (45mm)<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 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 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 | 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 | 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 | 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 (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) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.1.9 |
|
||||
| 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 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.5.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_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
|
||||
| ANDROID_NDK_ROOT | /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/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
@@ -290,7 +286,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.0-57287/ParallelsDesktop-26.1.0-57287.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.3.1-57396/ParallelsDesktop-26.3.1-57396.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,104 +1,100 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[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.7.6 (23H626)
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20250928.1833
|
||||
- Image Version: 20260420.0004.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.414, 9.0.102, 9.0.203, 9.0.305
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- 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 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
|
||||
- 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.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.20-release-333
|
||||
- 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.5
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.2
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.6.14
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.2
|
||||
- Vcpkg 2025 (build from commit 2e6fcc4457)
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 256acc6401)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.1.0
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.1
|
||||
- bazel 8.4.1
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.80.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.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.2
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.47.2
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.31.3
|
||||
- AWS SAM CLI 1.144.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.77.0
|
||||
- AWS CLI 2.34.32
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.37.4
|
||||
- Cmake 4.1.1
|
||||
- CodeQL Action Bundle 2.23.1
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.58.1
|
||||
- Xcbeautify 2.30.1
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (19621.2.5.18.1)
|
||||
- SafariDriver 18.5 (19621.2.5.18.1)
|
||||
- Google Chrome 140.0.7339.214
|
||||
- Google Chrome for Testing 140.0.7339.207
|
||||
- ChromeDriver 140.0.7339.207
|
||||
- Microsoft Edge 140.0.3485.94
|
||||
- Microsoft Edge WebDriver 140.0.3485.94
|
||||
- Mozilla Firefox 143.0.1
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
- Selenium server 4.41.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -108,54 +104,55 @@
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 11.0.28+6 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.16+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.8+9.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.0+36.0 | JAVA_HOME_25_arm64 |
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 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.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.6
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.20.0
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.90.0
|
||||
- Rust 1.90.0
|
||||
- Rustdoc 1.90.0
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.90
|
||||
- Rustfmt 1.8.0-stable
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.12
|
||||
- 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 |
|
||||
@@ -231,54 +228,54 @@
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 17.0 | 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 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 | 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 | 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 | 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 | 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 | 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) |
|
||||
| tvOS 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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 9 (41mm)<br>Apple Watch Series 9 (45mm)<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 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 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 | 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 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 | 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) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
| visionOS 1.1 | Apple Vision Pro |
|
||||
| visionOS 1.2 | Apple Vision Pro |
|
||||
| visionOS 2.1 | Apple Vision Pro |
|
||||
| visionOS 2.2 | Apple Vision Pro |
|
||||
| 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 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 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) |
|
||||
| visionOS 1.0 | 1.0 | Apple Vision Pro |
|
||||
| visionOS 1.1 | 1.1 | Apple Vision Pro |
|
||||
| visionOS 1.2 | 1.2 | Apple Vision Pro |
|
||||
| visionOS 2.1 | 2.1 | Apple Vision Pro |
|
||||
| visionOS 2.2 | 2.2 | 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 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 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 36.5.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_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
|
||||
| ANDROID_NDK_ROOT | /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/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
|
||||
+143
-136
@@ -1,107 +1,103 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[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.6.1 (24G90)
|
||||
- OS Version: macOS 15.7.5 (24G617)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20250928.1958
|
||||
- Image Version: 20260421.0014.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.414, 9.0.102, 9.0.203, 9.0.305
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 16.0.0
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/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
|
||||
- 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.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.20-release-333
|
||||
- Node.js 22.20.0
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.13
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
- 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.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.2
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.12
|
||||
- Homebrew 4.6.14
|
||||
- NPM 10.9.3
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.2
|
||||
- Vcpkg 2025 (build from commit 2e6fcc4457)
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 9c5e11404a)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.1.0
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.1
|
||||
- bazel 8.4.1
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.16.0
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.80.0
|
||||
- Curl 8.19.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.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.2
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.47.2
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.31.3
|
||||
- AWS SAM CLI 1.144.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.1
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.58.1
|
||||
- Xcbeautify 2.30.1
|
||||
- AWS CLI 2.34.33
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.61.0
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.0.1 (20622.1.22.118.4)
|
||||
- SafariDriver 26.0.1 (20622.1.22.118.4)
|
||||
- Google Chrome 140.0.7339.214
|
||||
- Google Chrome for Testing 140.0.7339.207
|
||||
- ChromeDriver 140.0.7339.207
|
||||
- Microsoft Edge 140.0.3485.94
|
||||
- Microsoft Edge WebDriver 140.0.3485.94
|
||||
- Mozilla Firefox 143.0.1
|
||||
- Safari 26.5 (20624.2.1.19.2)
|
||||
- SafariDriver 26.5 (20624.2.1.19.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
- Selenium server 4.43.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -111,67 +107,69 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 11.0.28+6 | JAVA_HOME_11_X64 |
|
||||
| 17.0.16+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.8+9.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.0+36.0 | JAVA_HOME_25_X64 |
|
||||
| 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.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.6
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.10.20
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.20.0
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.90.0
|
||||
- Rust 1.90.0
|
||||
- Rustdoc 1.90.0
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.90
|
||||
- Rustfmt 1.8.0-stable
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.12
|
||||
- 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.1 (beta) | 17B5025f | /Applications/Xcode_26.1_beta.app | /Applications/Xcode_26.1.0.app<br>/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 |
|
||||
| 16.3 | 16E140 | /Applications/Xcode_16.3.app | /Applications/Xcode_16.3.0.app |
|
||||
| 16.2 | 16C5032a | /Applications/Xcode_16.2.app | /Applications/Xcode_16.2.0.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
| 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 |
|
||||
| 16.3 | 16E140 | /Applications/Xcode_16.3.app | /Applications/Xcode_16.3.0.app |
|
||||
| 16.2 | 16C5032a | /Applications/Xcode_16.2.app | /Applications/Xcode_16.2.0.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
@@ -182,100 +180,109 @@
|
||||
| macOS 15.4 | macosx15.4 | 16.3 |
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.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 |
|
||||
| iOS 18.4 | iphoneos18.4 | 16.3 |
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.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 |
|
||||
| Simulator - iOS 18.4 | iphonesimulator18.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| tvOS 18.4 | appletvos18.4 | 16.3 |
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.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 |
|
||||
| Simulator - tvOS 18.4 | appletvsimulator18.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| watchOS 11.4 | watchos11.4 | 16.3 |
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.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 |
|
||||
| Simulator - watchOS 11.4 | watchsimulator11.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| visionOS 2.4 | xros2.4 | 16.3 |
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.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 |
|
||||
| Simulator - visionOS 2.4 | xrsimulator2.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| DriverKit 24.4 | driverkit24.4 | 16.3 |
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 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 | 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 | 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 | 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 13-inch (M4) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 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 | 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.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 | 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) |
|
||||
| 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>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) |
|
||||
| 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.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 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.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.1.9 |
|
||||
| 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)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1) |
|
||||
| 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<br>27.3.13750724 (default)<br>28.2.13676358 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.5.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 |
|
||||
@@ -283,7 +290,7 @@
|
||||
| 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/28.2.13676358 |
|
||||
| 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 |
|
||||
|
||||
@@ -293,7 +300,7 @@
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.0-57287/ParallelsDesktop-26.1.0-57287.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.3.1-57396/ParallelsDesktop-26.3.1-57396.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,102 +1,98 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[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.6.1 (24G90)
|
||||
- OS Version: macOS 15.7.4 (24G517)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20250928.2397
|
||||
- Image Version: 20260421.0007.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.414, 9.0.102, 9.0.203, 9.0.305
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 16.0.0
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/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
|
||||
- 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.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.20-release-333
|
||||
- Node.js 22.20.0
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.3.9
|
||||
- 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.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.2
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.6.14
|
||||
- NPM 10.9.3
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.2
|
||||
- Vcpkg 2025 (build from commit 2e6fcc4457)
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 9c5e11404a)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.1.0
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.1
|
||||
- bazel 8.4.1
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.80.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.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.2
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.47.2
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.31.3
|
||||
- AWS SAM CLI 1.144.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.1
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.58.1
|
||||
- Xcbeautify 2.30.1
|
||||
- AWS CLI 2.34.33
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 18.6 (20621.3.11.11.3)
|
||||
- SafariDriver 18.6 (20621.3.11.11.3)
|
||||
- Google Chrome 140.0.7339.214
|
||||
- Google Chrome for Testing 140.0.7339.207
|
||||
- ChromeDriver 140.0.7339.207
|
||||
- Microsoft Edge 140.0.3485.94
|
||||
- Microsoft Edge WebDriver 140.0.3485.94
|
||||
- Mozilla Firefox 143.0.1
|
||||
- Safari 26.3 (20623.2.7.18.1)
|
||||
- SafariDriver 26.3 (20623.2.7.18.1)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
- Selenium server 4.43.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -106,65 +102,68 @@
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 11.0.28+6 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.16+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.8+9.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.0+36.0 | JAVA_HOME_25_arm64 |
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 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.1.7
|
||||
- 3.2.9
|
||||
- 3.3.9
|
||||
- 3.4.6
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.5
|
||||
- 22.20.0
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.90.0
|
||||
- Rust 1.90.0
|
||||
- Rustdoc 1.90.0
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.90
|
||||
- Rustfmt 1.8.0-stable
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.12
|
||||
- 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.1 (beta) | 17B5025f | /Applications/Xcode_26.1_beta.app | /Applications/Xcode_26.1.0.app<br>/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 |
|
||||
| 16.3 | 16E140 | /Applications/Xcode_16.3.app | /Applications/Xcode_16.3.0.app |
|
||||
| 16.2 | 16C5032a | /Applications/Xcode_16.2.app | /Applications/Xcode_16.2.0.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
| 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 |
|
||||
| 16.3 | 16E140 | /Applications/Xcode_16.3.app | /Applications/Xcode_16.3.0.app |
|
||||
| 16.2 | 16C5032a | /Applications/Xcode_16.2.app | /Applications/Xcode_16.2.0.app |
|
||||
| 16.1 | 16B40 | /Applications/Xcode_16.1.app | /Applications/Xcode_16.1.0.app |
|
||||
| 16.0 | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
@@ -175,104 +174,114 @@
|
||||
| macOS 15.4 | macosx15.4 | 16.3 |
|
||||
| macOS 15.5 | macosx15.5 | 16.4 |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.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 |
|
||||
| iOS 18.4 | iphoneos18.4 | 16.3 |
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.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 |
|
||||
| Simulator - iOS 18.4 | iphonesimulator18.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| tvOS 18.4 | appletvos18.4 | 16.3 |
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.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 |
|
||||
| Simulator - tvOS 18.4 | appletvsimulator18.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| watchOS 11.4 | watchos11.4 | 16.3 |
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.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 |
|
||||
| Simulator - watchOS 11.4 | watchsimulator11.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| visionOS 2.4 | xros2.4 | 16.3 |
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.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 |
|
||||
| Simulator - visionOS 2.4 | xrsimulator2.4 | 16.3 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| DriverKit 24.4 | driverkit24.4 | 16.3 |
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 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 | 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 | 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 | 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 13-inch (M4) |
|
||||
| tvOS 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 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 | 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.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 | 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 | Apple Vision Pro |
|
||||
| visionOS 2.4 | Apple Vision Pro |
|
||||
| visionOS 2.5 | Apple Vision Pro |
|
||||
| visionOS 26.0 | Apple Vision Pro |
|
||||
| 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>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) |
|
||||
| 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.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 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.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.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.1.9 |
|
||||
| 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)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1) |
|
||||
| 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<br>27.3.13750724 (default)<br>28.2.13676358 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.5.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 |
|
||||
@@ -280,7 +289,7 @@
|
||||
| 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/28.2.13676358 |
|
||||
| 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 |
|
||||
|
||||
|
||||
@@ -0,0 +1,262 @@
|
||||
| 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: 20260422.0018.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.203
|
||||
- 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.15.0
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- NPM 11.12.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 3fb54e6717)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.19.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- 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.2 7 Apr 2026 (Library: OpenSSL 3.6.2 7 Apr 2026)
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.34
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.2
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 26.4.1.0.1775747724
|
||||
- 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 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 150.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.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.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.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.5 (beta) | 17F5022i | /Applications/Xcode_26.5_beta_2.app | /Applications/Xcode_26.5.0.app<br>/Applications/Xcode_26.5.app |
|
||||
| 26.4.1 | 17E202 | /Applications/Xcode_26.4.1.app | /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.1 |
|
||||
| macOS 26.5 | macosx26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| iOS 26.5 | iphoneos26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| Simulator - iOS 26.5 | iphonesimulator26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| tvOS 26.5 | appletvos26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| Simulator - tvOS 26.5 | appletvsimulator26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| watchOS 26.5 | watchos26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| Simulator - watchOS 26.5 | watchsimulator26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| visionOS 26.5 | xros26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| Simulator - visionOS 26.5 | xrsimulator26.5 | 26.5 |
|
||||
| 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.1 |
|
||||
| DriverKit 25.5 | driverkit25.5 | 26.5 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 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) |
|
||||
| iOS 26.4 | 26.4.1 | iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone 17e<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M4)<br>iPad Air 13-inch (M4)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| 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) |
|
||||
| tvOS 26.4 | 26.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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) |
|
||||
| watchOS 26.4 | 26.4 | 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.5.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) |
|
||||
| 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,100 +1,98 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[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 (25A354)
|
||||
- Kernel Version: Darwin 25.0.0
|
||||
- Image Version: 20250928.159
|
||||
- OS Version: macOS 26.3 (25D125)
|
||||
- Kernel Version: Darwin 25.3.0
|
||||
- Image Version: 20260422.0012.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.414, 9.0.102, 9.0.203, 9.0.305
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.203
|
||||
- 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.1.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.1.0) - available by `gfortran-15` alias
|
||||
- Kotlin 2.2.20-release-333
|
||||
- Node.js 24.9.0
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.7
|
||||
- Ruby 3.4.6
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 24.15.0
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.7.2
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.6.14
|
||||
- NPM 11.6.0
|
||||
- Pip3 25.2 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.7.2
|
||||
- Vcpkg 2025 (build from commit 2e6fcc4457)
|
||||
- Homebrew 5.1.7
|
||||
- NPM 11.12.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 3fb54e6717)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.11
|
||||
- Gradle 9.1.0
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.30.1
|
||||
- bazel 8.4.1
|
||||
- bazelisk 1.27.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.50.1
|
||||
- Git LFS 3.7.0
|
||||
- GitHub CLI 2.80.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.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 3.5.2 5 Aug 2025 (Library: OpenSSL 3.5.2 5 Aug 2025)
|
||||
- Packer 1.14.2
|
||||
- OpenSSL 3.6.2 7 Apr 2026 (Library: OpenSSL 3.6.2 7 Apr 2026)
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.2
|
||||
- yq 4.47.2
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.1
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.31.3
|
||||
- AWS SAM CLI 1.144.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.1
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.58.1
|
||||
- Xcbeautify 2.30.1
|
||||
- Xcode Command Line Tools 26.0.0.0.1.1757719676
|
||||
- AWS CLI 2.34.34
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.2
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 26.4.1.0.1775747724
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.0 (21622.1.22.11.14)
|
||||
- SafariDriver 26.0 (21622.1.22.11.14)
|
||||
- Google Chrome 140.0.7339.214
|
||||
- Google Chrome for Testing 140.0.7339.207
|
||||
- ChromeDriver 140.0.7339.207
|
||||
- Microsoft Edge 140.0.3485.94
|
||||
- Microsoft Edge WebDriver 140.0.3485.94
|
||||
- Mozilla Firefox 143.0.1
|
||||
- Safari 26.3 (21623.2.7.11.6)
|
||||
- SafariDriver 26.3 (21623.2.7.11.6)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 150.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.35.0
|
||||
- Selenium server 4.43.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -104,124 +102,148 @@
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 11.0.28+6 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.16+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.8+9.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.0+36.0 | JAVA_HOME_25_arm64 |
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 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.9
|
||||
- 3.4.6
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.7
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 20.19.5
|
||||
- 22.20.0
|
||||
- 24.9.0
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.7
|
||||
- 1.25.1
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.90.0
|
||||
- Rust 1.90.0
|
||||
- Rustdoc 1.90.0
|
||||
- Rustup 1.28.2
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.90
|
||||
- Rustfmt 1.8.0-stable
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.12
|
||||
- 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.1 (beta) | 17B5025f | /Applications/Xcode_26.1_beta.app | /Applications/Xcode_26.1.0.app<br>/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.5 (beta) | 17F5022i | /Applications/Xcode_26.5_beta_2.app | /Applications/Xcode_26.5.0.app<br>/Applications/Xcode_26.5.app |
|
||||
| 26.4.1 | 17E202 | /Applications/Xcode_26.4.1.app | /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 |
|
||||
| iOS 18.5 | iphoneos18.5 | 16.4 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| macOS 26.4 | macosx26.4 | 26.4.1 |
|
||||
| macOS 26.5 | macosx26.5 | 26.5 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1 |
|
||||
| Simulator - iOS 18.5 | iphonesimulator18.5 | 16.4 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| iOS 26.4 | iphoneos26.4 | 26.4.1 |
|
||||
| iOS 26.5 | iphoneos26.5 | 26.5 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1 |
|
||||
| tvOS 18.5 | appletvos18.5 | 16.4 |
|
||||
| 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.1 |
|
||||
| Simulator - iOS 26.5 | iphonesimulator26.5 | 26.5 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1 |
|
||||
| Simulator - tvOS 18.5 | appletvsimulator18.5 | 16.4 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| tvOS 26.4 | appletvos26.4 | 26.4.1 |
|
||||
| tvOS 26.5 | appletvos26.5 | 26.5 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1 |
|
||||
| watchOS 11.5 | watchos11.5 | 16.4 |
|
||||
| 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.1 |
|
||||
| Simulator - tvOS 26.5 | appletvsimulator26.5 | 26.5 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1 |
|
||||
| Simulator - watchOS 11.5 | watchsimulator11.5 | 16.4 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| watchOS 26.4 | watchos26.4 | 26.4.1 |
|
||||
| watchOS 26.5 | watchos26.5 | 26.5 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1 |
|
||||
| visionOS 2.5 | xros2.5 | 16.4 |
|
||||
| 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.1 |
|
||||
| Simulator - watchOS 26.5 | watchsimulator26.5 | 26.5 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1 |
|
||||
| Simulator - visionOS 2.5 | xrsimulator2.5 | 16.4 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| visionOS 26.4 | xros26.4 | 26.4.1 |
|
||||
| visionOS 26.5 | xros26.5 | 26.5 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1 |
|
||||
| DriverKit 24.5 | driverkit24.5 | 16.4 |
|
||||
| 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.1 |
|
||||
| Simulator - visionOS 26.5 | xrsimulator26.5 | 26.5 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.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.1 |
|
||||
| DriverKit 25.5 | driverkit25.5 | 26.5 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| iOS 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 | 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 | 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 13-inch (M4) |
|
||||
| iOS 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 (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| tvOS 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 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 | 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 | 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 | Apple Vision Pro |
|
||||
| visionOS 26.0 | Apple Vision Pro |
|
||||
| visionOS 26.1 | Apple Vision Pro |
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 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) |
|
||||
| iOS 26.4 | 26.4.1 | iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone 17e<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M4)<br>iPad Air 13-inch (M4)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| 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) |
|
||||
| tvOS 26.4 | 26.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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) |
|
||||
| watchOS 26.4 | 26.4 | 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.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
| visionOS 26.4 | 26.4.1 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.1.9 |
|
||||
| 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-33-ext5 (rev 1)<br>android-33-ext4 (rev 1) |
|
||||
| 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 | 27.3.13750724 (default)<br>28.2.13676358 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.5.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) |
|
||||
| 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 |
|
||||
@@ -229,7 +251,10 @@
|
||||
| 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/28.2.13676358 |
|
||||
| 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
|
||||
|
||||
|
||||
@@ -8,10 +8,11 @@ Import-Module "~/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "~/image-generation/helpers/Xcode.Helpers.psm1"
|
||||
$arch = Get-Architecture
|
||||
$xcodeVersions = (Get-ToolsetContent).xcode.${arch}.versions
|
||||
$defaultXcode = (Get-ToolsetContent).xcode.default
|
||||
|
||||
# Switch to each Xcode version
|
||||
foreach ($xcodeVersion in $xcodeVersions.link) {
|
||||
write-host "Switching to Xcode $xcodeVersion"
|
||||
Write-Host "Switching to Xcode $xcodeVersion"
|
||||
Switch-Xcode -Version $XcodeVersion
|
||||
|
||||
# Make object of all simulators
|
||||
@@ -50,8 +51,8 @@ foreach ($xcodeVersion in $xcodeVersions.link) {
|
||||
Write-Host "$($sameRuntimeDevices[$i+1].DeviceName) - DeviceId $($sameRuntimeDevices[$i+1].DeviceId)"
|
||||
Write-Host "-------------------------------------------------------------------"
|
||||
if ($sameRuntimeDevices[$i].DeviceName -eq $sameRuntimeDevices[$i+1].DeviceName) {
|
||||
write-host "*******************************************************************"
|
||||
write-host "** Duplicate found"
|
||||
Write-Host "*******************************************************************"
|
||||
Write-Host "** Duplicate found"
|
||||
if ($sameRuntimeDevices[$i].DeviceCreationTime -lt $sameRuntimeDevices[$i+1].DeviceCreationTime) {
|
||||
Write-Host "** will be removed $($sameRuntimeDevices[$i+1].DeviceName) with id $($sameRuntimeDevices[$i+1].DeviceId)"
|
||||
xcrun simctl delete $sameRuntimeDevices[$i+1].DeviceId
|
||||
@@ -61,8 +62,12 @@ foreach ($xcodeVersion in $xcodeVersions.link) {
|
||||
xcrun simctl delete $sameRuntimeDevices[$i].DeviceId
|
||||
$sameRuntimeDevices.RemoveAt($i)
|
||||
}
|
||||
write-host "*******************************************************************"
|
||||
Write-Host "*******************************************************************"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Restore default Xcode
|
||||
Write-Host "Restoring default Xcode to $defaultXcode"
|
||||
Switch-Xcode -Version $defaultXcode
|
||||
|
||||
@@ -54,4 +54,13 @@ foreach ($tool in $tools) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Ensure python3 and pip3 point to the latest installed Python version
|
||||
# Fix for ./setup.sh script behavior for python3 and pip3 symlinks
|
||||
# Only Intel images are affected since /usr/local/bin is used for Intel
|
||||
# ARM images use /opt/homebrew/bin which is managed by Homebrew
|
||||
Write-Host "Ensuring python3 and pip3 point to the latest installed Python version from Homebrew"
|
||||
brew unlink python@3.14 && brew link python@3.14 --force --overwrite
|
||||
Split-Path (readlink (which python3))
|
||||
|
||||
Invoke-PesterTests "Toolcache"
|
||||
|
||||
@@ -35,16 +35,12 @@ $xcodeVersions | ForEach-Object {
|
||||
Write-Host "Configuring Xcode $($_.link) ..."
|
||||
Invoke-XcodeRunFirstLaunch -Version $_.link
|
||||
Install-XcodeAdditionalSimulatorRuntimes -Version $_.link -Arch $arch -Runtimes $_.install_runtimes
|
||||
if ($_.link -match '\d{2}(?=[._])' -and [int]$matches[0] -ge 26) {
|
||||
if ($_.link -match '^(\d+)\.(\d+)(?:\.(\d+))?$' -and [int]$matches[1] -ge 26) {
|
||||
Install-XcodeAdditionalComponents -Version $_.link
|
||||
Update-DyldCache -Version $_.link
|
||||
}
|
||||
}
|
||||
|
||||
# Update dyld shared cache for the latest stable Xcode version
|
||||
if ((-not $os.IsSonoma)) {
|
||||
Update-DyldCache -XcodeVersions $xcodeVersions
|
||||
}
|
||||
|
||||
Invoke-XcodeRunFirstLaunch -Version $defaultXcode
|
||||
|
||||
Write-Host "Configuring Xcode symlinks..."
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ source ~/utils/utils.sh
|
||||
arch=$(get_arch)
|
||||
imagedata_file="$HOME/imagedata.json"
|
||||
image_version=$(echo $IMAGE_VERSION | cut -d _ -f 2)
|
||||
image_version_major=${image_version/.*/}
|
||||
image_version_minor=$(echo $image_version | cut -d "." -f 2)
|
||||
os_name=$(sw_vers -productName)
|
||||
os_version=$(sw_vers -productVersion)
|
||||
os_build=$(sw_vers -buildVersion)
|
||||
@@ -20,8 +22,8 @@ else
|
||||
image_label="macos-${label_version}"
|
||||
fi
|
||||
|
||||
software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version}/images/macos/${image_label}-Readme.md"
|
||||
releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version}"
|
||||
software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version_major}.${image_version_minor}/images/macos/${image_label}-Readme.md"
|
||||
releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version_major}.${image_version_minor}"
|
||||
|
||||
cat <<EOF > $imagedata_file
|
||||
[
|
||||
|
||||
@@ -33,15 +33,27 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.backupd.plist
|
||||
echo "Disable Apple Push Notification Service daemon"
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist
|
||||
|
||||
echo "Set SMC monitoring cadence to 0 to reduce CPU usage"
|
||||
sudo defaults -currentHost write /Library/Preferences/com.apple.powerlogd SMCMonitorCadence 0
|
||||
|
||||
echo "Disable Performance and Power Management daemon if possible"
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.PerfPowerServices.plist
|
||||
|
||||
# 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
|
||||
|
||||
# Simple warmup of the default Xcode
|
||||
echo "Warm up the default Xcode"
|
||||
xcodebuild -version > /dev/null
|
||||
xcrun simctl list > /dev/null
|
||||
xcrun simctl list devices > /dev/null
|
||||
|
||||
echo "Put documentation to $HOME root"
|
||||
cp $HOME/image-generation/output/software-report/systeminfo.* $HOME/
|
||||
cp $HOME/image-generation/output/software-report.* $HOME/
|
||||
|
||||
echo "Remove fastlane cached cookie"
|
||||
rm -rf ~/.fastlane
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -12,9 +12,9 @@ add_filtered_installation_components() {
|
||||
local tools_array=("$@")
|
||||
|
||||
for item in ${tools_array[@]}; do
|
||||
# take the last argument after splitting string by ';'' and '-''
|
||||
version=$(echo "${item##*[-;]}")
|
||||
if [[ "$(printf "${minimum_version}\n${version}\n" | sort -V | head -n1)" == "$minimum_version" ]]; then
|
||||
# Take the last version number that appears after the last '-' or ';'
|
||||
item_version=$(echo "$item" | grep -oE '[-;][0-9.]+' | grep -oE '[0-9.]+')
|
||||
if [[ "$(printf "${minimum_version}\n${item_version}\n" | sort -V | head -n1)" == "$minimum_version" ]]; then
|
||||
components+=($item)
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -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
|
||||
@@ -12,16 +12,8 @@ echo "Installing Python Tooling"
|
||||
close_finder_window
|
||||
|
||||
# Installing latest Homebrew Python 3 to handle python3 and pip3 symlinks
|
||||
# When latest Python3 is installed as a dependency for other packages
|
||||
# it does not create /usr/local/bin/python3 and /usr/local/bin/pip3
|
||||
echo "Brew Installing default Python 3"
|
||||
brew_smart_install "python"
|
||||
|
||||
# Install specific Python version
|
||||
# Update symlinks for python3 and pip3 to point to the specific version
|
||||
toolsetVersion=$(get_toolset_value '.python.default')
|
||||
echo "Installing Python $toolsetVersion"
|
||||
brew_smart_install "python@$toolsetVersion"
|
||||
brew_smart_install "python3"
|
||||
|
||||
# Pipx has its own Python dependency
|
||||
echo "Installing pipx"
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-runner-package.sh
|
||||
## Desc: Download and Install runner package
|
||||
################################################################################
|
||||
|
||||
# Source the helpers for use with the script
|
||||
source ~/utils/utils.sh
|
||||
|
||||
AGENT_PATH="/opt/runner-cache"
|
||||
arch=$(get_arch)
|
||||
download_url=$(resolve_github_release_asset_url "actions/runner" 'test("actions-runner-osx-'"$arch"'-[0-9]+\\.[0-9]{3}\\.[0-9]+\\.tar\\.gz$")' "latest" "$API_PAT")
|
||||
archive_name="${download_url##*/}"
|
||||
archive_path=$(download_with_retry "$download_url")
|
||||
|
||||
if [[ ! -d $AGENT_PATH ]]; then
|
||||
sudo mkdir -p -m 775 $AGENT_PATH
|
||||
sudo chown $USER:admin $AGENT_PATH
|
||||
fi
|
||||
|
||||
sudo mv "$archive_path" "$AGENT_PATH/$archive_name"
|
||||
@@ -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"
|
||||
|
||||
@@ -200,5 +198,5 @@ if (-not (Test-Path $OutputDirectory)) { New-Item -Path $OutputDirectory -ItemTy
|
||||
# Write final reports
|
||||
#
|
||||
Write-Host $markdownExtended
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/systeminfo.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/systeminfo.md" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM
|
||||
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/software-report.md" -Encoding UTF8NoBOM
|
||||
|
||||
@@ -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
|
||||
@@ -225,17 +223,18 @@ function Build-XcodeSimulatorsTable {
|
||||
}
|
||||
}
|
||||
return [PSCustomObject] @{
|
||||
"OS" = $runtime.name
|
||||
"Name" = $runtime.name
|
||||
"OS" = $runtime.version
|
||||
"Simulators" = [String]::Join("<br>", $sortedRuntimeDevices)
|
||||
}
|
||||
} | Sort-Object {
|
||||
# Sort rule 1
|
||||
$sdkNameParts = $_."OS".Split(" ")
|
||||
$sdkNameParts = $_."Name".Split(" ")
|
||||
$platformName = [String]::Join(" ", $sdkNameParts[0..($sdkNameParts.Length - 2)])
|
||||
return Get-XcodePlatformOrder $platformName
|
||||
}, {
|
||||
# Sort rule 2
|
||||
$sdkNameParts = $_."OS".Split(" ")
|
||||
$sdkNameParts = $_."Name".Split(" ")
|
||||
return [System.Version]::Parse($sdkNameParts[-1])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -320,19 +326,10 @@ function Invoke-ValidateCommand {
|
||||
function Update-DyldCache {
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
[array] $XcodeVersions
|
||||
[string] $Version
|
||||
)
|
||||
|
||||
# Find the latest stable Xcode version (excluding beta and RC versions)
|
||||
$latestStableXcode = $XcodeVersions | Where-Object {
|
||||
-not ($_.link.Contains("beta") -or $_.link.Contains("Release_Candidate") -or $_.link.Contains("_RC"))
|
||||
} | Sort-Object { [version]($_.version -split '\+')[0] } -Descending | Select-Object -First 1
|
||||
|
||||
if ($latestStableXcode) {
|
||||
Write-Host "Updating dyld shared cache for Xcode $($latestStableXcode.link)..."
|
||||
Switch-Xcode -Version $latestStableXcode.link
|
||||
Invoke-ValidateCommand "xcrun simctl runtime dyld_shared_cache update --all"
|
||||
} else {
|
||||
Write-Host "No stable Xcode version found for dyld cache update."
|
||||
}
|
||||
Write-Host "Updating dyld shared cache for Xcode $Version ..."
|
||||
Switch-Xcode -Version $Version
|
||||
Invoke-ValidateCommand "xcrun simctl runtime dyld_shared_cache update --all"
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -26,10 +26,15 @@ Describe "Python3" {
|
||||
"pipx --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
It "Pip 3 and Python 3 came from the same brew formula" {
|
||||
It "Pip 3 and Python 3 came from the same path prefix" {
|
||||
$pip3Path = Split-Path (readlink (which pip3))
|
||||
$python3Path = Split-Path (readlink (which python3))
|
||||
$pip3Path | Should -BeExactly $python3Path
|
||||
}
|
||||
|
||||
It "Pip 3 and Python 3 came from brew formula" {
|
||||
Split-Path (readlink (which pip3)) | Should -BeLike "*/Cellar/*"
|
||||
Split-Path (readlink (which python3)) | Should -BeLike "*/Cellar/*"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
Describe "RunnerCache" {
|
||||
Context "runner cache directory not empty" {
|
||||
It "<RunnerCachePath> not empty" -TestCases @{ RunnerCachePath = "/opt/runner-cache" } {
|
||||
(Get-ChildItem -Path "$RunnerCachePath/*.tar.gz" -Recurse).Count | Should -BeGreaterThan 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ Describe "Toolcache" {
|
||||
}
|
||||
}
|
||||
|
||||
Context "Ruby" -Skip:($os.IsArm64) {
|
||||
Context "Ruby" {
|
||||
$rubyDirectory = Join-Path $toolcacheDirectory "Ruby"
|
||||
$rubyPackage = $packages | Where-Object { $_.ToolName -eq "Ruby" } | Select-Object -First 1
|
||||
$testCase = @{ RubyDirectory = $rubyDirectory }
|
||||
@@ -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,301 +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-runner-package.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"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -235,7 +235,6 @@ build {
|
||||
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-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
@@ -274,15 +273,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-14-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" {
|
||||
|
||||
@@ -236,7 +236,6 @@ build {
|
||||
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-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
@@ -273,15 +272,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-14-arm64-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" {
|
||||
|
||||
@@ -234,7 +234,6 @@ build {
|
||||
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-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
@@ -273,15 +272,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-15-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" {
|
||||
|
||||
@@ -235,7 +235,6 @@ build {
|
||||
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-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.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-15-arm64-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" {
|
||||
|
||||
+16
-12
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -237,14 +233,16 @@ build {
|
||||
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-runner-package.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",
|
||||
@@ -273,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" {
|
||||
@@ -234,7 +234,6 @@ build {
|
||||
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-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
@@ -271,15 +270,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-arm64-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,256 +0,0 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "15.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{ "link": "15.2", "filename": "15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
|
||||
{ "link": "15.1", "filename": "15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
|
||||
{ "link": "15.0.1", "filename": "15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
|
||||
{ "link": "14.3.1", "filename": "14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
|
||||
{ "link": "14.2", "filename": "14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
|
||||
{ "link": "14.1", "filename": "14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
|
||||
]
|
||||
},
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{ "link": "15.2", "filename": "15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
|
||||
{ "link": "15.1", "filename": "15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
|
||||
{ "link": "15.0.1", "filename": "15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
|
||||
{ "link": "14.3.1", "filename": "14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
|
||||
{ "link": "14.2", "filename": "14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
|
||||
{ "link": "14.1", "filename": "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.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
"versions": [
|
||||
{
|
||||
"link": "16.2",
|
||||
"filename": "16.2",
|
||||
"filename": "Xcode_16.2",
|
||||
"version": "16.2+16C5032a",
|
||||
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
|
||||
"install_runtimes": [
|
||||
@@ -16,42 +16,42 @@
|
||||
},
|
||||
{
|
||||
"link": "16.1",
|
||||
"filename": "16.1",
|
||||
"filename": "Xcode_16.1",
|
||||
"version": "16.1+16B40",
|
||||
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.4",
|
||||
"filename": "15.4",
|
||||
"filename": "Xcode_15.4",
|
||||
"version": "15.4.0+15F31d",
|
||||
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.3",
|
||||
"filename": "15.3",
|
||||
"filename": "Xcode_15.3",
|
||||
"version": "15.3.0+15E204a",
|
||||
"sha256": "f13f6a2e2df432c3008e394640b8549a18c285acd7fd148d6c4bac8c3a5af234",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.2",
|
||||
"filename": "15.2",
|
||||
"filename": "Xcode_15.2",
|
||||
"version": "15.2.0+15C500b",
|
||||
"sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.1",
|
||||
"filename": "15.1",
|
||||
"filename": "Xcode_15.1",
|
||||
"version": "15.1.0+15C65",
|
||||
"sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.0.1",
|
||||
"filename": "15.0.1",
|
||||
"filename": "Xcode_15.0.1",
|
||||
"version": "15.0.1+15A507",
|
||||
"sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8",
|
||||
"symlinks": ["15.0"],
|
||||
@@ -63,7 +63,7 @@
|
||||
"versions": [
|
||||
{
|
||||
"link": "16.2",
|
||||
"filename": "16.2",
|
||||
"filename": "Xcode_16.2",
|
||||
"version": "16.2+16C5032a",
|
||||
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
|
||||
"install_runtimes": [
|
||||
@@ -75,42 +75,42 @@
|
||||
},
|
||||
{
|
||||
"link": "16.1",
|
||||
"filename": "16.1",
|
||||
"filename": "Xcode_16.1",
|
||||
"version": "16.1+16B40",
|
||||
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.4",
|
||||
"filename": "15.4",
|
||||
"filename": "Xcode_15.4",
|
||||
"version": "15.4.0+15F31d",
|
||||
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.3",
|
||||
"filename": "15.3",
|
||||
"filename": "Xcode_15.3",
|
||||
"version": "15.3.0+15E204a",
|
||||
"sha256": "f13f6a2e2df432c3008e394640b8549a18c285acd7fd148d6c4bac8c3a5af234",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.2",
|
||||
"filename": "15.2",
|
||||
"filename": "Xcode_15.2",
|
||||
"version": "15.2.0+15C500b",
|
||||
"sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.1",
|
||||
"filename": "15.1",
|
||||
"filename": "Xcode_15.1",
|
||||
"version": "15.1.0+15C65",
|
||||
"sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "15.0.1",
|
||||
"filename": "15.0.1",
|
||||
"filename": "Xcode_15.0.1",
|
||||
"version": "15.0.1+15A507",
|
||||
"sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8",
|
||||
"symlinks": ["15.0"],
|
||||
@@ -132,19 +132,20 @@
|
||||
"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"
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5"
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27", "28"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -152,7 +153,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -192,7 +193,6 @@
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
@@ -203,13 +203,15 @@
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -222,9 +224,6 @@
|
||||
"fastlane"
|
||||
]
|
||||
},
|
||||
"python": {
|
||||
"default": "3.13"
|
||||
},
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "Python",
|
||||
@@ -233,18 +232,19 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -256,7 +256,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
@@ -264,7 +263,6 @@
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
@@ -302,18 +300,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -326,7 +324,7 @@
|
||||
"version": "15"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.4"
|
||||
"version": "8.5"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
|
||||
@@ -4,56 +4,78 @@
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.1_beta_2",
|
||||
"filename": "26.1_beta_2_Universal",
|
||||
"version": "26.1-Beta_2+17B5035f",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "D06679C151B84CBD5B4348A11FD312B7746BD2C95BF5A75FB316F33C428AE76F",
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"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",
|
||||
"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": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "16.4",
|
||||
"filename": "Xcode_16.4",
|
||||
"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",
|
||||
"filename": "16.3",
|
||||
"filename": "Xcode_16.3",
|
||||
"version": "16.3+16E140",
|
||||
"sha256": "c593177b73e45f31e1cf7ced131760d8aa8e1532f5bbf8ba11a4ded01da14fbb",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16.2",
|
||||
"filename": "16.2",
|
||||
"filename": "Xcode_16.2",
|
||||
"version": "16.2+16C5032a",
|
||||
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16.1",
|
||||
"filename": "16.1",
|
||||
"filename": "Xcode_16.1",
|
||||
"version": "16.1+16B40",
|
||||
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16",
|
||||
"filename": "16",
|
||||
"filename": "Xcode_16",
|
||||
"version": "16.0.0+16A242d",
|
||||
"sha256": "4a26c3d102a55c7222fb145e0ee1503249c9c26c6e02dc64d783c8810b37b1e3",
|
||||
"symlinks": ["16.0"],
|
||||
@@ -64,57 +86,81 @@
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.1_beta_2",
|
||||
"filename": "26.1_beta_2_Universal",
|
||||
"version": "26.1-Beta_2+17B5035f",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "D06679C151B84CBD5B4348A11FD312B7746BD2C95BF5A75FB316F33C428AE76F",
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"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": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] },
|
||||
{ "visionOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "16.4",
|
||||
"filename": "Xcode_16.4",
|
||||
"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"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.3",
|
||||
"filename": "16.3",
|
||||
"filename": "Xcode_16.3",
|
||||
"version": "16.3+16E140",
|
||||
"sha256": "c593177b73e45f31e1cf7ced131760d8aa8e1532f5bbf8ba11a4ded01da14fbb",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16.2",
|
||||
"filename": "16.2",
|
||||
"filename": "Xcode_16.2",
|
||||
"version": "16.2+16C5032a",
|
||||
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16.1",
|
||||
"filename": "16.1",
|
||||
"filename": "Xcode_16.1",
|
||||
"version": "16.1+16B40",
|
||||
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "16",
|
||||
"filename": "16",
|
||||
"filename": "Xcode_16",
|
||||
"version": "16.0.0+16A242d",
|
||||
"sha256": "4a26c3d102a55c7222fb145e0ee1503249c9c26c6e02dc64d783c8810b37b1e3",
|
||||
"symlinks": ["16.0"],
|
||||
@@ -143,12 +189,13 @@
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5"
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"26", "27","28"
|
||||
"27", "28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -156,7 +203,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.5.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -196,7 +243,6 @@
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
@@ -207,13 +253,15 @@
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -226,9 +274,6 @@
|
||||
"fastlane"
|
||||
]
|
||||
},
|
||||
"python": {
|
||||
"default": "3.13"
|
||||
},
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "Python",
|
||||
@@ -237,18 +282,19 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -260,7 +306,6 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
@@ -268,7 +313,6 @@
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
@@ -306,18 +350,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -330,7 +374,7 @@
|
||||
"version": "18"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.4"
|
||||
"version": "8.5"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
|
||||
@@ -1,35 +1,112 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "26.0.1",
|
||||
"arm64":{
|
||||
"default": "26.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.1_beta_2",
|
||||
"filename": "26.1_beta_2_Universal",
|
||||
"version": "26.1-Beta_2+17B5035f",
|
||||
"link": "26.5_beta_2",
|
||||
"filename": "Xcode_26.5_beta_2_Universal",
|
||||
"version": "26.5+17F5022i",
|
||||
"symlinks": ["26.5"],
|
||||
"sha256": "4e08f652cf56fe32d209f55d64f1ec71c20c8acfeb92898a21215ca71e17ff7d",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.4.1",
|
||||
"filename": "Xcode_26.4.1_Universal",
|
||||
"version": "26.4.1+17E202",
|
||||
"symlinks": ["26.4"],
|
||||
"sha256": "e2698ef350e5b38740132b1110d02bd22a1feb928c3e019c168d373ce00e3ffa",
|
||||
"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",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "D06679C151B84CBD5B4348A11FD312B7746BD2C95BF5A75FB316F33C428AE76F",
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "26.0.1_Universal",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "none"
|
||||
}
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.5_beta_2",
|
||||
"filename": "Xcode_26.5_beta_2_Universal",
|
||||
"version": "26.5+17F5022i",
|
||||
"symlinks": ["26.5"],
|
||||
"sha256": "4e08f652cf56fe32d209f55d64f1ec71c20c8acfeb92898a21215ca71e17ff7d",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.4.1",
|
||||
"filename": "Xcode_26.4.1_Universal",
|
||||
"version": "26.4.1+17E202",
|
||||
"symlinks": ["26.4"],
|
||||
"sha256": "e2698ef350e5b38740132b1110d02bd22a1feb928c3e019c168d373ce00e3ffa",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "16.4",
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"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": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["18.5"] },
|
||||
{ "visionOS": ["2.5"] }
|
||||
{ "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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -54,12 +131,13 @@
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5"
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"27","28"
|
||||
"27","28", "29"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -67,7 +145,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"14.3.0"
|
||||
"14.6.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -93,6 +171,7 @@
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
@@ -101,9 +180,7 @@
|
||||
"xcbeautify",
|
||||
"xcodes"
|
||||
],
|
||||
"cask_packages": [
|
||||
"parallels"
|
||||
]
|
||||
"cask_packages": []
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
@@ -114,10 +191,18 @@
|
||||
},
|
||||
"dotnet": {
|
||||
"arch":{
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -130,20 +215,26 @@
|
||||
"fastlane"
|
||||
]
|
||||
},
|
||||
"python": {
|
||||
"default": "3.13"
|
||||
},
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "Python",
|
||||
"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.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -153,6 +244,13 @@
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
@@ -167,6 +265,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": [
|
||||
@@ -180,11 +286,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.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -196,6 +311,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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user