Compare commits

..
156 changed files with 2329 additions and 5281 deletions
+2 -2
View File
@@ -38,12 +38,12 @@ body:
options:
- label: Ubuntu 22.04
- label: Ubuntu 24.04
- label: Ubuntu Slim
- label: macOS 13
- label: macOS 13 Arm64
- label: macOS 14
- label: macOS 14 Arm64
- label: macOS 15
- label: macOS 15 Arm64
- label: macOS 26 Arm64
- label: Windows Server 2019
- label: Windows Server 2022
- label: Windows Server 2025
+2 -2
View File
@@ -21,12 +21,12 @@ body:
options:
- label: Ubuntu 22.04
- label: Ubuntu 24.04
- label: Ubuntu Slim
- label: macOS 13
- label: macOS 13 Arm64
- label: macOS 14
- label: macOS 14 Arm64
- label: macOS 15
- label: macOS 15 Arm64
- label: macOS 26 Arm64
- label: Windows Server 2019
- label: Windows Server 2022
- label: Windows Server 2025
+2 -2
View File
@@ -59,12 +59,12 @@ body:
options:
- label: Ubuntu 22.04
- label: Ubuntu 24.04
- label: Ubuntu Slim
- label: macOS 13
- label: macOS 13 Arm64
- label: macOS 14
- label: macOS 14 Arm64
- label: macOS 15
- label: macOS 15 Arm64
- label: macOS 26 Arm64
- label: Windows Server 2019
- label: Windows Server 2022
- label: Windows Server 2025
-39
View File
@@ -1,39 +0,0 @@
# 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.
+2 -2
View File
@@ -10,10 +10,10 @@ permissions:
jobs:
check-pinning-dates:
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Validate JSON Schema
shell: pwsh
+1 -1
View File
@@ -40,7 +40,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
+3 -2
View File
@@ -10,12 +10,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create release for ${{ github.event.client_payload.ReleaseBranchName }}
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b #v1.20.0
uses: ncipollo/release-action@v1.16.0
with:
tag: ${{ github.event.client_payload.ReleaseBranchName }}
name: ${{ github.event.client_payload.ReleaseTitle }}
body: ${{ github.event.client_payload.ReleaseBody }}
prerelease: ${{ github.event.client_payload.Prerelease }}
commit: ${{ github.event.client_payload.Commitish }}
allowUpdates: true
+9 -23
View File
@@ -7,10 +7,10 @@ on:
jobs:
Create_pull_request:
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -22,36 +22,22 @@ jobs:
- name: Create pull request for ${{ github.event.client_payload.ReleaseBranchName }}
id: create-pr
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const pulls = await github.rest.pulls.list({
let response = await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:${{ github.event.client_payload.ReleaseBranchName }}-docs`,
title: "${{ github.event.client_payload.PullRequestTitle }}",
head: "${{ github.event.client_payload.ReleaseBranchName }}-docs",
base: "${{ github.event.client_payload.PullRequestBase }}",
state: 'open'
body: `${{ github.event.client_payload.PullRequestBody }}`
});
if (pulls.data.length > 0) {
console.log(`Pull request already exists: ${pulls.data[0].html_url}`);
return pulls.data[0].number;
} else {
console.log('No existing pull request found, creating new one');
let response = await github.rest.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: "${{ github.event.client_payload.PullRequestTitle }}",
head: "${{ github.event.client_payload.ReleaseBranchName }}-docs",
base: "${{ github.event.client_payload.PullRequestBase }}",
body: `${{ github.event.client_payload.PullRequestBody }}`
});
return response.data.number;
}
return response.data.number
- name: Request reviewers
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.PRAPPROVAL_SECRET}}
script: |
+31 -46
View File
@@ -1,112 +1,97 @@
name: Create SBOM for the release
run-name: Collecting SBOM for ${{ github.event.client_payload.agentSpec || 'unknown image' }} - ${{ github.event.client_payload.imageVersion || 'unknown version' }}
# 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"
# github.event.client_payload.ReleaseBranchName - Necessary to identify workflow run
#
# Current SYFT tool issues:
# macOS (major): prompt privilegies that blocking process indefinetely (https://github.com/anchore/syft/issues/1367)
run-name: Collecting SBOM for ${{ github.event.client_payload.ReleaseBranchName || 'unknown release' }}
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 SBOM asset for release ${{ env.RELEASE_ID }}
- name: Check release for ${{ github.event.client_payload.ReleaseBranchName }}
id: check
shell: pwsh
run: |
$apiUrl = "https://api.github.com/repos/actions/runner-images/releases/$env:RELEASE_ID"
$apiUrl = "https://api.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}"
$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 $env:RELEASE_ID wasn't found"
Write-Error "Release ${{ github.event.client_payload.ReleaseID }} wasn't found"
exit 1
}
foreach ($asset in $response.assets) {
if ($asset.name -like '*sbom*') {
echo "status=sbom_exists" >> $env:GITHUB_OUTPUT
return "Release $env:RELEASE_ID already contains a SBOM"
return "Release ${{ github.event.client_payload.ReleaseID }} 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
- name: Available image version check for ${{ github.event.client_payload.ReleaseBranchName }}
run: |
$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'"
$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 }}."
}
- 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
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b D:/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
run: D:/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-${{ env.AGENT_SPEC }}-${{ env.IMAGE_VERSION }}
name: sbom-${{ github.event.client_payload.agentSpec }}-${{ github.event.client_payload.imageVersion }}
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/${{ env.RELEASE_ID }}/assets{?name,label}"
upload_url: "https://uploads.github.com/repos/actions/runner-images/releases/${{ github.event.client_payload.ReleaseID }}/assets{?name,label}"
asset_path: ./sbom.json.zip
asset_name: sbom.${{ env.AGENT_SPEC }}.json.zip
asset_name: sbom.${{ github.event.client_payload.agentSpec }}.json.zip
asset_content_type: application/zip
-31
View File
@@ -1,31 +0,0 @@
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
+1 -1
View File
@@ -17,7 +17,7 @@ jobs:
steps:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
with:
fetch-depth: 0
+4 -4
View File
@@ -7,10 +7,10 @@ on:
jobs:
Merge_pull_request:
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v4
with:
fetch-depth: 0
@@ -24,7 +24,7 @@ jobs:
sleep 30
- name: Approve pull request by GitHub-Actions bot
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.PRAPPROVAL_SECRET}}
script: |
@@ -36,7 +36,7 @@ jobs:
});
- name: Merge pull request for ${{ github.event.client_payload.ReleaseBranchName }}
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout Repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Run Software Report module tests
shell: pwsh
@@ -23,7 +23,7 @@ jobs:
CI_REPO: ${{ vars.CI_REPO }}
steps:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Trigger Build workflow
run: |
@@ -78,7 +78,7 @@ jobs:
needs: trigger-workflow
steps:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Wait for workflow completion
env:
@@ -106,7 +106,7 @@ jobs:
if: cancelled()
steps:
- name: Checkout Code
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Cancel workflow
env:
+4 -2
View File
@@ -7,11 +7,13 @@ on:
jobs:
Update_GitHub_release:
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update release for ${{ github.event.client_payload.ReleaseBranchName }}
uses: actions/github-script@v8
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Validate JSON Schema
shell: pwsh
+2 -188
View File
@@ -10,18 +10,11 @@ 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 [Adding a new tool to an image](#adding-a-new-tool-to-an-image) for details).
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. 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].
@@ -35,7 +28,7 @@ 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.
## Adding a new tool to an image
## How to add a new tool
### General rules
@@ -67,185 +60,6 @@ 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/)
+15 -16
View File
@@ -18,19 +18,19 @@ 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] |
| Ubuntu Slim | `ubuntu-slim` | [ubuntu-slim] |
| 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] |
| Windows Server 2025 | `windows-latest` or `windows-2025` | [windows-2025] |
| Windows Server 2022 | `windows-2022` | [windows-2022] |
| Windows Server 2019 [![Deprecated badge](https://img.shields.io/badge/-Deprecated-red)](https://github.com/actions/runner-images/issues/12045) | `windows-2019` | [windows-2019] |
| Image | YAML Label | Included Software | Rollout Status of Latest Image Release |
| --------------------|---------------------|--------------------|--------------------|
| Ubuntu 24.04 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fubuntu24.json) |
| Ubuntu 22.04 | `ubuntu-22.04` | [ubuntu-22.04] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fubuntu22.json) |
| macOS 15 | `macos-15-large`| [macOS-15] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-15.json) |
| macOS 15 Arm64 | `macos-15` or `macos-15-xlarge` | [macOS-15-arm64] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-15-arm64.json) |
| macOS 14 | `macos-latest-large` or `macos-14-large`| [macOS-14] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-14.json) |
| macOS 14 Arm64 |`macos-latest`, `macos-14`, `macos-latest-xlarge` or `macos-14-xlarge`| [macOS-14-arm64] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-14-arm64.json) |
| macOS 13 | `macos-13` or `macos-13-large` | [macOS-13] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-13.json) |
| macOS 13 Arm64 | `macos-13-xlarge` | [macOS-13-arm64] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-13-arm64.json) |
| Windows Server 2025 | `windows-2025` | [windows-2025] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fwin25.json) |
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fwin22.json) |
| Windows Server 2019 | `windows-2019` | [windows-2019] | ![Deprecated](https://img.shields.io/badge/-Deprecated-red) |
### Label scheme
@@ -39,15 +39,15 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
[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
[ubuntu-slim]: https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md
[windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md
[windows-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-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-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
## Announcements
@@ -120,7 +120,6 @@ The `-latest` migration process is gradual and happens over 1-2 months in order
| GCC <br/> GNU Fortran <br/> Clang <br/> GNU C++ | 3 latest major versions |
| Android NDK | 1 latest non-LTS, 2 latest LTS versions |
| Xcode | - only one major version of Xcode will be supported per macOS version <br/> - all minor versions of the supported major version will be available <br/> - beta and RC versions will be provided "as-is" in the latest available macOS image only no matter of beta/GA status of the image <br/> - when a new patch version is released, the previous patch version will be replaced |
| Xcode Platforms | - only three major.minor versions of platform tools and simulator runtimes will be available for installed Xcode, including beta/RC versions |
### Package managers usage
+69 -73
View File
@@ -1,108 +1,105 @@
| 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] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[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
- Image Version: 20250714.1328
## 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
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.302
- 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
- Kotlin 2.1.10-release-473
- Mono 6.12.0.188
- Node.js 20.19.5
- Node.js 20.19.3
- Perl 5.40.2
- PHP 8.4.12
- Python3 3.13.7
- Ruby 3.3.9
- PHP 8.4.10
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 2.7.1
- Bundler 2.6.9
- Carthage 0.40.0
- CocoaPods 1.16.2
- Composer 2.8.11
- Homebrew 4.6.9
- Composer 2.8.10
- Homebrew 4.5.9
- NPM 10.8.2
- NuGet 6.3.1.1
- Pip3 25.2 (python 3.13)
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.7.1
- Vcpkg 2025 (build from commit 4a7ce81d91)
- RubyGems 3.6.9
- Vcpkg 2025 (build from commit e86ec03236)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.0.0
- Apache Maven 3.9.10
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.30.0
- bazel 8.4.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.0
- bsdtar 3.5.3 - available by 'tar' alias
- Curl 8.15.0
- Curl 8.14.1
- Git 2.50.1
- Git LFS 3.7.0
- GitHub CLI 2.78.0
- GitHub CLI 2.75.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
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.1
- yq 4.47.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.1
### Tools
- AWS CLI 2.28.25
- AWS SAM CLI 1.143.0
- AWS CLI 2.27.50
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.77.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.37.4
- Cmake 4.1.1
- CodeQL Action Bundle 2.23.0
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.57.2
- Xcbeautify 2.30.1
- SwiftFormat 0.57.0
- Xcbeautify 2.29.0
- Xcode Command Line Tools 14.3.1.0.1.1683849156
- Xcodes 1.6.2
### Linters
- SwiftLint 0.61.0
- SwiftLint 0.59.1
### 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
- Google Chrome 138.0.7204.101
- Google Chrome for Testing 138.0.7204.94
- ChromeDriver 138.0.7204.94
- Microsoft Edge 138.0.3351.83
- Microsoft Edge WebDriver 138.0.3351.83
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.35.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
@@ -114,10 +111,10 @@
### 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 |
| 8.0.452+9 | JAVA_HOME_8_X64 |
| 11.0.27+6 | JAVA_HOME_11_X64 |
| 17.0.15+6 (default) | JAVA_HOME_17_X64 |
| 21.0.7+6.0 | JAVA_HOME_21_X64 |
### Cached Tools
@@ -130,9 +127,9 @@
#### Ruby
- 3.1.7
- 3.2.9
- 3.3.9
- 3.4.5
- 3.2.8
- 3.3.8
- 3.4.4
#### Python
- 3.8.18
@@ -140,27 +137,26 @@
- 3.10.18
- 3.11.9
- 3.12.10
- 3.13.7
- 3.13.5
#### Node.js
- 18.20.8
- 20.19.5
- 22.19.0
- 20.19.3
- 22.17.0
#### Go
- 1.22.12
- 1.23.12
- 1.24.7
- 1.25.1
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.89.0
- Rust 1.89.0
- Rustdoc 1.89.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.89
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
@@ -244,18 +240,18 @@
| 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 |
| Package Name | Version |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 35.6.11 |
| 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 (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.2.12479018<br>28.2.13676358 |
#### Environment variables
| Name | Value |
@@ -268,12 +264,12 @@
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
### Miscellaneous
- Tcl/Tk 8.6.17
- Tcl/Tk 8.6.16
#### Environment variables
| Name | Value |
| ----------------- | ----------------------------------------------------------------------------------------- |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.0.1-57243/ParallelsDesktop-26.0.1-57243.dmg |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.4.0-55980/ParallelsDesktop-20.4.0-55980.dmg |
##### Notes
```
+62 -68
View File
@@ -1,88 +1,85 @@
| 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] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[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
- Image Version: 20250714.1403
## 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
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.302
- 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
- Kotlin 2.1.10-release-473
- Mono 6.12.0.188
- Node.js 20.19.5
- Node.js 20.19.3
- Perl 5.40.2
- Python3 3.13.7
- Ruby 3.3.9
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 2.7.1
- Bundler 2.6.9
- Carthage 0.40.0
- CocoaPods 1.16.2
- Homebrew 4.6.9
- Homebrew 4.5.9
- NPM 10.8.2
- NuGet 6.3.1.1
- Pip3 25.2 (python 3.13)
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.7.1
- RubyGems 3.6.9
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.0.0
- Apache Maven 3.9.10
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.30.0
- bazel 8.4.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.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
- GitHub CLI 2.75.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
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.1
- yq 4.47.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.1
### Tools
- AWS CLI 2.28.25
- AWS SAM CLI 1.143.0
- AWS CLI 2.27.50
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.77.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.37.4
- Cmake 4.1.1
- CodeQL Action Bundle 2.23.0
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.57.2
- Xcbeautify 2.30.1
- SwiftFormat 0.57.0
- Xcbeautify 2.29.0
- Xcode Command Line Tools 14.3.1.0.1.1683849156
- Xcodes 1.6.2
@@ -91,61 +88,58 @@
### 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
- Google Chrome 138.0.7204.101
- Google Chrome for Testing 138.0.7204.94
- ChromeDriver 138.0.7204.94
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.35.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
| --------------- | --------------------------------------- |
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
| EDGEWEBDRIVER | |
| 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 |
| 11.0.27+6 | JAVA_HOME_11_arm64 |
| 17.0.15+6 (default) | JAVA_HOME_17_arm64 |
| 21.0.7+6.0 | JAVA_HOME_21_arm64 |
### Cached Tools
#### Ruby
- 3.1.7
- 3.2.9
- 3.3.9
- 3.4.5
- 3.2.8
- 3.3.8
- 3.4.4
#### Python
- 3.11.9
- 3.12.10
- 3.13.7
- 3.13.5
#### Node.js
- 18.20.8
- 20.19.5
- 22.19.0
- 20.19.3
- 22.17.0
#### Go
- 1.22.12
- 1.23.12
- 1.24.7
- 1.25.1
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.89.0
- Rust 1.89.0
- Rustdoc 1.89.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.89
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
@@ -203,8 +197,8 @@
| 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 |
| 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 |
@@ -230,18 +224,18 @@
| 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 |
| Package Name | Version |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 35.6.11 |
| 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 (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.2.12479018<br>28.2.13676358 |
#### Environment variables
| Name | Value |
@@ -254,5 +248,5 @@
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
### Miscellaneous
- Tcl/Tk 8.6.17
- Tcl/Tk 8.6.16
+107 -111
View File
@@ -1,107 +1,105 @@
| Announcements |
|-|
| [[macOS] Deprecation of Xcode 16.3 and older runtimes on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
| [[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] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
***
# macOS 14
- OS Version: macOS 14.8.3 (23J220)
- OS Version: macOS 14.7.6 (23H626)
- Kernel Version: Darwin 23.6.0
- Image Version: 20251215.0069.1
- Image Version: 20250721.1458
## Installed Software
### Language and Runtime
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.303
- 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.2.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.2.0) - available by `gfortran-15` alias
- Kotlin 2.2.21-release-469
- Kotlin 2.2.0-release-294
- Mono 6.12.0.188
- Node.js 20.19.6
- Node.js 20.19.4
- Perl 5.40.2
- PHP 8.5.0
- Python3 3.14.2
- Ruby 3.3.10
- PHP 8.4.10
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 4.0.1
- Bundler 2.7.0
- Carthage 0.40.0
- CocoaPods 1.16.2
- Composer 2.9.2
- Homebrew 5.0.5
- Composer 2.8.10
- Homebrew 4.5.10
- NPM 10.8.2
- NuGet 6.3.1.1
- Pip3 25.3 (python 3.14)
- Pipx 1.8.0
- RubyGems 4.0.1
- Vcpkg 2025 (build from commit 594ad8871e)
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.7.0
- Vcpkg 2025 (build from commit ef97fc17c7)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.2.1
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.31.0
- bazel 8.5.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.0
- bsdtar 3.5.3 - available by 'tar' alias
- Curl 8.17.0
- Curl 8.15.0
- Git 2.50.1
- Git LFS 3.7.1
- GitHub CLI 2.83.2
- Git LFS 3.7.0
- GitHub CLI 2.76.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.3
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.2
- yq 4.50.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.2
- Ninja 1.13.1
### Tools
- AWS CLI 2.32.16
- AWS SAM CLI 1.149.0
- AWS Session Manager CLI 1.2.764.0
- Azure CLI 2.81.0
- AWS CLI 2.27.55
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.39.26
- Cmake 4.2.1
- CodeQL Action Bundle 2.23.8
- Fastlane 2.229.1
- SwiftFormat 0.58.7
- Xcbeautify 3.1.2
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.57.2
- Xcbeautify 2.29.0
- Xcode Command Line Tools 16.2.0.0.1.1733547573
- Xcodes 1.6.2
### Linters
- SwiftLint 0.62.2
- SwiftLint 0.59.1
### Browsers
- Safari 26.2 (19623.1.14.18.4)
- SafariDriver 26.2 (19623.1.14.18.4)
- Google Chrome 143.0.7499.110
- Google Chrome for Testing 143.0.7499.42
- ChromeDriver 143.0.7499.42
- Microsoft Edge 143.0.3650.80
- Microsoft Edge WebDriver 143.0.3650.80
- Mozilla Firefox 146.0
- Safari 18.5 (19621.2.5.18.1)
- SafariDriver 18.5 (19621.2.5.18.1)
- Google Chrome 138.0.7204.158
- Google Chrome for Testing 138.0.7204.157
- ChromeDriver 138.0.7204.157
- Microsoft Edge 138.0.3351.95
- Microsoft Edge WebDriver 138.0.3351.95
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.38.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
@@ -111,52 +109,50 @@
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
### Java
| Version | Environment Variable |
| --------------------- | -------------------- |
| 8.0.472+8 | JAVA_HOME_8_X64 |
| 11.0.29+7 | JAVA_HOME_11_X64 |
| 17.0.17+10 | JAVA_HOME_17_X64 |
| 21.0.9+10.0 (default) | JAVA_HOME_21_X64 |
| 25.0.1+8.0 | JAVA_HOME_25_X64 |
| Version | Environment Variable |
| -------------------- | -------------------- |
| 8.0.452+9 | 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 |
### Cached Tools
#### Ruby
- 3.2.9
- 3.3.10
- 3.4.7
- 3.1.7
- 3.2.8
- 3.3.8
- 3.4.5
#### Python
- 3.9.25
- 3.10.19
- 3.9.23
- 3.10.18
- 3.11.9
- 3.12.10
- 3.13.11
- 3.14.2
- 3.13.5
#### Node.js
- 20.19.6
- 22.21.1
- 24.12.0
- 18.20.8
- 20.19.4
- 22.17.1
#### Go
- 1.22.12
- 1.23.12
- 1.24.11
- 1.25.5
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.92.0
- Rust 1.92.0
- Rustdoc 1.92.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.92
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
- PowerShell 7.4.13
- PowerShell 7.4.11
#### PowerShell Modules
- Az: 12.5.0
@@ -237,40 +233,40 @@
| DriverKit 24.2 | driverkit24.2 | 16.2 |
#### Installed Simulators
| Name | OS | Simulators |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| iOS 17.0 | 17.0.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
| iOS 17.2 | 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
| iOS 17.4 | 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 17.5 | 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.1 | 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.2 | 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| tvOS 17.0 | 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.2 | 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.4 | 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.5 | 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.1 | 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| watchOS 10.0 | 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.2 | 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.4 | 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.5 | 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.1 | 11.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| 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) |
### Android
| Package Name | Version |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 36.3.10 |
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
| Android SDK Platform-Tools | 36.0.0 |
| Android Support Repository | 47.0.0 |
| CMake | 3.31.5<br>4.1.2 |
| Google Play services | 49 |
| Google Repository | 58 |
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
| Package Name | Version |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 35.6.11 |
| 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 (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 |
@@ -278,17 +274,17 @@
| 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/29.0.14206865 |
| 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
- Tcl/Tk 8.6.16
#### Environment variables
| Name | Value |
| ----------------- | ----------------------------------------------------------------------------------------- |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v26/26.1.2-57293/ParallelsDesktop-26.1.2-57293.dmg |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.4.0-55980/ParallelsDesktop-20.4.0-55980.dmg |
##### Notes
```
+106 -110
View File
@@ -1,154 +1,150 @@
| Announcements |
|-|
| [[macOS] Deprecation of Xcode 16.3 and older runtimes on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
| [[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] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
***
# macOS 14
- OS Version: macOS 14.8.3 (23J220)
- OS Version: macOS 14.7.6 (23H626)
- Kernel Version: Darwin 23.6.0
- Image Version: 20251216.0055.1
- Image Version: 20250715.1663
## Installed Software
### Language and Runtime
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.302
- 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.2.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.2.0) - available by `gfortran-15` alias
- Kotlin 2.2.21-release-469
- Kotlin 2.1.10-release-473
- Mono 6.12.0.188
- Node.js 20.19.6
- Node.js 20.19.3
- Perl 5.40.2
- Python3 3.14.2
- Ruby 3.3.10
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 4.0.1
- Bundler 2.6.9
- Carthage 0.40.0
- CocoaPods 1.16.2
- Homebrew 5.0.5
- Homebrew 4.5.10
- NPM 10.8.2
- NuGet 6.3.1.1
- Pip3 25.3 (python 3.14)
- Pipx 1.8.0
- RubyGems 4.0.1
- Vcpkg 2025 (build from commit 9984495d19)
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.6.9
- Vcpkg 2025 (build from commit 30f771d4ac)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.2.1
- Apache Maven 3.9.10
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.31.0
- bazel 8.5.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.0
- bsdtar 3.5.3 - available by 'tar' alias
- Curl 8.7.1
- Git 2.50.1
- Git LFS 3.7.1
- GitHub CLI 2.83.2
- Git LFS 3.7.0
- GitHub CLI 2.75.1
- 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.3
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.2
- yq 4.50.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.2
- Ninja 1.13.1
### Tools
- AWS CLI 2.32.17
- AWS SAM CLI 1.149.0
- AWS Session Manager CLI 1.2.764.0
- Azure CLI 2.81.0
- AWS CLI 2.27.50
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.39.26
- Cmake 4.2.1
- CodeQL Action Bundle 2.23.8
- Fastlane 2.229.1
- SwiftFormat 0.58.7
- Xcbeautify 3.1.2
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.57.2
- Xcbeautify 2.29.0
- Xcode Command Line Tools 16.2.0.0.1.1733547573
- Xcodes 1.6.2
### Linters
### Browsers
- Safari 26.2 (19623.1.14.18.4)
- SafariDriver 26.2 (19623.1.14.18.4)
- Google Chrome 143.0.7499.110
- Google Chrome for Testing 143.0.7499.42
- ChromeDriver 143.0.7499.42
- Microsoft Edge 143.0.3650.80
- Microsoft Edge WebDriver 143.0.3650.80
- Mozilla Firefox 146.0
- Safari 18.5 (19621.2.5.18.1)
- SafariDriver 18.5 (19621.2.5.18.1)
- Google Chrome 138.0.7204.101
- Google Chrome for Testing 138.0.7204.94
- ChromeDriver 138.0.7204.94
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.38.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
| --------------- | --------------------------------------- |
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
| EDGEWEBDRIVER | |
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
### Java
| Version | Environment Variable |
| --------------------- | -------------------- |
| 11.0.29+7 | JAVA_HOME_11_arm64 |
| 17.0.17+10 | JAVA_HOME_17_arm64 |
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
| Version | Environment Variable |
| -------------------- | -------------------- |
| 11.0.27+6 | JAVA_HOME_11_arm64 |
| 17.0.15+6 | JAVA_HOME_17_arm64 |
| 21.0.7+6.0 (default) | JAVA_HOME_21_arm64 |
### Cached Tools
#### Ruby
- 3.2.9
- 3.3.10
- 3.4.7
- 3.1.7
- 3.2.8
- 3.3.8
- 3.4.4
#### Python
- 3.11.9
- 3.12.10
- 3.13.11
- 3.14.2
- 3.13.5
#### Node.js
- 20.19.6
- 22.21.1
- 24.12.0
- 18.20.8
- 20.19.3
- 22.17.0
#### Go
- 1.22.12
- 1.23.12
- 1.24.11
- 1.25.5
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.92.0
- Rust 1.92.0
- Rustdoc 1.92.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.92
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
- PowerShell 7.4.13
- PowerShell 7.4.11
#### PowerShell Modules
- Az: 12.5.0
@@ -229,45 +225,45 @@
| DriverKit 24.2 | driverkit24.2 | 16.2 |
#### Installed Simulators
| Name | OS | Simulators |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| iOS 17.0 | 17.0.1 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
| iOS 17.2 | 17.2 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
| iOS 17.4 | 17.4 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 17.5 | 17.5 | iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (6th generation)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.1 | 18.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.2 | 18.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air 11-inch (M2)<br>iPad Air 13-inch (M2)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| tvOS 17.0 | 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.2 | 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.4 | 17.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 17.5 | 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.1 | 18.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| watchOS 10.0 | 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.2 | 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.4 | 10.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 10.5 | 10.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 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 |
| 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 |
### Android
| Package Name | Version |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 36.3.10 |
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
| Android SDK Platform-Tools | 36.0.0 |
| Android Support Repository | 47.0.0 |
| CMake | 3.31.5<br>4.1.2 |
| Google Play services | 49 |
| Google Repository | 58 |
| NDK | 26.3.11579264 (default)<br>27.3.13750724<br>28.2.13676358<br>29.0.14206865 |
| Package Name | Version |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 11.0 |
| Android Emulator | 35.6.11 |
| 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 (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.2.12479018<br>28.2.13676358 |
#### Environment variables
| Name | Value |
@@ -275,10 +271,10 @@
| 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/29.0.14206865 |
| 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
- Tcl/Tk 8.6.16
+131 -143
View File
@@ -1,105 +1,103 @@
| Announcements |
|-|
| [[macOS] Deprecation of Xcode 16.3 and older runtimes on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
| [[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] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
***
# macOS 15
- OS Version: macOS 15.7.3 (24G419)
- Kernel Version: Darwin 24.6.0
- Image Version: 20251216.0081.1
- OS Version: macOS 15.5 (24F5068b)
- Kernel Version: Darwin 24.5.0
- Image Version: 20250714.1591
## Installed Software
### Language and Runtime
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.302
- Bash 3.2.57(1)-release
- Clang/LLVM 17.0.0
- Clang/LLVM 16.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.2.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.2.0) - available by `gfortran-15` alias
- Kotlin 2.2.21-release-469
- Node.js 22.21.1
- Kotlin 2.1.10-release-473
- Node.js 22.17.0
- Perl 5.40.2
- PHP 8.5.0
- Python3 3.14.2
- Ruby 3.3.10
- PHP 8.4.10
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 4.0.1
- Bundler 2.6.9
- Carthage 0.40.0
- CocoaPods 1.16.2
- Composer 2.9.2
- Homebrew 5.0.5
- NPM 10.9.4
- Pip3 25.3 (python 3.14)
- Pipx 1.8.0
- RubyGems 4.0.1
- Vcpkg 2025 (build from commit 2b6a882f61)
- Composer 2.8.10
- Homebrew 4.5.9
- NPM 10.9.2
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.6.9
- Vcpkg 2025 (build from commit 137cec7e04)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.2.1
- Apache Maven 3.9.10
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.31.0
- bazel 8.5.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.0
- bsdtar 3.5.3 - available by 'tar' alias
- Curl 8.17.0
- Curl 8.14.1
- Git 2.50.1
- Git LFS 3.7.1
- GitHub CLI 2.83.2
- Git LFS 3.7.0
- GitHub CLI 2.75.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.3
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.2
- yq 4.50.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.2
- Ninja 1.13.1
### Tools
- AWS CLI 2.32.17
- AWS SAM CLI 1.149.0
- AWS Session Manager CLI 1.2.764.0
- Azure CLI 2.81.0
- AWS CLI 2.27.50
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.39.26
- Cmake 4.2.1
- CodeQL Action Bundle 2.23.8
- Fastlane 2.229.1
- SwiftFormat 0.58.7
- Xcbeautify 3.1.2
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.56.4
- Xcbeautify 2.29.0
- Xcode Command Line Tools 16.4.0.0.1.1747106510
- Xcodes 1.6.2
### Linters
- SwiftLint 0.62.2
- SwiftLint 0.59.1
### Browsers
- Safari 26.2 (20623.1.14.18.4)
- SafariDriver 26.2 (20623.1.14.18.4)
- Google Chrome 143.0.7499.110
- Google Chrome for Testing 143.0.7499.42
- ChromeDriver 143.0.7499.42
- Microsoft Edge 143.0.3650.80
- Microsoft Edge WebDriver 143.0.3650.80
- Mozilla Firefox 146.0
- Safari 18.5 (20621.2.5.11.5)
- SafariDriver 18.5 (20621.2.5.11.5)
- Google Chrome 138.0.7204.101
- Google Chrome for Testing 138.0.7204.94
- ChromeDriver 138.0.7204.94
- Microsoft Edge 138.0.3351.83
- Microsoft Edge WebDriver 138.0.3351.83
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.38.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
@@ -109,51 +107,49 @@
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
### Java
| Version | Environment Variable |
| --------------------- | -------------------- |
| 11.0.29+7 | JAVA_HOME_11_X64 |
| 17.0.17+10 | JAVA_HOME_17_X64 |
| 21.0.9+10.0 (default) | JAVA_HOME_21_X64 |
| 25.0.1+8.0 | JAVA_HOME_25_X64 |
| Version | Environment Variable |
| -------------------- | -------------------- |
| 11.0.27+6 | JAVA_HOME_11_X64 |
| 17.0.15+6 | JAVA_HOME_17_X64 |
| 21.0.7+6.0 (default) | JAVA_HOME_21_X64 |
### Cached Tools
#### Ruby
- 3.2.9
- 3.3.10
- 3.4.7
- 3.1.7
- 3.2.8
- 3.3.8
- 3.4.4
#### Python
- 3.9.25
- 3.10.19
- 3.9.23
- 3.10.18
- 3.11.9
- 3.12.10
- 3.13.11
- 3.14.2
- 3.13.5
#### Node.js
- 20.19.6
- 22.21.1
- 24.12.0
- 18.20.8
- 20.19.3
- 22.17.0
#### Go
- 1.22.12
- 1.23.12
- 1.24.11
- 1.25.5
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.92.0
- Rust 1.92.0
- Rustdoc 1.92.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.92
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
- PowerShell 7.4.13
- PowerShell 7.4.11
#### PowerShell Modules
- Az: 12.5.0
@@ -161,15 +157,14 @@
- PSScriptAnalyzer: 1.24.0
### Xcode
| Version | Build | Path | Symlinks |
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
| 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 |
| Version | Build | Path | Symlinks |
| -------------- | -------- | ------------------------------- | ----------------------------------------------------------------------------------------- |
| 26.0 (beta) | 17A5241e | /Applications/Xcode_26_beta.app | /Applications/Xcode_26.0.0.app<br>/Applications/Xcode_26.0.app |
| 16.4 | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.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 (default) | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app<br>/Applications/Xcode.app |
#### Installed SDKs
| SDK | SDK Name | Xcode Version |
@@ -179,122 +174,115 @@
| macOS 15.2 | macosx15.2 | 16.2 |
| 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.1 |
| macOS 26.0 | macosx26.0 | 26.0 |
| 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.1 |
| iOS 26.0 | iphoneos26.0 | 26.0 |
| 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.1 |
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0 |
| 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.1 |
| tvOS 26.0 | appletvos26.0 | 26.0 |
| 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.1 |
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0 |
| 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.1 |
| watchOS 26.0 | watchos26.0 | 26.0 |
| 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.1 |
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0 |
| 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.1 |
| visionOS 26.0 | xros26.0 | 26.0 |
| 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.1 |
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0 |
| 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.1 |
| DriverKit 25.0 | driverkit25.0 | 26.0 |
#### Installed Simulators
| Name | OS | Simulators |
| ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 18.4 | 18.4 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.4 | 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.4 | 11.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 26.0 | 26.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
| OS | Simulators |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 18.0 | 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 (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) |
| iOS 18.3 | 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.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 26.0 | 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) |
| tvOS 18.0 | 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) |
| 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.0 | 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.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) |
| 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 Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
### Android
| Package Name | Version |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 16.0 |
| Android Emulator | 36.3.10 |
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
| Android SDK Platform-Tools | 36.0.0 |
| Android Support Repository | 47.0.0 |
| CMake | 3.31.5<br>4.1.2 |
| Google Play services | 49 |
| Google Repository | 58 |
| NDK | 26.3.11579264<br>27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
| Package Name | Version |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 16.0 |
| Android Emulator | 35.6.11 |
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1 |
| Android SDK Platforms | 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.2.12479018 (default)<br>28.2.13676358 |
#### 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_NDK | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| 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.2.0-57363/ParallelsDesktop-26.2.0-57363.dmg |
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.4.0-55980/ParallelsDesktop-20.4.0-55980.dmg |
##### Notes
```
+131 -150
View File
@@ -1,155 +1,148 @@
| Announcements |
|-|
| [[all OSs] Updating Azure PowerShell Module version to 14.6.0 on January 26th, 2026.](https://github.com/actions/runner-images/issues/13473) |
| [[macOS] DOTNET_ROOT environment variable variable will be removed on January 12th, 2026](https://github.com/actions/runner-images/issues/13470) |
| [[Ubuntu-22.04, macOS-14, Windows-2022] Android SDK platforms and build tools older than version 34 will be removed on January 12th, 2026.](https://github.com/actions/runner-images/issues/13469) |
| [[all OSs] Python 3.9 will be removed; Python 3.12 will become the default on Windows images on January 12th, 2026.](https://github.com/actions/runner-images/issues/13468) |
| [[all OSs] Android NDK 26 will be removed, Android NDK 27 will be used by default on January 12th, 2026.](https://github.com/actions/runner-images/issues/13467) |
| [[macOS] Deprecation of simulator runtimes for Xcode 16.3 and older on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
| [macOS 26 (Tahoe) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/13008) |
| [[macOS] Xcode support policy will be changed on August 11, 2025](https://github.com/actions/runner-images/issues/12541) |
| [[macOS] macos-latest YAML-label will use macos-15 in August 2025](https://github.com/actions/runner-images/issues/12520) |
***
# macOS 15
- OS Version: macOS 15.7.3 (24G419)
- Kernel Version: Darwin 24.6.0
- Image Version: 20260105.0094.1
- OS Version: macOS 15.5 (24F74)
- Kernel Version: Darwin 24.5.0
- Image Version: 20250714.1971
## Installed Software
### Language and Runtime
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.412, 9.0.102, 9.0.203, 9.0.302
- Bash 3.2.57(1)-release
- Clang/LLVM 17.0.0
- Clang/LLVM 16.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.2.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.2.0) - available by `gfortran-15` alias
- Kotlin 2.3.0-release-356
- Node.js 22.21.1
- Perl 5.42.0
- Python3 3.14.2
- Ruby 3.3.10
- Kotlin 2.1.10-release-473
- Node.js 22.17.0
- Perl 5.40.2
- Python3 3.13.5
- Ruby 3.3.8
### Package Management
- Bundler 4.0.3
- Bundler 2.6.9
- Carthage 0.40.0
- CocoaPods 1.16.2
- Homebrew 5.0.8
- NPM 10.9.4
- Pip3 25.3 (python 3.14)
- Pipx 1.8.0
- RubyGems 4.0.3
- Vcpkg 2025 (build from commit af752f21c9)
- Homebrew 4.5.9
- NPM 10.9.2
- Pip3 25.1.1 (python 3.13)
- Pipx 1.7.1
- RubyGems 3.6.9
- Vcpkg 2025 (build from commit e86ec03236)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.12
- Gradle 9.2.1
- Apache Maven 3.9.10
- Gradle 8.14.3
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.31.0
- bazel 8.5.0
- bazelisk 1.27.0
- azcopy 10.29.1
- bazel 8.3.1
- bazelisk 1.26.0
- bsdtar 3.5.3 - available by 'tar' alias
- Curl 8.7.1
- Git 2.52.0
- Git LFS 3.7.1
- GitHub CLI 2.83.2
- Git 2.50.1
- Git LFS 3.7.0
- GitHub CLI 2.75.0
- GNU Tar 1.35 - available by 'gtar' alias
- GNU Wget 1.25.0
- gpg (GnuPG) 2.4.9
- gpg (GnuPG) 2.4.8
- jq 1.8.1
- OpenSSL 1.1.1w 11 Sep 2023
- Packer 1.14.3
- Packer 1.13.1
- pkgconf 2.5.1
- Unxip 3.2
- yq 4.50.1
- yq 4.46.1
- zstd 1.5.7
- Ninja 1.13.2
- Ninja 1.13.1
### Tools
- AWS CLI 2.32.28
- AWS SAM CLI 1.151.0
- AWS Session Manager CLI 1.2.764.0
- Azure CLI 2.81.0
- AWS CLI 2.27.50
- AWS SAM CLI 1.142.1
- AWS Session Manager CLI 1.2.707.0
- Azure CLI 2.75.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.39.26
- Cmake 4.2.1
- CodeQL Action Bundle 2.23.8
- Fastlane 2.230.0
- SwiftFormat 0.58.7
- Xcbeautify 3.1.2
- Bicep CLI 0.36.177
- Cmake 3.31.6
- CodeQL Action Bundle 2.22.1
- Fastlane 2.228.0
- SwiftFormat 0.57.0
- Xcbeautify 2.29.0
- Xcode Command Line Tools 16.4.0.0.1.1747106510
- Xcodes 1.6.2
### Linters
### Browsers
- Safari 26.2 (20623.1.14.18.4)
- SafariDriver 26.2 (20623.1.14.18.4)
- Google Chrome 143.0.7499.170
- Google Chrome for Testing 143.0.7499.169
- ChromeDriver 143.0.7499.169
- Microsoft Edge 143.0.3650.96
- Microsoft Edge WebDriver 143.0.3650.96
- Mozilla Firefox 146.0.1
- Safari 18.5 (20621.2.5.11.8)
- SafariDriver 18.5 (20621.2.5.11.8)
- Google Chrome 138.0.7204.101
- Google Chrome for Testing 138.0.7204.94
- ChromeDriver 138.0.7204.94
- Mozilla Firefox 140.0.4
- geckodriver 0.36.0
- Selenium server 4.39.0
- Selenium server 4.34.0
#### Environment variables
| Name | Value |
| --------------- | --------------------------------------- |
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
| EDGEWEBDRIVER | |
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
### Java
| Version | Environment Variable |
| --------------------- | -------------------- |
| 11.0.29+7 | JAVA_HOME_11_arm64 |
| 17.0.17+10 | JAVA_HOME_17_arm64 |
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
| Version | Environment Variable |
| -------------------- | -------------------- |
| 11.0.27+6 | JAVA_HOME_11_arm64 |
| 17.0.15+6 | JAVA_HOME_17_arm64 |
| 21.0.7+6.0 (default) | JAVA_HOME_21_arm64 |
### Cached Tools
#### Ruby
- 3.2.9
- 3.3.10
- 3.4.8
- 3.1.7
- 3.2.8
- 3.3.8
- 3.4.4
#### Python
- 3.11.9
- 3.12.10
- 3.13.11
- 3.14.2
- 3.13.5
#### Node.js
- 20.19.6
- 22.21.1
- 24.12.0
- 18.20.8
- 20.19.3
- 22.17.0
#### Go
- 1.22.12
- 1.23.12
- 1.24.11
- 1.25.5
- 1.23.11
- 1.24.5
### Rust Tools
- Cargo 1.92.0
- Rust 1.92.0
- Rustdoc 1.92.0
- Cargo 1.88.0
- Rust 1.88.0
- Rustdoc 1.88.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.92
- Clippy 0.1.88
- Rustfmt 1.8.0-stable
### PowerShell Tools
- PowerShell 7.4.13
- PowerShell 7.4.11
#### PowerShell Modules
- Az: 12.5.0
@@ -157,15 +150,14 @@
- PSScriptAnalyzer: 1.24.0
### Xcode
| Version | Build | Path | Symlinks |
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
| 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 |
| Version | Build | Path | Symlinks |
| -------------- | -------- | ------------------------------- | ----------------------------------------------------------------------------------------- |
| 26.0 (beta) | 17A5241e | /Applications/Xcode_26_beta.app | /Applications/Xcode_26.0.0.app<br>/Applications/Xcode_26.0.app |
| 16.4 | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.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 (default) | 16A242d | /Applications/Xcode_16.app | /Applications/Xcode_16.0.0.app<br>/Applications/Xcode_16.0.app<br>/Applications/Xcode.app |
#### Installed SDKs
| SDK | SDK Name | Xcode Version |
@@ -175,120 +167,109 @@
| macOS 15.2 | macosx15.2 | 16.2 |
| 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.1 |
| macOS 26.0 | macosx26.0 | 26.0 |
| 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.1 |
| iOS 26.0 | iphoneos26.0 | 26.0 |
| 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.1 |
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0 |
| 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.1 |
| tvOS 26.0 | appletvos26.0 | 26.0 |
| 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.1 |
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0 |
| 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.1 |
| watchOS 26.0 | watchos26.0 | 26.0 |
| 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.1 |
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0 |
| 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.1 |
| visionOS 26.0 | xros26.0 | 26.0 |
| 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.1 |
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0 |
| 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.1 |
| DriverKit 25.0 | driverkit25.0 | 26.0 |
#### Installed Simulators
| Name | OS | Simulators |
| ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 18.4 | 18.4 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
| tvOS 18.2 | 18.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.4 | 18.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| watchOS 11.2 | 11.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.4 | 11.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
| watchOS 26.0 | 26.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
| visionOS 2.3 | 2.3 | Apple Vision Pro |
| visionOS 2.4 | 2.4 | Apple Vision Pro |
| visionOS 2.5 | 2.5 | Apple Vision Pro |
| visionOS 26.0 | 26.0 | Apple Vision Pro |
| visionOS 26.1 | 26.1 | Apple Vision Pro |
| OS | Simulators |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 18.0 | 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 (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) |
| iOS 18.3 | 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.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) |
| tvOS 18.0 | 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) |
| 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) |
| watchOS 11.0 | 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.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) |
| 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) |
| visionOS 2.0 | Apple Vision Pro |
| visionOS 2.1 | Apple Vision Pro |
| visionOS 2.2 | Apple Vision Pro |
| visionOS 2.3 | Apple Vision Pro |
| visionOS 2.4 | Apple Vision Pro |
| visionOS 2.5 | Apple Vision Pro |
### Android
| Package Name | Version |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 16.0 |
| Android Emulator | 36.3.10 |
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
| Android SDK Platform-Tools | 36.0.2 |
| Android Support Repository | 47.0.0 |
| CMake | 3.31.5<br>4.1.2 |
| Google Play services | 49 |
| Google Repository | 58 |
| NDK | 26.3.11579264<br>27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
| Package Name | Version |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 16.0 |
| Android Emulator | 35.6.11 |
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1 |
| Android SDK Platforms | 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.2.12479018 (default)<br>28.2.13676358 |
#### 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_NDK | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.2.13676358 |
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.2.12479018 |
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
### Miscellaneous
- Tcl/Tk 8.6.17
-235
View File
@@ -1,235 +0,0 @@
| Announcements |
|-|
| [[macOS] Deprecation of Xcode 16.3 and older runtimes on macOS 15 on January 12th, 2026.](https://github.com/actions/runner-images/issues/13392) |
| [[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 26
- OS Version: macOS 26.0.1 (25A362)
- Kernel Version: Darwin 25.0.0
- Image Version: 20251216.0100.1
## Installed Software
### Language and Runtime
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.416, 9.0.102, 9.0.203, 9.0.308, 10.0.101
- Bash 3.2.57(1)-release
- Clang/LLVM 17.0.0
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
- GCC 15 (Homebrew GCC 15.2.0) - available by `gcc-15` alias
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
- GNU Fortran 15 (Homebrew GCC 15.2.0) - available by `gfortran-15` alias
- Kotlin 2.2.21-release-469
- Node.js 24.12.0
- Perl 5.40.2
- Python3 3.14.2
- Ruby 3.4.7
### Package Management
- Bundler 4.0.1
- Carthage 0.40.0
- CocoaPods 1.16.2
- Homebrew 5.0.5
- NPM 11.6.2
- Pip3 25.3 (python 3.14)
- Pipx 1.8.0
- RubyGems 4.0.1
- Vcpkg 2025 (build from commit 2b6a882f61)
- Yarn 1.22.22
### Project Management
- Apache Ant 1.10.15
- Apache Maven 3.9.11
- Gradle 9.2.1
### Utilities
- 7-Zip 17.05
- aria2 1.37.0
- azcopy 10.31.0
- bazel 8.5.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.1
- GitHub CLI 2.83.2
- GNU Tar 1.35 - available by 'gtar' alias
- GNU Wget 1.25.0
- gpg (GnuPG) 2.4.8
- jq 1.8.1
- OpenSSL 3.6.0 1 Oct 2025 (Library: OpenSSL 3.6.0 1 Oct 2025)
- Packer 1.14.3
- pkgconf 2.5.1
- Unxip 3.2
- yq 4.50.1
- zstd 1.5.7
- Ninja 1.13.2
### Tools
- AWS CLI 2.32.17
- AWS SAM CLI 1.149.0
- AWS Session Manager CLI 1.2.764.0
- Azure CLI 2.81.0
- Azure CLI (azure-devops) 1.0.2
- Bicep CLI 0.39.26
- Cmake 4.2.1
- CodeQL Action Bundle 2.23.8
- Fastlane 2.229.1
- SwiftFormat 0.58.7
- Xcbeautify 3.1.2
- Xcode Command Line Tools 26.2.0.0.1.1764812424
- Xcodes 1.6.2
### Browsers
- Safari 26.0.1 (21622.1.22.11.15)
- SafariDriver 26.0.1 (21622.1.22.11.15)
- Google Chrome 143.0.7499.110
- Google Chrome for Testing 143.0.7499.42
- ChromeDriver 143.0.7499.42
- Microsoft Edge 143.0.3650.80
- Microsoft Edge WebDriver 143.0.3650.80
- Mozilla Firefox 146.0
- geckodriver 0.36.0
- Selenium server 4.38.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.29+7 | JAVA_HOME_11_arm64 |
| 17.0.17+10 | JAVA_HOME_17_arm64 |
| 21.0.9+10.0 (default) | JAVA_HOME_21_arm64 |
| 25.0.1+8.0 | JAVA_HOME_25_arm64 |
### Cached Tools
#### Ruby
- 3.2.9
- 3.3.10
- 3.4.7
#### Python
- 3.11.9
- 3.12.10
- 3.13.11
- 3.14.2
#### Node.js
- 20.19.6
- 22.21.1
- 24.12.0
#### Go
- 1.23.12
- 1.24.11
- 1.25.5
### Rust Tools
- Cargo 1.92.0
- Rust 1.92.0
- Rustdoc 1.92.0
- Rustup 1.28.2
#### Packages
- Clippy 0.1.92
- Rustfmt 1.8.0-stable
### PowerShell Tools
- PowerShell 7.4.13
#### PowerShell Modules
- Az: 14.3.0
- Pester: 5.7.1
- PSScriptAnalyzer: 1.24.0
### Xcode
| Version | Build | Path | Symlinks |
| ---------------- | ------ | ------------------------------ | ------------------------------------------------------- |
| 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 (default) | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app<br>/Applications/Xcode.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 |
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
| iOS 26.2 | iphoneos26.2 | 26.2 |
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2 |
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
| tvOS 26.2 | appletvos26.2 | 26.2 |
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2 |
| watchOS 26.0 | watchos26.0 | 26.0.1 |
| watchOS 26.1 | watchos26.1 | 26.1.1 |
| watchOS 26.2 | watchos26.2 | 26.2 |
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2 |
| visionOS 26.0 | xros26.0 | 26.0.1 |
| visionOS 26.1 | xros26.1 | 26.1.1 |
| visionOS 26.2 | xros26.2 | 26.2 |
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2 |
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
| DriverKit 25.2 | driverkit25.2 | 26.2 |
#### Installed Simulators
| Name | OS | Simulators |
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| iOS 26.0 | 26.0.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
| tvOS 26.0 | 26.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
| watchOS 26.0 | 26.0 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
| visionOS 26.0 | 26.0 | Apple Vision Pro |
| visionOS 26.1 | 26.1 | Apple Vision Pro |
| visionOS 26.2 | 26.2 | Apple Vision Pro |
### Android
| Package Name | Version |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Android Command Line Tools | 16.0 |
| Android Emulator | 36.3.10 |
| Android SDK Build-tools | 36.0.0 36.1.0<br>35.0.0 35.0.1 |
| Android SDK Platforms | android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
| Android SDK Platform-Tools | 36.0.0 |
| Android 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 |
@@ -8,11 +8,10 @@ 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
@@ -51,8 +50,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
@@ -62,12 +61,8 @@ 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,13 +54,4 @@ 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"
+2 -7
View File
@@ -8,10 +8,9 @@ $ErrorActionPreference = "Stop"
Import-Module "$env:HOME/image-generation/helpers/Common.Helpers.psm1"
Import-Module "$env:HOME/image-generation/helpers/Xcode.Installer.psm1" -DisableNameChecking
$os = Get-OSVersion
$arch = Get-Architecture
[Array]$xcodeVersions = (Get-ToolsetContent).xcode.$arch.versions
Write-Host $xcodeVersions
write-host $xcodeVersions
$defaultXcode = (Get-ToolsetContent).xcode.default
[Array]::Reverse($xcodeVersions)
$threadCount = "5"
@@ -34,11 +33,7 @@ Write-Host "Configuring Xcode versions..."
$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+)\.(\d+)(?:\.(\d+))?$' -and [int]$matches[1] -ge 26) {
Install-XcodeAdditionalComponents -Version $_.link
Update-DyldCache -Version $_.link
}
Install-AdditionalSimulatorRuntimes -Version $_.link -Arch $arch -Runtimes $_.install_runtimes
}
Invoke-XcodeRunFirstLaunch -Version $defaultXcode
@@ -10,12 +10,9 @@ echo "Enabling developer mode..."
sudo /usr/sbin/DevToolsSecurity --enable
# Turn off hibernation and get rid of the sleepimage
sudo pmset -a hibernatemode 0
sudo pmset 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
@@ -106,7 +103,3 @@ if [[ ! -d "/usr/local/bin" ]];then
fi
chmod +x $HOME/utils/invoke-tests.sh
sudo ln -s $HOME/utils/invoke-tests.sh /usr/local/bin/invoke_tests
# Fix share dir permissions
sudo chown "$USER":admin /usr/local/share
sudo chmod 775 /usr/local/share
@@ -9,8 +9,6 @@ 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)
@@ -22,8 +20,8 @@ else
image_label="macos-${label_version}"
fi
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}"
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}"
cat <<EOF > $imagedata_file
[
+1 -13
View File
@@ -33,12 +33,6 @@ 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
@@ -46,14 +40,8 @@ if is_SonomaX64 || is_VenturaX64 || 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.* $HOME/
cp $HOME/image-generation/output/software-report/systeminfo.* $HOME/
echo "Remove fastlane cached cookie"
rm -rf ~/.fastlane
@@ -8,48 +8,42 @@ source ~/utils/utils.sh
# /Library/Application\ Support/com.apple.TCC/TCC.db
systemValuesArray=(
"'kTCCServiceAccessibility','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceAccessibility','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552"
"'kTCCServiceAccessibility','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServiceAccessibility','/usr/bin/osascript',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServiceAccessibility','/usr/libexec/sshd-keygen-wrapper',1,2,4,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'UNUSED',NULL,0,1644564233"
"'kTCCServiceAccessibility','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552"
"'kTCCServiceAccessibility','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServiceAccessibility','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,NULL,'UNUSED',NULL,0,1591180502"
"'kTCCServiceAccessibility','com.apple.dt.Xcode-Helper',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1551941368"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAppleEvents','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceAppleEvents','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,NULL,'UNUSED',NULL,0,1591180502"
"'kTCCServiceAppleEvents','/usr/bin/osascript',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAppleEvents','/usr/bin/osascript',1,2,0,1,NULL,NULL,0,'com.apple.Safari',NULL,NULL,1755087312"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.Safari',NULL,NULL,1755087312"
"'kTCCServiceAppleEvents','/opt/hca/hosted-compute-agent',1,2,0,1,NULL,NULL,0,'com.apple.Safari',NULL,NULL,1755087312"
"'kTCCServiceBluetoothAlways','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceBluetoothAlways','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServicePostEvent','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1644565949"
"'kTCCServicePostEvent','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321326"
"'kTCCServicePostEvent','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321326"
"'kTCCServiceScreenCapture','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1599831148"
"'kTCCServiceScreenCapture','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceSystemPolicyAllFiles','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceSystemPolicyAllFiles','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceSystemPolicyAllFiles','/usr/libexec/sshd-keygen-wrapper',1,0,4,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'UNUSED',NULL,0,1639660695"
"'kTCCServiceSystemPolicyAllFiles','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceAccessibility','com.apple.dt.Xcode-Helper',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1551941368"
"'kTCCServiceSystemPolicyAllFiles','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceSystemPolicyAllFiles','/usr/libexec/sshd-keygen-wrapper',1,0,4,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'UNUSED',NULL,0,1639660695"
"'kTCCServiceSystemPolicyAllFiles','com.apple.Terminal',0,2,4,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'UNUSED',NULL,0,1678990068"
"'kTCCServiceAccessibility','/usr/libexec/sshd-keygen-wrapper',1,2,4,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'UNUSED',NULL,0,1644564233"
"'kTCCServiceAccessibility','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,NULL,'UNUSED',NULL,0,1591180502"
"'kTCCServiceAccessibility','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceScreenCapture','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1599831148"
"'kTCCServiceScreenCapture','com.devexpress.testcafe-browser-tools',0,2,3,1,X'fade0c0000000068000000010000000700000007000000080000001443fa4ca5141baeda21aeca1f50894673b440d4690000000800000014f8afcf6e69791b283e55bd0b03e39e422745770e0000000800000014bf4fc1aed64c871a49fc6bc9dd3878ce5d4d17c6',NULL,0,'UNUSED',NULL,0,1687952810"
"'kTCCServicePostEvent','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1644565949"
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAccessibility','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552"
# Allow Full Disk Access for "Microsoft Defender for macOS" to bypass installation on-flight
"'kTCCServiceSystemPolicyAllFiles','com.microsoft.wdav',0,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,0,1643970979"
"'kTCCServiceSystemPolicyAllFiles','com.microsoft.wdav.epsext',0,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,0,1643970979"
"'kTCCServiceSystemPolicyNetworkVolumes','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceSystemPolicyNetworkVolumes','com.apple.Terminal',0,2,4,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'UNUSED',NULL,0,1678990068"
"'kTCCServiceAccessibility','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,NULL,1592919552"
"'kTCCServiceAppleEvents','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceMicrophone','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceScreenCapture','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceAccessibility','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServicePostEvent','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321326"
"'kTCCServiceSystemPolicyAllFiles','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceMicrophone','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
)
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
if is_Sonoma || is_Sequoia; then
# TCC access table in Sonoma has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
configure_system_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
else
configure_system_tccdb "$values"
@@ -58,50 +52,40 @@ done
# $HOME/Library/Application\ Support/com.apple.TCC/TCC.db
userValuesArray=(
"'kTCCServiceAccessibility','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceAccessibility','/usr/bin/osascript',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServiceAccessibility','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,NULL,'UNUSED',NULL,0,1591180502"
"'kTCCServiceAppleEvents','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,3,1,NULL,NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1655808179"
"'kTCCServiceUbiquity','com.apple.mail',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1551941469"
"'kTCCServiceUbiquity','com.apple.TextEdit',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465787445646974000000000003',NULL,NULL,'UNUSED',NULL,0,1566368356"
"'kTCCServiceUbiquity','com.apple.CloudDocs.MobileDocumentsFileProvider',0,2,0,1,X'fade0c000000004c0000000100000006000000020000002f636f6d2e6170706c652e436c6f7564446f63732e4d6f62696c65446f63756d656e747346696c6550726f76696465720000000003',NULL,NULL,'UNUSED',NULL,0,1570793290"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1574241374"
"'kTCCServiceSystemPolicyAllFiles','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1644564201"
"'kTCCServiceAppleEvents','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1591180478"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,0,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1591357685"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.finder',NULL,NULL,1592919552"
"'kTCCServiceMicrophone','com.apple.CoreSimulator.SimulatorTrampoline',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576347152"
"'kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceUbiquity','/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/Versions/A/Support/photolibraryd',1,2,5,1,NULL,NULL,NULL,'UNUSED',NULL,0,1619461750"
"'kTCCServiceUbiquity','com.apple.PassKitCore',0,2,5,1,NULL,NULL,NULL,'UNUSED',NULL,0,1619516250"
"'kTCCServiceAppleEvents','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1629294900"
"'kTCCServiceAppleEvents','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,164456761"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.finder',NULL,NULL,1592919552"
"'kTCCServiceAppleEvents','/bin/bash',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAppleEvents','/usr/bin/osascript',1,2,0,1,NULL,NULL,0,'com.apple.finder',NULL,NULL,1592919552"
"'kTCCServiceAppleEvents','/usr/bin/osascript',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1591532620"
"'kTCCServiceAppleEvents','/Library/Application Support/Veertu/Anka/addons/ankarund',1,2,3,1,NULL,NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1655808179"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1650386089"
"'kTCCServicePostEvent','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1592919552"
"'kTCCServiceMicrophone','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceAppleEvents','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceScreenCapture','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceAppleEvents','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1592919552"
"'kTCCServiceAppleEvents','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1574241374"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,0,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1591357685"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1644564201"
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1650386089"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1592919552"
"'kTCCServiceAppleEvents','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,0,'com.apple.systemevents',NULL,NULL,1574241374"
"'kTCCServiceAppleEvents','com.apple.Terminal',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1591180478"
"'kTCCServiceBluetoothAlways','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceBluetoothAlways','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1736467200"
"'kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
"'kTCCServiceMicrophone','com.apple.CoreSimulator.SimulatorTrampoline',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576347152"
"'kTCCServicePostEvent','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceScreenCapture','/opt/hca/hosted-compute-agent',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceScreenCapture','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceScreenCapture','/usr/bin/osascript',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1566321319"
"'kTCCServiceScreenCapture','com.apple.Terminal',0,2,4,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,0,'UNUSED',NULL,0,1678990068"
"'kTCCServiceSystemPolicyAllFiles','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceSystemPolicyAllFiles','/usr/local/opt/runner/runprovisioner.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
"'kTCCServiceUbiquity','/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/Versions/A/Support/photolibraryd',1,2,5,1,NULL,NULL,NULL,'UNUSED',NULL,0,1619461750"
"'kTCCServiceUbiquity','com.apple.CloudDocs.MobileDocumentsFileProvider',0,2,0,1,X'fade0c000000004c0000000100000006000000020000002f636f6d2e6170706c652e436c6f7564446f63732e4d6f62696c65446f63756d656e747346696c6550726f76696465720000000003',NULL,NULL,'UNUSED',NULL,0,1570793290"
"'kTCCServiceUbiquity','com.apple.PassKitCore',0,2,5,1,NULL,NULL,NULL,'UNUSED',NULL,0,1619516250"
"'kTCCServiceUbiquity','com.apple.TextEdit',0,2,0,1,X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465787445646974000000000003',NULL,NULL,'UNUSED',NULL,0,1566368356"
"'kTCCServiceUbiquity','com.apple.mail',0,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1551941469"
"'kTCCServiceMicrophone','/opt/hca/start_hca.sh',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342"
)
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
if is_Sonoma || is_Sequoia; then
# TCC access table in Sonoma has extra 4 columns: pid, pid_version, boot_uuid, last_reminded
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
else
configure_user_tccdb "$values"
@@ -12,9 +12,9 @@ add_filtered_installation_components() {
local tools_array=("$@")
for item in ${tools_array[@]}; do
# 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
# 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
components+=($item)
fi
done
@@ -15,9 +15,18 @@ for package in $common_packages; do
brew install hashicorp/tap/packer
;;
cmake)
# Pin cmake bottle to 3.31.6 due to a backward compatibility issue with the latest version
# https://github.com/actions/runner-images/issues/11926
cmake_commit="b4e46db74e74a8c1650b38b1da222284ce1ec5ce"
cmake_rb_link="https://raw.githubusercontent.com/Homebrew/homebrew-core/$cmake_commit/Formula/c/cmake.rb"
cmake_rb_path=$(download_with_retry "$cmake_rb_link")
brew install "$cmake_rb_path"
;;
tcl-tk@8)
brew_smart_install "$package"
if is_VenturaX64 || is_SonomaX64 || is_SequoiaX64; then
if is_VenturaX64 || is_SonomaX64; 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
@@ -61,7 +70,6 @@ if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
if is_SonomaX64; then
osascript $HOME/utils/confirm-identified-developers-macos14.scpt $USER_PASSWORD
fi
if is_SequoiaX64; then
osascript $HOME/utils/confirm-identified-developers-macos15.scpt $USER_PASSWORD
fi
+1 -6
View File
@@ -19,12 +19,7 @@ echo "Installing Microsoft Edge WebDriver..."
edge_driver_version_file_path=$(download_with_retry "https://msedgedriver.microsoft.com/LATEST_RELEASE_${edge_version_major}_MACOS")
edge_driver_latest_version=$(iconv -f utf-16 -t utf-8 "$edge_driver_version_file_path" | tr -d '\r')
if is_Arm64; then
edge_driver_url="https://msedgedriver.microsoft.com/${edge_driver_latest_version}/edgedriver_mac64_m1.zip"
else
edge_driver_url="https://msedgedriver.microsoft.com/${edge_driver_latest_version}/edgedriver_mac64.zip"
fi
edge_driver_url="https://msedgedriver.microsoft.com/${edge_driver_latest_version}/edgedriver_mac64.zip"
echo "Compatible version of WebDriver: ${edge_driver_latest_version}"
+2 -4
View File
@@ -11,11 +11,9 @@ echo "Installing Python Tooling"
# Close Finder window
close_finder_window
# Installing latest Homebrew Python 3 to handle python3 and pip3 symlinks
echo "Brew Installing default Python 3"
brew_smart_install "python3"
echo "Brew Installing Python 3"
brew_smart_install "[email protected]"
# Pipx has its own Python dependency
echo "Installing pipx"
if is_Arm64; then
+16 -16
View File
@@ -8,49 +8,49 @@ source ~/utils/utils.sh
arch=$(get_arch)
DEFAULT_RUBY_VERSION=$(get_toolset_value '.ruby.default')
RUBY_PATH=$AGENT_TOOLSDIRECTORY/Ruby
TOOLSET_VERSIONS=$(get_toolset_value '.toolcache[] | select(.name | contains("Ruby")) | .arch.'$arch'.versions[]')
echo "Installing Ruby..."
brew_smart_install "ruby@${DEFAULT_RUBY_VERSION}"
echo "Set Ruby ${DEFAULT_RUBY_VERSION} as default"
if [[ $arch == "arm64" ]]; then
export PATH=/opt/homebrew/opt/ruby@${DEFAULT_RUBY_VERSION}/bin:$PATH
ruby_suffix="macos-13-arm64"
else
export PATH=/usr/local/opt/ruby@${DEFAULT_RUBY_VERSION}/bin:$PATH
ruby_suffix="macos-latest"
fi
echo "Setting up gem environment"
GEM_PATH=$(gem env|awk '/EXECUTABLE DIRECTORY/ {print $4}')
echo "GEM_PATH=$GEM_PATH" >> $HOME/.bashrc
if [[ $arch == "arm64" ]]; then
echo 'export PATH="$GEM_PATH:/opt/homebrew/opt/ruby@'${DEFAULT_RUBY_VERSION}'/bin:$PATH"' >> $HOME/.bashrc
else
echo 'export PATH="$GEM_PATH:/usr/local/opt/ruby@'${DEFAULT_RUBY_VERSION}'/bin:$PATH"' >> $HOME/.bashrc
fi
echo "Check if Ruby hostedtoolcache folder exists"
echo "Install Ruby from toolset..."
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
PACKAGE_TAR_NAMES=$(curl "${authString[@]}" -fsSL "https://api.github.com/repos/ruby/ruby-builder/releases/latest" | jq -r '.assets[].name')
TOOLSET_VERSIONS=$(get_toolset_value '.toolcache[] | select(.name | contains("Ruby")) | .arch.'$arch'.versions[]')
RUBY_PATH=$AGENT_TOOLSDIRECTORY/Ruby
echo "Check if Ruby hostedtoolcache folder exists..."
if [[ ! -d $RUBY_PATH ]]; then
mkdir -p "$RUBY_PATH"
mkdir -p $RUBY_PATH
fi
echo "ruby path - $RUBY_PATH"
for toolset_version in ${TOOLSET_VERSIONS[@]}; do
echo "Installing Ruby version: $toolset_version..."
download_url=$(resolve_github_release_asset_url "ruby/ruby-builder" "contains(\"darwin-$arch.tar.gz\")" "ruby-$toolset_version" "$API_PAT")
package_tar_name="${download_url##*/}"
package_tar_name=$(echo "$PACKAGE_TAR_NAMES" | grep "^ruby-${toolset_version}-${ruby_suffix}.tar.gz$" | egrep -v "rc|preview" | sort -V | tail -1)
ruby_version=$(echo "$package_tar_name" | cut -d'-' -f 2)
ruby_version_path="$RUBY_PATH/$ruby_version"
echo "Create Ruby $ruby_version directory"
mkdir -p "$ruby_version_path"
echo "Create Ruby $ruby_version directory..."
mkdir -p $ruby_version_path
echo "Downloading tar archive $package_tar_name"
archive_path=$(download_with_retry "$download_url")
archive_path=$(download_with_retry "https://github.com/ruby/ruby-builder/releases/download/toolcache/${package_tar_name}")
echo "Expand $package_tar_name to the $ruby_version_path folder"
tar xf "$archive_path" -C "$ruby_version_path"
tar xf $archive_path -C $ruby_version_path
complete_file_path=$ruby_version_path/$arch.complete
if [[ ! -f $complete_file_path ]]; then
echo "Create complete file"
@@ -0,0 +1,21 @@
#!/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,12 +37,12 @@ $languageAndRuntime.AddNodes($(Get-ClangLLVMVersions))
$languageAndRuntime.AddNodes($(Get-GccVersions))
$languageAndRuntime.AddNodes($(Get-FortranVersions))
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
if (($os.IsVentura -or $os.IsSonoma)) {
if ((-not $os.IsSequoia)) {
$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion))
}
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
if ((-not $os.IsArm64)) {
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64) -and (-not $os.IsSequoiaArm64)) {
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
}
$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version))
@@ -53,12 +53,12 @@ $packageManagement = $installedSoftware.AddHeader("Package Management")
$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion))
$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion))
$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion))
if ((-not $os.IsArm64)) {
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64) -and (-not $os.IsSequoiaArm64)) {
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
}
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
if (($os.IsVentura -or $os.IsSonoma)) {
if ((-not $os.IsSequoia)) {
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
}
$packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version))
@@ -116,8 +116,8 @@ $tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVer
$tools.AddToolVersion("Xcodes", $(Get-XcodesVersion))
# Linters
if ((-not $os.IsArm64)) {
$linters = $installedSoftware.AddHeader("Linters")
$linters = $installedSoftware.AddHeader("Linters")
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64) -and (-not $os.IsSequoiaArm64)) {
$linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion))
}
@@ -174,12 +174,15 @@ $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.IsVentura -or $os.IsSequoiaX64) {
$miscellaneous = $installedSoftware.AddHeader("Miscellaneous")
}
if ($os.IsSonoma -or $os.IsVentura) {
$miscellaneous.AddToolVersion("Tcl/Tk", $(Get-TclTkVersion))
}
if ((-not $os.IsArm64)) {
if ($os.IsSonomaX64 -or $os.IsVenturaX64 -or $os.IsSequoiaX64) {
Write-Host "Adding environment variables for parallels"
@@ -200,5 +203,5 @@ if (-not (Test-Path $OutputDirectory)) { New-Item -Path $OutputDirectory -ItemTy
# Write final reports
#
Write-Host $markdownExtended
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/software-report.json" -Encoding UTF8NoBOM
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/software-report.md" -Encoding UTF8NoBOM
$softwareReport.ToJson() | Out-File -FilePath "${OutputDirectory}/systeminfo.json" -Encoding UTF8NoBOM
$softwareReport.ToMarkdown() | Out-File -FilePath "${OutputDirectory}/systeminfo.md" -Encoding UTF8NoBOM
@@ -9,10 +9,15 @@ function Build-BrowserSection {
[ToolVersionNode]::new("Google Chrome", $(Get-ChromeVersion))
[ToolVersionNode]::new("Google Chrome for Testing", $(Get-ChromeForTestingVersion))
[ToolVersionNode]::new("ChromeDriver", $(Get-ChromeDriverVersion))
[ToolVersionNode]::new("Microsoft Edge", $(Get-EdgeVersion))
[ToolVersionNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion))
)
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64) -and (-not $os.IsSequoiaArm64)) {
$nodes += @(
[ToolVersionNode]::new("Microsoft Edge", $(Get-EdgeVersion))
[ToolVersionNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion))
)
}
$nodes += @(
[ToolVersionNode]::new("Mozilla Firefox", $(Get-FirefoxVersion))
[ToolVersionNode]::new("geckodriver", $(Get-GeckodriverVersion))
@@ -74,7 +79,7 @@ function Get-GeckodriverVersion {
function Get-SeleniumVersion {
$os = Get-OSVersion
if ($os.IsArm64) {
if ($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
$cellarPath = "/opt/homebrew/Cellar"
} else {
$cellarPath = "/usr/local/Cellar"
@@ -231,8 +231,10 @@ function Get-WgetVersion {
}
function Get-PackerVersion {
$packerVersion = Run-Command "packer --version" | Select-String "Packer" | Select-Object -First 1 | Take-Part -Part 1
return ($packerVersion.Trim("v"))
# Packer 1.7.1 has a bug and outputs version to stderr instead of stdout https://github.com/hashicorp/packer/issues/10855
$result = Run-Command "packer --version"
$packerVersion = [regex]::matches($result, "(\d+.){2}\d+").Value
return $packerVersion
}
function Get-OpenSSLVersion {
@@ -2,7 +2,7 @@ function Get-JavaVersions {
$defaultJavaPath = (Get-Item env:JAVA_HOME).value
$os = Get-OSVersion
if ($os.IsArm64) {
if ($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
$javaVersions = Get-Item env:JAVA_HOME_*_arm64
} else {
$javaVersions = Get-Item env:JAVA_HOME_*_X64
@@ -37,7 +37,7 @@ function Build-ToolcacheSection {
$nodes = @()
if ($os.IsVenturaX64) {
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonoma) -and (-not $os.IsSequoia)) {
$nodes += @(
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")
)
@@ -225,18 +225,17 @@ function Build-XcodeSimulatorsTable {
}
}
return [PSCustomObject] @{
"Name" = $runtime.name
"OS" = $runtime.version
"OS" = $runtime.name
"Simulators" = [String]::Join("<br>", $sortedRuntimeDevices)
}
} | Sort-Object {
# Sort rule 1
$sdkNameParts = $_."Name".Split(" ")
$sdkNameParts = $_."OS".Split(" ")
$platformName = [String]::Join(" ", $sdkNameParts[0..($sdkNameParts.Length - 2)])
return Get-XcodePlatformOrder $platformName
}, {
# Sort rule 2
$sdkNameParts = $_."Name".Split(" ")
$sdkNameParts = $_."OS".Split(" ")
return [System.Version]::Parse($sdkNameParts[-1])
}
}
@@ -35,10 +35,9 @@ function Get-OSVersion {
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")
IsSequoia = $($osVersion.Version.Major -eq "15")
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")
IsSequoia = $($osVersion.Version.Major -eq "15")
IsSequoiaArm64 = $($osVersion.Version.Major -eq "15" -and $processorArchitecture -eq "arm64")
IsSequoiaX64 = $($osVersion.Version.Major -eq "15" -and $processorArchitecture -ne "arm64")
}
}
@@ -42,6 +42,46 @@ function Invoke-DownloadXcodeArchive {
return $tempXipDirectory
}
function Resolve-ExactXcodeVersion {
param (
[Parameter(Mandatory)]
[string] $Version
)
# if toolset string contains spaces, consider it as a full name of Xcode
if ($Version -match "\s") {
return $Version
}
$semverVersion = [SemVer]::Parse($Version)
$availableVersions = Get-AvailableXcodeVersions
$satisfiedVersions = $availableVersions | Where-Object { $semverVersion -eq $_.stableSemver }
return $satisfiedVersions | Select-Object -Last 1 -ExpandProperty rawVersion
}
function Get-AvailableXcodeVersions {
$rawVersionsList = Invoke-XCVersion -Arguments "list" | ForEach-Object { $_.Trim() } | Where-Object { $_ -match "^\d" }
$availableVersions = $rawVersionsList | ForEach-Object {
$partStable,$partMajor = $_.Split(" ", 2)
$semver = $stableSemver = [SemVer]::Parse($partStable)
if ($partMajor) {
# Convert 'beta 3' -> 'beta.3', 'Release Candidate' -> 'releasecandidate', 'GM Seed 2' -> 'gmseed.2'
$normalizedLabel = $partMajor.toLower() -replace " (\d)", '.$1' -replace " ([a-z])", '$1'
$semver = [SemVer]::new($stableSemver.Major, $stableSemver.Minor, $stableSemver.Patch, $normalizedLabel)
}
return [PSCustomObject]@{
semver = $semver
rawVersion = $_
stableSemver = $stableSemver
}
}
return $availableVersions | Sort-Object -Property semver
}
function Expand-XcodeXipArchive {
param (
[Parameter(Mandatory)]
@@ -105,16 +145,18 @@ function Approve-XcodeLicense {
}
}
function Install-XcodeAdditionalComponents {
function Install-XcodeAdditionalPackages {
param (
[Parameter(Mandatory)]
[string] $Version
)
Write-Host "Installing additional MetalToolchain component for Xcode $Version..."
Write-Host "Installing additional packages for Xcode $Version..."
$xcodeRootPath = Get-XcodeRootPath -Version $Version
$xcodeBuildPath = Get-XcodeToolPath -XcodeRootPath $xcodeRootPath -ToolName "xcodebuild"
Invoke-ValidateCommand "$xcodeBuildPath -downloadComponent MetalToolchain" | Out-Null
$packages = Get-ChildItem -Path "$xcodeRootPath/Contents/Resources/Packages" -Filter "*.pkg" -File
$packages | ForEach-Object {
Invoke-ValidateCommand "sudo installer -pkg $($_.FullName) -target / -allowUntrusted"
}
}
function Invoke-XcodeRunFirstLaunch {
@@ -128,7 +170,7 @@ function Invoke-XcodeRunFirstLaunch {
Invoke-ValidateCommand "sudo $xcodeRootPath -runFirstLaunch"
}
function Install-XcodeAdditionalSimulatorRuntimes {
function Install-AdditionalSimulatorRuntimes {
param (
[Parameter(Mandatory)]
[string] $Version,
@@ -316,14 +358,3 @@ function Invoke-ValidateCommand {
Receive-Job -Job $job
}
}
function Update-DyldCache {
param (
[Parameter(Mandatory)]
[string] $Version
)
Write-Host "Updating dyld shared cache for Xcode $Version ..."
Switch-Xcode -Version $Version
Invoke-ValidateCommand "xcrun simctl runtime dyld_shared_cache update --all"
}
-4
View File
@@ -45,10 +45,6 @@ is_Arm64() {
[ "$(arch)" = "arm64" ]
}
is_Tahoe() {
[ "$OSTYPE" = "darwin25" ]
}
is_Sequoia() {
[ "$OSTYPE" = "darwin24" ]
}
@@ -56,7 +56,7 @@ Describe "Perl" {
}
}
Describe "Tcl/Tk" -Skip:(-not ($os.IsVenturaX64 -or $os.IsSonomaX64)) {
Describe "Tcl/Tk" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoia) {
It "libtcl" {
Test-Path "/usr/local/lib/libtcl8.6.dylib" | Should -BeTrue
Test-Path "/usr/local/lib/libtk8.6.dylib" | Should -BeTrue
@@ -41,7 +41,7 @@ Describe "Selenium server" {
}
}
Describe "Edge" {
Describe "Edge" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
It "Microsoft Edge" {
$edgeLocation = "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
$edgeLocation | Should -Exist
@@ -0,0 +1,23 @@
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion
Describe "MongoDB" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "<ToolName>" -TestCases @(
@{ ToolName = "mongo" }
@{ ToolName = "mongod" }
) {
$toolsetVersion = (Get-ToolsetContent).mongodb.version
(&$ToolName --version)[2].Split('"')[-2] | Should -BeLike "$toolsetVersion*"
}
}
Describe "PostgreSQL" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "PostgreSQL version should correspond to the version in the toolset" {
$toolsetVersion = (Get-ToolsetContent).postgresql.version
# Client version
(psql --version).split()[-2] | Should -BeLike "$toolsetVersion*"
# Server version
(pg_config --version).split()[-2] | Should -BeLike "$toolsetVersion*"
}
}
+1 -1
View File
@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion
Describe "SwiftLint" -Skip:($os.IsArm64) {
Describe "SwiftLint" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
It "SwiftLint" {
"swiftlint version" | Should -ReturnZeroExitCode
}
+2 -18
View File
@@ -1,7 +1,5 @@
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion
Describe "OpenSSL" {
Context "OpenSSL Version" {
It "OpenSSL is available" {
@@ -9,31 +7,17 @@ Describe "OpenSSL" {
}
}
Context "OpenSSL 1.1 Path Check" -Skip:($os.IsTahoe) {
Context "OpenSSL 1.1 Path Check" {
It "OpenSSL 1.1 path exists" {
$openSSLpath = brew --prefix openssl@1.1
$openSSLpath | Should -Exist
}
}
Context "OpenSSL 1.1 is default" -Skip:($os.IsTahoe) {
Context "OpenSSL 1.1 is default" {
It "Default OpenSSL version is 1.1" {
$commandResult = Get-CommandResult "openssl version"
$commandResult.Output | Should -Match "OpenSSL 1.1"
}
}
Context "OpenSSL 3 Path Check" -Skip:(-not $os.IsTahoe) {
It "OpenSSL 3 path exists" {
$openSSLpath = brew --prefix openssl@3
$openSSLpath | Should -Exist
}
}
Context "OpenSSL 3 is default" -Skip:(-not $os.IsTahoe) {
It "Default OpenSSL version is 3" {
$commandResult = Get-CommandResult "openssl version"
$commandResult.Output | Should -Match "OpenSSL 3"
}
}
}
+2 -2
View File
@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion
Describe "PHP" {
Context "PHP" -Skip:($os.IsArm64) {
Context "PHP" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
It "PHP Path" {
Get-ToolPath "php" | Should -Not -BeLike "/usr/bin/php*"
}
@@ -14,7 +14,7 @@ Describe "PHP" {
}
}
Context "Composer" -Skip:($os.IsArm64) {
Context "Composer" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
It "Composer" {
"composer --version" | Should -ReturnZeroExitCode
}
+16 -6
View File
@@ -8,13 +8,13 @@ Describe "Python3" {
"python3 --version" | Should -ReturnZeroExitCode
}
if ($os.IsArm64) {
if ($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
It "Python 3 is installed under /opt/homebrew/bin/" {
Get-ToolPath "python3" | Should -BeLike "/opt/homebrew/bin/*"
}
} else {
It "Python 3 is installed under /usr/local/bin" {
Get-ToolPath "python3" | Should -BeLike "/usr/local/bin/*"
Get-ToolPath "python3" | Should -BeLike "/usr/local/bin*"
}
}
@@ -26,15 +26,25 @@ Describe "Python3" {
"pipx --version" | Should -ReturnZeroExitCode
}
It "Pip 3 and Python 3 came from the same path prefix" {
It "Pip 3 and Python 3 came from the same brew formula" {
$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/*"
}
Describe "Python2" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "Python 2 is available" {
"/Library/Frameworks/Python.framework/Versions/2.7/bin/python --version" | Should -ReturnZeroExitCode
}
It "Pip 2 is available" {
"/Library/Frameworks/Python.framework/Versions/2.7/bin/pip --version" | Should -ReturnZeroExitCode
}
It "2to3 symlink does not point to Python 2" {
$2to3path = (Get-ChildItem (Get-Command 2to3).Path).Target
$2to3path | Should -Not -BeLike '/Frameworks/Python.framework/Versions/2.*'
}
}
@@ -25,3 +25,15 @@ Describe "Fastlane" {
"fastlane --version" | Should -ReturnZeroExitCode
}
}
Describe "xcpretty" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "xcpretty" {
"xcpretty --version" | Should -ReturnZeroExitCode
}
}
Describe "jazzy" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "jazzy" {
"jazzy --version" | Should -ReturnZeroExitCode
}
}
@@ -0,0 +1,7 @@
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
}
}
}
+17
View File
@@ -18,4 +18,21 @@ Describe "Rust" {
"cargo --version" | Should -ReturnZeroExitCode
}
}
Context "Cargo dependencies" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "bindgen" {
"bindgen --version" | Should -ReturnZeroExitCode
}
It "cbindgen" {
"cbindgen --version" | Should -ReturnZeroExitCode
}
It "Cargo audit" {
"cargo audit --version" | Should -ReturnZeroExitCode
}
It "Cargo outdated" {
"cargo outdated --version" | Should -ReturnZeroExitCode
}
}
}
+14 -3
View File
@@ -3,16 +3,17 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion
Describe "Disk free space" {
It "Image has more than 30GB free space" {
# we should have at least 30 GB of free space on macOS images
It "Image has more than 25GB free space" {
# we should have at least 25 GB of free space on macOS images
# 10GB here: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops#capabilities-and-limitations
# 14GB here: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
# 30GB due to: https://github.com/actions/runner-images/issues/10511
# 25GB is the current minimum due to the size of Xcode 16.4 and it's dependencies
$diskInfo = Get-PSDrive "/"
$totalSpaceGB = [math]::Floor(($diskInfo.Used + $diskInfo.Free) / 1GB)
$freeSpaceGB = [math]::Floor($diskInfo.Free / 1GB)
Write-Host " [i] Disk size: ${totalSpaceGB} GB; Free space: ${freeSpaceGB} GB"
$freeSpaceGB | Should -BeGreaterOrEqual 30
$freeSpaceGB | Should -BeGreaterOrEqual 25
}
}
@@ -30,6 +31,16 @@ Describe "Certificate" {
}
}
Describe "Audio device" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) {
It "Sox is installed" {
"sox --version" | Should -ReturnZeroExitCode
}
It "SwitchAudioSource is installed" {
"SwitchAudioSource -c" | Should -ReturnZeroExitCode
}
}
Describe "AutomationModeTool" {
It "Does not require user authentication" {
automationmodetool | Out-String | Should -Match "DOES NOT REQUIRE"
@@ -57,7 +57,7 @@ Describe "Toolcache" {
}
}
Context "Ruby" {
Context "Ruby" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
$rubyDirectory = Join-Path $toolcacheDirectory "Ruby"
$rubyPackage = $packages | Where-Object { $_.ToolName -eq "Ruby" } | Select-Object -First 1
$testCase = @{ RubyDirectory = $rubyDirectory }
@@ -99,7 +99,7 @@ Describe "Toolcache" {
}
}
}
Context "PyPy" -Skip:(-not $os.IsVenturaX64) {
Context "PyPy" -Skip:($os.IsVenturaArm64 -or $os.IsSonoma -or $os.IsSequoia) {
$pypyDirectory = Join-Path $toolcacheDirectory "PyPy"
$pypyPackage = $packages | Where-Object { $_.ToolName -eq "pypy" } | Select-Object -First 1
$testCase = @{ PypyDirectory = $pypyDirectory }
@@ -236,6 +236,7 @@ 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",
@@ -237,6 +237,7 @@ 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",
@@ -248,8 +249,7 @@ build {
"${path.root}/../scripts/build/install-chrome.sh",
"${path.root}/../scripts/build/install-firefox.sh",
"${path.root}/../scripts/build/install-bicep.sh",
"${path.root}/../scripts/build/install-codeql-bundle.sh",
"${path.root}/../scripts/build/install-edge.sh"
"${path.root}/../scripts/build/install-codeql-bundle.sh"
]
}
+4 -9
View File
@@ -235,6 +235,7 @@ 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,21 +274,15 @@ 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\" -ImageName ${var.build_id}",
"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/macos-14-Readme.md"
destination = "${path.root}/../../image-output/"
direction = "download"
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"
source = "${local.image_folder}/output/"
}
provisioner "shell" {
@@ -236,6 +236,7 @@ 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",
@@ -248,8 +249,7 @@ build {
"${path.root}/../scripts/build/install-chrome.sh",
"${path.root}/../scripts/build/install-firefox.sh",
"${path.root}/../scripts/build/install-bicep.sh",
"${path.root}/../scripts/build/install-codeql-bundle.sh",
"${path.root}/../scripts/build/install-edge.sh"
"${path.root}/../scripts/build/install-codeql-bundle.sh"
]
}
@@ -272,21 +272,15 @@ 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\" -ImageName ${var.build_id}",
"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/macos-14-arm64-Readme.md"
destination = "${path.root}/../../image-output/"
direction = "download"
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"
source = "${local.image_folder}/output/"
}
provisioner "shell" {
+4 -9
View File
@@ -234,6 +234,7 @@ 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",
@@ -272,21 +273,15 @@ 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\" -ImageName ${var.build_id}",
"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/macos-15-Readme.md"
destination = "${path.root}/../../image-output/"
direction = "download"
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"
source = "${local.image_folder}/output/"
}
provisioner "shell" {
@@ -235,6 +235,7 @@ 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",
@@ -247,8 +248,7 @@ build {
"${path.root}/../scripts/build/install-chrome.sh",
"${path.root}/../scripts/build/install-firefox.sh",
"${path.root}/../scripts/build/install-bicep.sh",
"${path.root}/../scripts/build/install-codeql-bundle.sh",
"${path.root}/../scripts/build/install-edge.sh"
"${path.root}/../scripts/build/install-codeql-bundle.sh"
]
}
@@ -271,21 +271,15 @@ 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\" -ImageName ${var.build_id}",
"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/macos-15-arm64-Readme.md"
destination = "${path.root}/../../image-output/"
direction = "download"
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"
source = "${local.image_folder}/output/"
}
provisioner "shell" {
@@ -1,297 +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 = "8G"
}
variable "image_os" {
type = string
default = "macos26"
}
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"
log_level = "debug"
}
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-26.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/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",
"${path.root}/../scripts/build/install-rosetta.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-dotnet.sh",
"${path.root}/../scripts/build/install-python.sh",
"${path.root}/../scripts/build/install-azcopy.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"
]
}
provisioner "shell" {
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
}
provisioner "shell" {
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
expect_disconnect = true
inline = ["echo 'Reboot VM'", "shutdown -r now"]
}
provisioner "shell" {
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
scripts = [
"${path.root}/../scripts/build/install-actions-cache.sh",
"${path.root}/../scripts/build/install-llvm.sh",
"${path.root}/../scripts/build/install-openjdk.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",
"${path.root}/../scripts/build/install-bicep.sh",
"${path.root}/../scripts/build/install-codeql-bundle.sh",
"${path.root}/../scripts/build/install-edge.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\" -ImageName ${var.build_id}",
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
]
}
provisioner "file" {
destination = "${path.root}/../../image-output/macos-26-arm64-Readme.md"
direction = "download"
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" {
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"
]
}
}
+17 -22
View File
@@ -3,22 +3,22 @@
"default": "15.2",
"x64": {
"versions": [
{ "link": "15.2", "filename": "Xcode_15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
{ "link": "15.1", "filename": "Xcode_15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
{ "link": "15.0.1", "filename": "Xcode_15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
{ "link": "14.3.1", "filename": "Xcode_14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
{ "link": "14.2", "filename": "Xcode_14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
{ "link": "14.1", "filename": "Xcode_14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
{ "link": "15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
{ "link": "15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
{ "link": "15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
{ "link": "14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
{ "link": "14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
{ "link": "14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
]
},
"arm64":{
"versions": [
{ "link": "15.2", "filename": "Xcode_15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
{ "link": "15.1", "filename": "Xcode_15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
{ "link": "15.0.1", "filename": "Xcode_15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
{ "link": "14.3.1", "filename": "Xcode_14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
{ "link": "14.2", "filename": "Xcode_14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
{ "link": "14.1", "filename": "Xcode_14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
{ "link": "15.2", "version": "15.2.0+15C500b", "install_runtimes": "default", "sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B"},
{ "link": "15.1", "version": "15.1.0+15C65", "install_runtimes": "default", "sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05"},
{ "link": "15.0.1", "version": "15.0.1+15A507", "symlinks": ["15.0"], "install_runtimes": "default", "sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8"},
{ "link": "14.3.1", "version": "14.3.1+14E300c","symlinks": ["14.3"], "install_runtimes": "default", "sha256": "B5CC7BF37447C32A971B37D71C7DA1AF7ABB45CEE4B96FE126A1D3B0D2C260AF"},
{ "link": "14.2", "version": "14.2.0+14C18", "install_runtimes": "default", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72"},
{ "link": "14.1", "version": "14.1.0+14B47b", "install_runtimes": "default", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F"}
]
}
},
@@ -95,8 +95,7 @@
"versions": [
"12",
"13",
"14",
"15"
"14"
]
},
"dotnet": {
@@ -136,16 +135,14 @@
"3.10.*",
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
},
"arm64": {
"versions": [
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
}
}
@@ -196,8 +193,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
},
"arm64": {
@@ -205,8 +201,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
}
}
+19 -38
View File
@@ -5,7 +5,6 @@
"versions": [
{
"link": "16.2",
"filename": "Xcode_16.2",
"version": "16.2+16C5032a",
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
"install_runtimes": [
@@ -16,42 +15,36 @@
},
{
"link": "16.1",
"filename": "Xcode_16.1",
"version": "16.1+16B40",
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
"install_runtimes": "default"
},
{
"link": "15.4",
"filename": "Xcode_15.4",
"version": "15.4.0+15F31d",
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
"install_runtimes": "default"
},
{
"link": "15.3",
"filename": "Xcode_15.3",
"version": "15.3.0+15E204a",
"sha256": "f13f6a2e2df432c3008e394640b8549a18c285acd7fd148d6c4bac8c3a5af234",
"install_runtimes": "default"
},
{
"link": "15.2",
"filename": "Xcode_15.2",
"version": "15.2.0+15C500b",
"sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B",
"install_runtimes": "default"
},
{
"link": "15.1",
"filename": "Xcode_15.1",
"version": "15.1.0+15C65",
"sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05",
"install_runtimes": "default"
},
{
"link": "15.0.1",
"filename": "Xcode_15.0.1",
"version": "15.0.1+15A507",
"sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8",
"symlinks": ["15.0"],
@@ -63,7 +56,6 @@
"versions": [
{
"link": "16.2",
"filename": "Xcode_16.2",
"version": "16.2+16C5032a",
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
"install_runtimes": [
@@ -75,42 +67,36 @@
},
{
"link": "16.1",
"filename": "Xcode_16.1",
"version": "16.1+16B40",
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
"install_runtimes": "default"
},
{
"link": "15.4",
"filename": "Xcode_15.4",
"version": "15.4.0+15F31d",
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
"install_runtimes": "default"
},
{
"link": "15.3",
"filename": "Xcode_15.3",
"version": "15.3.0+15E204a",
"sha256": "f13f6a2e2df432c3008e394640b8549a18c285acd7fd148d6c4bac8c3a5af234",
"install_runtimes": "default"
},
{
"link": "15.2",
"filename": "Xcode_15.2",
"version": "15.2.0+15C500b",
"sha256": "04E93680C6DDBEC84666531BE412DE778AFC8EAC6AB2037F4C2BE7290818B59B",
"install_runtimes": "default"
},
{
"link": "15.1",
"filename": "Xcode_15.1",
"version": "15.1.0+15C65",
"sha256": "857D8DB537BAC82BF99DE0E1D3895D214D4D02101C1340CEF3DAF6E821BA1D05",
"install_runtimes": "default"
},
{
"link": "15.0.1",
"filename": "Xcode_15.0.1",
"version": "15.0.1+15A507",
"sha256": "5AC17AE6060CAFC3C7112C6DA0B153450BE21F1DE6632777FBA9FBC9D999C9E8",
"symlinks": ["15.0"],
@@ -122,11 +108,11 @@
"java": {
"x64": {
"default": "21",
"versions": [ "8", "11", "17", "21", "25" ]
"versions": [ "8", "11", "17", "21"]
},
"arm64": {
"default": "21",
"versions": [ "11", "17", "21", "25" ]
"versions": [ "11", "17", "21"]
}
},
"android": {
@@ -139,13 +125,12 @@
],
"addons": [],
"additional_tools": [
"cmake;3.31.5",
"cmake;4.1.2"
"cmake;3.31.5"
],
"ndk": {
"default": "26",
"versions": [
"26", "27", "28", "29"
"26", "27", "28"
]
}
},
@@ -193,9 +178,9 @@
},
"gcc": {
"versions": [
"12",
"13",
"14",
"15"
"14"
]
},
"dotnet": {
@@ -203,15 +188,13 @@
"x64": {
"versions": [
"8.0",
"9.0",
"10.0"
"9.0"
]
},
"arm64": {
"versions": [
"8.0",
"9.0",
"10.0"
"9.0"
]
}
}
@@ -236,16 +219,14 @@
"3.10.*",
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
},
"arm64": {
"versions": [
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
}
}
@@ -257,16 +238,16 @@
"arch": {
"x64": {
"versions": [
"18.*",
"20.*",
"22.*",
"24.*"
"22.*"
]
},
"arm64": {
"versions": [
"18.*",
"20.*",
"22.*",
"24.*"
"22.*"
]
}
}
@@ -281,8 +262,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
},
"arm64": {
@@ -290,8 +270,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
}
}
@@ -301,6 +280,7 @@
"arch": {
"x64": {
"versions": [
"3.1.*",
"3.2.*",
"3.3.*",
"3.4.*"
@@ -308,6 +288,7 @@
},
"arm64": {
"versions": [
"3.1.*",
"3.2.*",
"3.3.*",
"3.4.*"
@@ -323,7 +304,7 @@
"version": "15"
},
"php": {
"version": "8.5"
"version": "8.4"
},
"pwsh": {
"version": "7.4"
+34 -68
View File
@@ -1,59 +1,45 @@
{
"xcode": {
"default": "16.4",
"default": "16",
"x64": {
"versions": [
{
"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",
"link": "26_beta",
"version": "26.0.0-Beta+17A5241e",
"symlinks": ["26.0"],
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
"sha256": "664ad6ec7a3139e9c43b95620c73f8950a802c3d469bb47e6d89f3eab9541b1c",
"install_runtimes": "default"
},
{
"link": "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.0", "18.1", "18.2", "18.3.1", "18.4", "18.5"] },
{ "watchOS": ["11.0", "11.1", "11.2", "11.4", "11.5"] },
{ "tvOS": ["18.0", "18.1", "18.2", "18.4", "18.5"] }
]
},
{
"link": "16.3",
"filename": "Xcode_16.3",
"version": "16.3+16E140",
"sha256": "c593177b73e45f31e1cf7ced131760d8aa8e1532f5bbf8ba11a4ded01da14fbb",
"install_runtimes": "none"
},
{
"link": "16.2",
"filename": "Xcode_16.2",
"version": "16.2+16C5032a",
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
"install_runtimes": "none"
},
{
"link": "16.1",
"filename": "Xcode_16.1",
"version": "16.1+16B40",
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
"install_runtimes": "none"
},
{
"link": "16",
"filename": "Xcode_16",
"version": "16.0.0+16A242d",
"sha256": "4a26c3d102a55c7222fb145e0ee1503249c9c26c6e02dc64d783c8810b37b1e3",
"symlinks": ["16.0"],
@@ -64,57 +50,43 @@
"arm64":{
"versions": [
{
"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",
"link": "26_beta",
"version": "26.0.0-Beta+17A5241e",
"symlinks": ["26.0"],
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
"install_runtimes": "default"
"sha256": "664ad6ec7a3139e9c43b95620c73f8950a802c3d469bb47e6d89f3eab9541b1c",
"install_runtimes": "none"
},
{
"link": "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"] },
{ "visionOS": ["2.3", "2.4", "2.5"] }
{ "iOS": ["18.0", "18.1", "18.2", "18.3.1", "18.4", "18.5"] },
{ "watchOS": ["11.0", "11.1", "11.2", "11.4", "11.5"] },
{ "tvOS": ["18.0", "18.1", "18.2", "18.4", "18.5"] },
{ "visionOS": ["2.0", "2.1", "2.2", "2.3", "2.4", "2.5"] }
]
},
{
"link": "16.3",
"filename": "Xcode_16.3",
"version": "16.3+16E140",
"sha256": "c593177b73e45f31e1cf7ced131760d8aa8e1532f5bbf8ba11a4ded01da14fbb",
"install_runtimes": "none"
},
{
"link": "16.2",
"filename": "Xcode_16.2",
"version": "16.2+16C5032a",
"sha256": "0e367d06eb7c334ea143bada5e4422f56688aabff571bedf0d2ad9434b7290de",
"install_runtimes": "none"
},
{
"link": "16.1",
"filename": "Xcode_16.1",
"version": "16.1+16B40",
"sha256": "8ca961d55981f983d21b99a95a6b0ac04905b837f6e11346ee86d28f12afe720",
"install_runtimes": "none"
},
{
"link": "16",
"filename": "Xcode_16",
"version": "16.0.0+16A242d",
"sha256": "4a26c3d102a55c7222fb145e0ee1503249c9c26c6e02dc64d783c8810b37b1e3",
"symlinks": ["16.0"],
@@ -126,11 +98,11 @@
"java": {
"x64": {
"default": "21",
"versions": [ "11", "17", "21", "25" ]
"versions": [ "11", "17", "21"]
},
"arm64": {
"default": "21",
"versions": [ "11", "17", "21", "25" ]
"versions": [ "11", "17", "21"]
}
},
"android": {
@@ -143,13 +115,12 @@
],
"addons": [],
"additional_tools": [
"cmake;3.31.5",
"cmake;4.1.2"
"cmake;3.31.5"
],
"ndk": {
"default": "27",
"versions": [
"26", "27","28", "29"
"26", "27","28"
]
}
},
@@ -182,7 +153,6 @@
"perl",
"pkgconf",
"swiftformat",
"tcl-tk@8",
"zstd",
"ninja",
"gmp",
@@ -197,9 +167,9 @@
},
"gcc": {
"versions": [
"12",
"13",
"14",
"15"
"14"
]
},
"dotnet": {
@@ -207,15 +177,13 @@
"x64": {
"versions": [
"8.0",
"9.0",
"10.0"
"9.0"
]
},
"arm64": {
"versions": [
"8.0",
"9.0",
"10.0"
"9.0"
]
}
}
@@ -240,16 +208,14 @@
"3.10.*",
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
},
"arm64": {
"versions": [
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
"3.13.*"
]
}
}
@@ -261,16 +227,16 @@
"arch": {
"x64": {
"versions": [
"18.*",
"20.*",
"22.*",
"24.*"
"22.*"
]
},
"arm64": {
"versions": [
"18.*",
"20.*",
"22.*",
"24.*"
"22.*"
]
}
}
@@ -285,8 +251,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
},
"arm64": {
@@ -294,8 +259,7 @@
"versions": [
"1.22.*",
"1.23.*",
"1.24.*",
"1.25.*"
"1.24.*"
]
}
}
@@ -305,6 +269,7 @@
"arch": {
"x64": {
"versions": [
"3.1.*",
"3.2.*",
"3.3.*",
"3.4.*"
@@ -312,6 +277,7 @@
},
"arm64": {
"versions": [
"3.1.*",
"3.2.*",
"3.3.*",
"3.4.*"
@@ -327,7 +293,7 @@
"version": "18"
},
"php": {
"version": "8.5"
"version": "8.4"
},
"pwsh": {
"version": "7.4"
-197
View File
@@ -1,197 +0,0 @@
{
"xcode": {
"default": "26.0.1",
"arm64":{
"versions": [
{
"link": "26.2",
"filename": "Xcode_26.2_Universal",
"version": "26.2+17C52",
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
"install_runtimes": "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": "default"
}
]
}
},
"java": {
"x64": {
"default": "21",
"versions": [ "11", "17", "21", "25" ]
},
"arm64": {
"default": "21",
"versions": [ "11", "17", "21", "25" ]
}
},
"android": {
"cmdline-tools": "commandlinetools-mac-12266719_latest.zip",
"sdk-tools": "sdk-tools-darwin-4333796.zip",
"platform_min_version": "35",
"build_tools_min_version": "35.0.0",
"extras": [
"android;m2repository", "google;m2repository", "google;google_play_services"
],
"addons": [],
"additional_tools": [
"cmake;3.31.5",
"cmake;4.1.2"
],
"ndk": {
"default": "27",
"versions": [
"27","28", "29"
]
}
},
"powershellModules": [
{
"name": "Az",
"versions": [
"14.3.0"
]
},
{ "name": "Pester" },
{ "name": "PSScriptAnalyzer" }
],
"brew": {
"common_packages": [
"ant",
"aria2",
"azure-cli",
"bazelisk",
"carthage",
"cmake",
"gh",
"gnupg",
"gnu-tar",
"kotlin",
"libpq",
"libsodium",
"openssl",
"p7zip",
"packer",
"perl",
"pkgconf",
"swiftformat",
"zstd",
"ninja",
"gmp",
"yq",
"unxip",
"xcbeautify",
"xcodes"
],
"cask_packages": [
"parallels"
]
},
"gcc": {
"versions": [
"13",
"14",
"15"
]
},
"dotnet": {
"arch":{
"arm64": {
"versions": [
"8.0",
"9.0",
"10.0"
]
}
}
},
"ruby": {
"default": "3.4",
"rubygems": [
"cocoapods",
"bundler",
"fastlane"
]
},
"toolcache": [
{
"name": "Python",
"url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json",
"platform" : "darwin",
"arch": {
"arm64": {
"versions": [
"3.11.*",
"3.12.*",
"3.13.*",
"3.14.*"
]
}
}
},
{
"name": "Node",
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
"platform" : "darwin",
"arch": {
"arm64": {
"versions": [
"20.*",
"22.*",
"24.*"
]
}
}
},
{
"name": "Go",
"url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
"platform" : "darwin",
"arch": {
"arm64": {
"variable_template" : "GOROOT_{0}_{1}_ARM64",
"versions": [
"1.23.*",
"1.24.*",
"1.25.*"
]
}
}
},
{
"name": "Ruby",
"arch": {
"arm64": {
"versions": [
"3.2.*",
"3.3.*",
"3.4.*"
]
}
}
}
],
"node": {
"default": "24"
},
"llvm": {
"version": "20"
},
"pwsh": {
"version": "7.4"
}
}
-60
View File
@@ -1,60 +0,0 @@
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 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/configure-system.sh && \
/tmp/scripts/helpers/cleanup.sh
ENTRYPOINT ["/opt/entrypoint.sh"]
CMD [ "bash" ]
@@ -1,81 +0,0 @@
#!/bin/bash -e
# This script builds and runs various tests on the ubuntu-slim Docker image
# to ensure it contains the expected software and configurations.
# The build and test workflows for docker images expect this script to be present.
#
# Usage: test.sh [IMAGE_NAME]
# If IMAGE_NAME is not provided, defaults to ubuntu-slim:test
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
# Clean up temporary directory
rm -rf "$OUTPUT_DIR"
echo "✓ Software report generation complete"
@@ -1,19 +0,0 @@
#!/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://azure\.archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list.d/ubuntu.sources
else
sed -i 's|http://azure\.archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list
fi
@@ -1,53 +0,0 @@
#!/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
# Uninstall unattended-upgrades
apt-get purge unattended-upgrades
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
# Install jq
apt-get install jq
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
@@ -1,42 +0,0 @@
#!/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
@@ -1,72 +0,0 @@
#!/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
@@ -1,40 +0,0 @@
#!/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
@@ -1,20 +0,0 @@
#!/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)"
@@ -1,22 +0,0 @@
#!/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
@@ -1,18 +0,0 @@
#!/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
@@ -1,12 +0,0 @@
#!/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
@@ -1,30 +0,0 @@
#!/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
@@ -1,16 +0,0 @@
#!/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
@@ -1,13 +0,0 @@
#!/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
@@ -1,16 +0,0 @@
#!/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
@@ -1,15 +0,0 @@
#!/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
@@ -1,20 +0,0 @@
#!/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
@@ -1,34 +0,0 @@
#!/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
@@ -1,22 +0,0 @@
#!/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"
@@ -1,20 +0,0 @@
#!/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
@@ -1,16 +0,0 @@
#!/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
@@ -1,29 +0,0 @@
#!/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
@@ -1,22 +0,0 @@
#!/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
@@ -1,28 +0,0 @@
#!/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
@@ -1,15 +0,0 @@
#!/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*
@@ -1,37 +0,0 @@
#!/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'
@@ -1,22 +0,0 @@
#!/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
@@ -1,36 +0,0 @@
#!/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
@@ -1,152 +0,0 @@
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
}
@@ -1,75 +0,0 @@
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("Kernel Version:", $(Get-KernelVersion))
$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("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