Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42812c0246 |
@@ -38,16 +38,15 @@ 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
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Mitigation ways
|
||||
|
||||
@@ -21,16 +21,15 @@ 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
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Image version and build link
|
||||
|
||||
@@ -59,16 +59,15 @@ 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
|
||||
- label: macOS 26 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- label: Windows Server 2025
|
||||
- label: Windows Server 2025 with Visual Studio 2026
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Can this tool be installed during the build?
|
||||
|
||||
@@ -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.
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -14,106 +14,34 @@ defaults:
|
||||
jobs:
|
||||
trigger-workflow:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
ci_workflow_run_id: ${{ steps.resolve.outputs.ci_workflow_run_id }}
|
||||
ci_workflow_run_url: ${{ steps.resolve.outputs.ci_workflow_run_url }}
|
||||
env:
|
||||
CI_PR_TOKEN: ${{ secrets.CI_PR_TOKEN }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
CI_REPO: ${{ vars.CI_REPO }}
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Trigger Build workflow
|
||||
env:
|
||||
CI_PR_TOKEN: ${{ secrets.CI_PR_TOKEN }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
CI_PR: ${{ secrets.CI_REPO }}
|
||||
run: |
|
||||
Import-Module ./helpers/GitHubApi.psm1
|
||||
$gitHubApi = Get-GithubApi -Repository "${env:CI_REPO}" -AccessToken "${env:CI_PR_TOKEN}"
|
||||
$headers = @{
|
||||
Authorization="Bearer $env:CI_PR_TOKEN"
|
||||
}
|
||||
|
||||
# Private repository for builds
|
||||
$apiRepoUrl = "https://api.github.com/repos/$env:CI_PR"
|
||||
|
||||
$eventType = "trigger-${{ inputs.image_type }}-build"
|
||||
[string] $prGuid = New-Guid
|
||||
$clientPayload = @{
|
||||
pr_title = "${env:PR_TITLE} - " + $prGuid
|
||||
custom_repo = "${{ github.event.pull_request.head.repo.full_name }}"
|
||||
$body = @{
|
||||
event_type = $eventType;
|
||||
client_payload = @{
|
||||
pr_title = "$env:PR_TITLE"
|
||||
custom_repo = "${{ github.event.pull_request.head.repo.full_name }}"
|
||||
custom_repo_commit_hash = "${{ github.event.pull_request.head.sha }}"
|
||||
}
|
||||
|
||||
$gitHubApi.DispatchWorkflow($eventType, $clientPayload)
|
||||
"PR_GUID=$prGuid" | Out-File -Append -FilePath $env:GITHUB_ENV
|
||||
|
||||
- name: Resolve Workflow Run ID
|
||||
id: resolve
|
||||
run: |
|
||||
Import-Module ./helpers/GitHubApi.psm1
|
||||
$gitHubApi = Get-GithubApi -Repository "${env:CI_REPO}" -AccessToken "${env:CI_PR_TOKEN}"
|
||||
|
||||
$workflowFileName = $("{0}.yml" -f "${{ inputs.image_type }}").ToLower()
|
||||
$WorkflowSearchPattern = "${env:PR_GUID}"
|
||||
|
||||
# It might take a few minutes for the action to start
|
||||
$attempt = 1
|
||||
do {
|
||||
$workflowRuns = $gitHubApi.GetWorkflowRuns($WorkflowFileName).workflow_runs
|
||||
$workflowRunId = ($workflowRuns | Where-Object {$_.display_title -match $WorkflowSearchPattern}).id | Select-Object -First 1
|
||||
|
||||
if (-not ([string]::IsNullOrEmpty($workflowRunId))) {
|
||||
$workflowRun = $gitHubApi.GetWorkflowRun($workflowRunId)
|
||||
Write-Host "Found the workflow run with ID $workflowRunId on attempt $attempt. Workflow run link: $($workflowRun.html_url)"
|
||||
"ci_workflow_run_id=$workflowRunId" | Out-File -Append -FilePath $env:GITHUB_OUTPUT
|
||||
"ci_workflow_run_url=$($workflowRun.html_url)" | Out-File -Append -FilePath $env:GITHUB_OUTPUT
|
||||
break
|
||||
}
|
||||
|
||||
Write-Host "Workflow run for $WorkflowSearchPattern pattern not found on attempt $attempt."
|
||||
$attempt += 1
|
||||
Start-Sleep 30
|
||||
} until ($attempt -eq 10)
|
||||
|
||||
if ([string]::IsNullOrEmpty($workflowRunId)) {
|
||||
throw "Failed to find a workflow run for '$WorkflowSearchPattern'."
|
||||
}
|
||||
|
||||
wait-completion:
|
||||
runs-on: ubuntu-latest
|
||||
needs: trigger-workflow
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
$bodyString = $body | ConvertTo-Json
|
||||
|
||||
- name: Wait for workflow completion
|
||||
env:
|
||||
CI_PR_TOKEN: ${{ secrets.CI_PR_TOKEN }}
|
||||
CI_REPO: ${{ vars.CI_REPO }}
|
||||
run: |
|
||||
./helpers/WaitWorkflowCompletion.ps1 `
|
||||
-WorkflowRunId "${{ needs.trigger-workflow.outputs.ci_workflow_run_id }}" `
|
||||
-Repository "${env:CI_REPO}" `
|
||||
-AccessToken "${env:CI_PR_TOKEN}"
|
||||
|
||||
- name: Add Summary
|
||||
if: always()
|
||||
run: |
|
||||
"# Test Partner Image" >> $env:GITHUB_STEP_SUMMARY
|
||||
"| Key | Value |" >> $env:GITHUB_STEP_SUMMARY
|
||||
"| :-----------: | :--------: |" >> $env:GITHUB_STEP_SUMMARY
|
||||
"| Workflow Run | [Link](${{ needs.trigger-workflow.outputs.ci_workflow_run_url }}) |" >> $env:GITHUB_STEP_SUMMARY
|
||||
"| Workflow Result | $env:CI_WORKFLOW_RUN_RESULT |" >> $env:GITHUB_STEP_SUMMARY
|
||||
" " >> $env:GITHUB_STEP_SUMMARY
|
||||
|
||||
cancel-workflow:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [trigger-workflow, wait-completion]
|
||||
if: cancelled()
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Cancel workflow
|
||||
env:
|
||||
CI_PR_TOKEN: ${{ secrets.CI_PR_TOKEN }}
|
||||
CI_REPO: ${{ vars.CI_REPO }}
|
||||
run: |
|
||||
Import-Module ./helpers/GitHubApi.psm1
|
||||
|
||||
$gitHubApi = Get-GithubApi -Repository "${env:CI_REPO}" -AccessToken "${env:CI_PR_TOKEN}"
|
||||
$gitHubApi.CancelWorkflowRun("${{ needs.trigger-workflow.outputs.ci_workflow_run_id }}")
|
||||
try {
|
||||
Invoke-WebRequest -Uri "$apiRepoUrl/dispatches" -Method Post -Headers $headers -Body $bodyString | Out-Null
|
||||
} catch {
|
||||
throw "$($_.exception[0].message)"
|
||||
}
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
name: Trigger Windows25 with VS 2026 CI
|
||||
run-name: Windows2025 with VS 2026 - ${{ github.event.pull_request.title }}
|
||||
name: Trigger Windows19 CI
|
||||
run-name: Windows2019 - ${{ github.event.pull_request.title }}
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
@@ -12,9 +12,9 @@ defaults:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Windows_2025_vs_2026:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2025-vs2026'
|
||||
Windows_2019:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2019'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'windows2025-vs2026'
|
||||
image_type: 'windows2019'
|
||||
secrets: inherit
|
||||
+5
-190
@@ -10,17 +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].
|
||||
|
||||
@@ -34,24 +28,24 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
- Make sure that the tool satisfies the [Software Guidelines](README.md#software-guidelines).
|
||||
- Create an issue and get approval from us to add this tool to the image before creating the pull request.
|
||||
|
||||
## Adding a new tool to an image
|
||||
## How to add a new tool
|
||||
|
||||
### General rules
|
||||
|
||||
- For every new tool, add validation scripts and update the software report script to ensure that it is included in the documentation.
|
||||
- If the tool is available on multiple platforms (macOS, Windows, Linux), make sure you include it on as many as possible.
|
||||
- If installing multiple versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. This will help other customers configure their builds flexibly. See [toolset-windows-2022.json](images/windows/toolsets/toolset-2022.json) as an example.
|
||||
- If installing multiple versions of the tool, consider putting the list of versions in the corresponding `toolset.json` file. This will help other customers configure their builds flexibly. See [toolset-windows-2019.json](images/windows/toolsets/toolset-2019.json) as an example.
|
||||
- Use consistent naming across all files.
|
||||
- Validation scripts should be simple and shouldn't change the image content.
|
||||
|
||||
### Windows
|
||||
|
||||
- Add a script that will install the tool and put the script in the `scripts/build` folder.
|
||||
There are a bunch of helper functions that could simplify your code: `Install-ChocoPackage`, `Install-Binary`, `Install-VSIXFromFile`, `Install-VSIXFromUrl`, `Invoke-DownloadWithRetry`, `Test-IsWin22`, `Test-IsWin25` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
There are a bunch of helper functions that could simplify your code: `Install-ChocoPackage`, `Install-Binary`, `Install-VSIXFromFile`, `Install-VSIXFromUrl`, `Invoke-DownloadWithRetry`, `Test-IsWin19`, `Test-IsWin22` (find the full list of helpers in [ImageHelpers.psm1](images/windows/scripts/helpers/ImageHelpers.psm1)).
|
||||
- Add a script that will validate the tool installation and put the script in the `scripts/tests` folder.
|
||||
We use [Pester v5](https://github.com/pester/pester) for validation scripts. If the tests for the tool are complex enough, create a separate `*.Tests.ps1`. Otherwise, use `Tools.Tests.ps1` for simple tests.
|
||||
Add `Invoke-PesterTests -TestFile <testFileName> [-TestName <describeName>]` at the end of the installation script to ensure that your tests will be run.
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2022-Readme.md](images/windows/Windows2022-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
- Add changes to the software report generator `images/windows/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Windows2019-Readme.md](images/windows/Windows2019-Readme.md) and uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
|
||||
### Ubuntu
|
||||
|
||||
@@ -66,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/)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 GitHub
|
||||
Copyright (c) 2025 GitHub
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -18,39 +18,36 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | Architecture | YAML Label | Included Software |
|
||||
| --------------------|--------------|---------------------|------------------|
|
||||
| Ubuntu 24.04<br> | x64 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] |
|
||||
| Ubuntu 22.04<br> | x64 | `ubuntu-22.04` | [ubuntu-22.04] |
|
||||
| Ubuntu Slim <br> | x64 | `ubuntu-slim` | [ubuntu-slim] |
|
||||
| macOS 26 Arm64<br> | arm64 | `macos-26` or `macos-26-xlarge` | [macOS-26-arm64] |
|
||||
| macOS 26<br> | x64 | `macos-26-intel`, `macos-26-large` | [macOS-26] |
|
||||
| macOS 15<br> | x64 | `macos-latest-large`, `macos-15-large`, or `macos-15-intel` | [macOS-15] |
|
||||
| macOS 15 Arm64<br> | arm64 | `macos-latest`, `macos-15`, or `macos-15-xlarge` | [macOS-15-arm64] |
|
||||
| macOS 14<br> | x64 | `macos-14-large`| [macOS-14] |
|
||||
| macOS 14 Arm64<br> | arm64 | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
|
||||
| Windows Server 2025 with Visual Studio 2026 <br> | x64 | `windows-2025-vs2026` | [windows-2025-vs2026] |
|
||||
| Windows Server 2025<br> | x64 | `windows-latest` or `windows-2025` | [windows-2025] |
|
||||
| Windows Server 2022<br> | x64 | `windows-2022` | [windows-2022] |
|
||||
| Image | YAML Label | Included Software | Rollout Status of Latest Image Release |
|
||||
| --------------------|---------------------|--------------------|--------------------|
|
||||
| Ubuntu 24.04 | `ubuntu-latest` or `ubuntu-24.04` | [ubuntu-24.04] |  |
|
||||
| Ubuntu 22.04 | `ubuntu-22.04` | [ubuntu-22.04] |  |
|
||||
| macOS 15 | `macos-15-large`| [macOS-15] |  |
|
||||
| macOS 15 Arm64 | `macos-15` or `macos-15-xlarge` | [macOS-15-arm64] |  |
|
||||
| macOS 14 | `macos-latest-large` or `macos-14-large`| [macOS-14] |  |
|
||||
| macOS 14 Arm64 |`macos-latest`, `macos-14`, `macos-latest-xlarge` or `macos-14-xlarge`| [macOS-14-arm64] |  |
|
||||
| macOS 13 | `macos-13` or `macos-13-large` | [macOS-13] |  |
|
||||
| macOS 13 Arm64 | `macos-13-xlarge` | [macOS-13-arm64] |  |
|
||||
| Windows Server 2025 | `windows-2025` | [windows-2025] |  |
|
||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] |  |
|
||||
| Windows Server 2019 | `windows-2019` | [windows-2019] |  |
|
||||
|
||||
### Label scheme
|
||||
|
||||
- In general the `-latest` label is used for the latest OS image version that is GA.
|
||||
- Before moving the `-latest` label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows.
|
||||
- The `-xlarge` and `-large` suffixes are unique to macOS images and are only available for GitHub Actions. Learn more about [GitHub Actions larger runners](https://docs.github.com/en/actions/reference/runners/larger-runners#available-macos-larger-runners-and-labels).
|
||||
- In general the `-latest` label is used for the latest OS image version that is GA
|
||||
- Before moving the`-latest` label to a new OS version we will announce the change and give sufficient lead time for users to update their workflows
|
||||
|
||||
[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-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md
|
||||
[windows-2025-vs2026]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-VS2026-Readme.md
|
||||
[windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
|
||||
[windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md
|
||||
[macOS-13]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
|
||||
[macOS-13-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md
|
||||
[macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md
|
||||
[macOS-14-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-arm64-Readme.md
|
||||
[macOS-15]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
||||
[macOS-15-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md
|
||||
[macOS-26]: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-Readme.md
|
||||
[macOS-26-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
|
||||
[self-hosted runners]: https://help.github.com/en/actions/hosting-your-own-runners
|
||||
|
||||
## Announcements
|
||||
@@ -82,18 +79,19 @@ latest 2 versions of an OS.
|
||||
|
||||
GitHub Actions and Azure DevOps use the `-latest` YAML label (ex: `ubuntu-latest`, `windows-latest`, and `macos-latest`). These labels point towards the newest stable OS version available.
|
||||
|
||||
|
||||
The `-latest` migration process is gradual and happens over 1-2 months in order to allow customers to adapt their workflows to the newest OS version. During this process, any workflow using the `-latest` label, may see changes in the OS version in their workflows or pipelines. To avoid unwanted migration, users can specify a specific OS version in the yaml file (ex: macos-14, windows-2022, ubuntu-22.04).
|
||||
|
||||
## Image Releases
|
||||
|
||||
*How to best follow along with changes*
|
||||
|
||||
1. Find the latest releases for this repository [here](https://github.com/actions/runner-images/releases).
|
||||
2. Subscribe to the releases coming out of this repository, instructions [here](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository).
|
||||
1. Find the latest releases for this repository [here.](https://github.com/actions/runner-images/releases)
|
||||
2. Subscribe to the releases coming out of this repository, instructions [here.](https://docs.github.com/en/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository)
|
||||
3. Upcoming changes: A pre-release is created when the deployment of an image has started. As soon as the deployment is finished, the pre-release is converted to a release. If you have subscribed to releases, you will get notified of pre-releases as well.
|
||||
|
||||
- You can also track upcoming changes using the [awaiting-deployment](https://github.com/actions/runner-images/labels/awaiting-deployment) label.
|
||||
4. For high impact changes, we will post these in advance to the GitHub Changelog on our [blog](https://github.blog/changelog/) and on [X](https://x.com/GHchangelog).
|
||||
4. For high impact changes, we will post these in advance to the GitHub Changelog on our [blog](https://github.blog/changelog/) and on [twitter](https://twitter.com/GHchangelog).
|
||||
- Ex: breaking changes, GA or deprecation of images
|
||||
|
||||
*Cadence*
|
||||
@@ -122,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
|
||||
|
||||
@@ -141,10 +138,10 @@ We use third-party package managers to install software during the image generat
|
||||
### Image Deprecation Policy
|
||||
|
||||
- Images begin the deprecation process of the oldest image label once a new GA OS version has been released.
|
||||
- Deprecation process begins with an announcement that sets a date for deprecation.
|
||||
- As it gets closer to the date, GitHub begins doing scheduled brownouts of the image.
|
||||
- Deprecation process begins with an announcement that sets a date for deprecation
|
||||
- As it gets closer to the date, GitHub begins doing scheduled brownouts of the image
|
||||
- During this time there will be an Announcement pinned in the repo to remind users of the deprecation.
|
||||
- Finally, GitHub will deprecate the image and it will no longer be available.
|
||||
- Finally GitHub will deprecate the image and it will no longer be available
|
||||
|
||||
### Preinstallation Policy
|
||||
|
||||
@@ -165,8 +162,8 @@ In general, these are the guidelines we follow when deciding what to pre-install
|
||||
## How to Interact with the Repo
|
||||
|
||||
- **Issues**: To file a bug report, or request tools to be added/updated, please [open an issue using the appropriate template](https://github.com/actions/runner-images/issues/new/choose)
|
||||
- **Discussions**: If you want to share your thoughts about image configuration, installed software, or bring a new idea, please create a [new discussion](https://github.com/orgs/community/discussions/new?category=actions). Before making a new discussion, please make sure no similar topics were created earlier in the [actions category](https://github.com/orgs/community/discussions/categories/actions).
|
||||
- For general questions about using the runner images or writing your Actions workflow, please open requests in the [GitHub Community discussion Actions category](https://github.com/orgs/community/discussions/categories/actions).
|
||||
- **Discussions**: If you want to share your thoughts about image configuration, installed software, or bring a new idea, please create a new topic in a [discussion](https://github.com/actions/runner-images/discussions) for a corresponding category. Before making a new discussion please make sure no similar topics were created earlier.
|
||||
- For general questions about using the runner images or writing your Actions workflow, please open requests in the [GitHub Actions Community Forum](https://github.community/c/github-actions/41).
|
||||
|
||||
## FAQs
|
||||
|
||||
@@ -174,10 +171,8 @@ In general, these are the guidelines we follow when deciding what to pre-install
|
||||
<summary><b><i>What images are available for GitHub Actions and Azure DevOps?</b></i></summary>
|
||||
|
||||
The availability of images for GitHub Actions and Azure DevOps is the same. However, deprecation policies may differ. See documentation for more details:
|
||||
|
||||
- [GitHub Actions](https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners#supported-runners-and-hardware-resources)
|
||||
- [Azure DevOps](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#software)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# GitHub Actions Runner Images
|
||||
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2022/2025 and Ubuntu 22.04/24.04.
|
||||
The runner-images project uses [Packer](https://www.packer.io/) to generate disk images for Windows 2019/2022 and Ubuntu 22.04/24.04.
|
||||
|
||||
Each image is configured by a HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
and what steps to run to install software and prepare the disk.
|
||||
@@ -76,6 +76,7 @@ In any case, you will need these software installed:
|
||||
|
||||
This repository includes a script that assists in generating images in Azure.
|
||||
All you need is an Azure subscription, a resource group in that subscription and a build agent configured as described above.
|
||||
We suggest starting with building the UbuntuMinimal image because it includes only basic software and builds in less than 30 minutes.
|
||||
|
||||
All the commands below should be executed in PowerShell.
|
||||
|
||||
@@ -98,7 +99,7 @@ Finally, run the `GenerateResourcesAndImage` function, setting the mandatory arg
|
||||
- `ResourceGroupName` - the name of the resource group that will store the resulting artifact (e.g., "imagegen-test").
|
||||
The resource group must already exist in your Azure subscription;
|
||||
- `AzureLocation` - the location where resources will be created (e.g., "East US");
|
||||
- `ImageType` - the type of image to build (valid options are "Windows2022", "Windows2025", "Ubuntu2204", "Ubuntu2404").
|
||||
- `ImageType` - the type of image to build (we suggest choosing "UbuntuMinimal" here; other valid options are "Windows2019", "Windows2022", "Windows2025", "Ubuntu2204", "Ubuntu2404").
|
||||
|
||||
This function automatically creates all required Azure resources and initiates the Packer image generation for the selected image type.
|
||||
|
||||
@@ -199,14 +200,11 @@ Then, you can invoke Packer in your CI/CD pipeline using the following commands:
|
||||
|
||||
```powershell
|
||||
packer plugins install github.com/hashicorp/azure 2.2.1
|
||||
|
||||
packer build -only "$BuildName*" `
|
||||
-var "subscription_id=$SubscriptionId" `
|
||||
packer build -var "subscription_id=$SubscriptionId" `
|
||||
-var "client_id=$ClientId" `
|
||||
-var "client_secret=$ClientSecret" `
|
||||
-var "install_password=$InstallPassword" `
|
||||
-var "location=$Location" `
|
||||
-var "image_os=$ImageOS" `
|
||||
-var "managed_image_name=$ImageName" `
|
||||
-var "managed_image_resource_group_name=$ImageResourceGroupName" `
|
||||
-var "tenant_id=$TenantId" `
|
||||
@@ -215,15 +213,13 @@ packer build -only "$BuildName*" `
|
||||
|
||||
Where:
|
||||
|
||||
- `BuildName` - name of the build defined in Packer template's `build{}` block (e.g. "ubuntu-24_04", "windows-2025");
|
||||
- `SubscriptionId` - your Azure Subscription ID;
|
||||
- `ClientId` and `ClientSecret` - Service Principal credentials;
|
||||
- `TenantId` - Azure Tenant ID;
|
||||
- `InstallPassword` - password for the user used to install software (Windows only);
|
||||
- `Location` - location where resources will be created (e.g., "East US");
|
||||
- `ImageOS` - the type of OS that will be deployed as a temporary VM (e.g. "ubuntu24", "win25");
|
||||
- `ImageName` and `ImageResourceGroupName` - name of the resource group where the managed image will be stored;
|
||||
- `TemplatePath` - path to the folder with Packer template files (e.g., "images/windows/templates").
|
||||
- `TemplatePath` - path to the Packer template file (e.g., "images/windows/templates/windows-2022.pkr.hcl").
|
||||
|
||||
### Required variables
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
This document gives an overview of these change and the impact this has on the `runner-images`.
|
||||
|
||||
## .NET Core for Ubuntu 2204
|
||||
## .NET Core for Ubuntu 2004 and 2204
|
||||
|
||||
2204 uses the [Microsoft Package repository](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2204) to install .NET deb files built and published by the .NET team.
|
||||
2004 and 2204 use the [Microsoft Package repository](https://learn.microsoft.com/en-us/dotnet/core/install/linux-ubuntu-install?tabs=dotnet8&pivots=os-linux-ubuntu-2004) to install .NET deb files built and published by the .NET team.
|
||||
|
||||
## .NET Core Versions from Ubuntu 2404
|
||||
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
enum ImageType {
|
||||
Windows2022 = 1
|
||||
Windows2025 = 2
|
||||
Windows2025_vs2026 = 3
|
||||
Ubuntu2204 = 4
|
||||
Ubuntu2404 = 5
|
||||
Windows2019 = 1
|
||||
Windows2022 = 2
|
||||
Windows2025 = 3
|
||||
Ubuntu2204 = 4
|
||||
Ubuntu2404 = 5
|
||||
UbuntuMinimal = 6
|
||||
}
|
||||
|
||||
Function Get-PackerTemplate {
|
||||
Function Get-PackerTemplatePath {
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RepositoryRoot,
|
||||
@@ -18,42 +19,34 @@ Function Get-PackerTemplate {
|
||||
|
||||
switch ($ImageType) {
|
||||
# Note: Double Join-Path is required to support PowerShell 5.1
|
||||
([ImageType]::Windows2019) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2019.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Windows2022) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2022.pkr.hcl"
|
||||
$imageOS = "win22"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2022.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Windows2025) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025.pkr.hcl"
|
||||
$imageOS = "win25"
|
||||
}
|
||||
([ImageType]::Windows2025_vs2026) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025-vs2026.pkr.hcl"
|
||||
$imageOS = "win25-vs2026"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2025.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2204) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "build.ubuntu-22_04.pkr.hcl"
|
||||
$imageOS = "ubuntu22"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-22.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2404) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "build.ubuntu-24_04.pkr.hcl"
|
||||
$imageOS = "ubuntu24"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-24.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::UbuntuMinimal) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-minimal.pkr.hcl"
|
||||
}
|
||||
default { throw "Unknown type of image" }
|
||||
}
|
||||
|
||||
$imageTemplatePath = [IO.Path]::Combine($RepositoryRoot, "images", $relativeTemplatePath)
|
||||
# Specific template selection using Packer's "-only" functionality
|
||||
$buildName = [IO.Path]::GetFileName($imageTemplatePath).Split(".")[1]
|
||||
|
||||
if (-not (Test-Path $imageTemplatePath)) {
|
||||
throw "Template for image '$ImageType' doesn't exist on path '$imageTemplatePath'."
|
||||
}
|
||||
|
||||
return [PSCustomObject] @{
|
||||
"BuildName" = $buildName
|
||||
"ImageOS" = $imageOS
|
||||
"Path" = [IO.Path]::GetDirectoryName($imageTemplatePath)
|
||||
}
|
||||
return $imageTemplatePath;
|
||||
}
|
||||
|
||||
Function Show-LatestCommit {
|
||||
@@ -66,35 +59,6 @@ Function Show-LatestCommit {
|
||||
}
|
||||
}
|
||||
|
||||
function Get-GitHubActionsOidcIdToken {
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RequestUrl,
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RequestToken,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $Audience = 'api://AzureADTokenExchange'
|
||||
)
|
||||
|
||||
$separator = if ($RequestUrl -match '\?') { '&' } else { '?' }
|
||||
$urlWithAudience = "${RequestUrl}${separator}audience=$([System.Uri]::EscapeDataString($Audience))"
|
||||
$headers = @{ Authorization = "Bearer $RequestToken" }
|
||||
|
||||
try {
|
||||
$response = Invoke-RestMethod -Method Get -Uri $urlWithAudience -Headers $headers
|
||||
}
|
||||
catch {
|
||||
throw "Failed to request GitHub Actions OIDC ID token. Ensure workflow permissions include 'id-token: write'. Details: $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
if ([string]::IsNullOrEmpty($response.value)) {
|
||||
throw "GitHub Actions OIDC token response did not contain a 'value' field."
|
||||
}
|
||||
|
||||
return $response.value
|
||||
}
|
||||
|
||||
function Start-Sleep($seconds) {
|
||||
$doneDT = (Get-Date).AddSeconds($seconds)
|
||||
while ($doneDT -gt (Get-Date)) {
|
||||
@@ -117,7 +81,7 @@ Function GenerateResourcesAndImage {
|
||||
.PARAMETER ResourceGroupName
|
||||
The name of the resource group to store the resulting artifact. Resource group must already exist.
|
||||
.PARAMETER ImageType
|
||||
The type of image to generate. Valid values are: Windows2022, Windows2025, Windows2025_vs2026, Ubuntu2204, Ubuntu2404.
|
||||
The type of image to generate. Valid values are: Windows2019, Windows2022, Windows2025, Ubuntu2204, Ubuntu2404, UbuntuMinimal.
|
||||
.PARAMETER ManagedImageName
|
||||
The name of the managed image to create. The default is "Runner-Image-{{ImageType}}".
|
||||
.PARAMETER AzureLocation
|
||||
@@ -132,13 +96,6 @@ Function GenerateResourcesAndImage {
|
||||
The Azure client secret to use to authenticate with Azure. If not specified, the current user's credentials will be used.
|
||||
.PARAMETER AzureTenantId
|
||||
The Azure tenant id to use to authenticate with Azure. If not specified, the current user's credentials will be used.
|
||||
.PARAMETER UseOidc
|
||||
If set, authenticate using GitHub Actions OIDC (federated credentials) instead of a client secret.
|
||||
Requires AzureClientId and AzureTenantId, and OidcRequestToken/OidcRequestUrl parameters.
|
||||
.PARAMETER OidcRequestToken
|
||||
GitHub Actions OIDC request token.
|
||||
.PARAMETER OidcRequestUrl
|
||||
GitHub Actions OIDC request URL.
|
||||
.PARAMETER RestrictToAgentIpAddress
|
||||
If set, access to the VM used by packer to generate the image is restricted to the public IP address this script is run from.
|
||||
This parameter cannot be used in combination with the virtual_network_name packer parameter.
|
||||
@@ -166,7 +123,7 @@ Function GenerateResourcesAndImage {
|
||||
[ImageType] $ImageType,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $ManagedImageName = "Runner-Image-$($ImageType)",
|
||||
[Parameter(Mandatory = $False)]
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $AzureLocation,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $ImageGenerationRepositoryRoot = $pwd,
|
||||
@@ -179,14 +136,6 @@ Function GenerateResourcesAndImage {
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $AzureTenantId,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[switch] $UseOidc,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string] $OidcRequestToken,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string] $OidcRequestUrl,
|
||||
[Parameter(Mandatory = $False)]
|
||||
[string] $PluginVersion = "2.2.1",
|
||||
[Parameter(Mandatory = $False)]
|
||||
[switch] $RestrictToAgentIpAddress,
|
||||
@@ -206,8 +155,8 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
|
||||
# Get template path
|
||||
$PackerTemplate = Get-PackerTemplate -RepositoryRoot $ImageGenerationRepositoryRoot -ImageType $ImageType
|
||||
Write-Debug "Template path: $($PackerTemplate.Path)."
|
||||
$TemplatePath = Get-PackerTemplatePath -RepositoryRoot $ImageGenerationRepositoryRoot -ImageType $ImageType
|
||||
Write-Debug "Template path: $TemplatePath."
|
||||
|
||||
# Prepare list of allowed inbound IP addresses
|
||||
if ($RestrictToAgentIpAddress) {
|
||||
@@ -258,27 +207,18 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
|
||||
Write-Host "Validating packer template..."
|
||||
$validateClientSecret = "fake"
|
||||
if ($UseOidc) {
|
||||
$validateClientSecret = ""
|
||||
}
|
||||
|
||||
& $PackerBinary validate `
|
||||
"-only=$($PackerTemplate.BuildName).*" `
|
||||
"-var=client_id=fake" `
|
||||
"-var=client_secret=$($validateClientSecret)" `
|
||||
"-var=oidc_request_token=fake" `
|
||||
"-var=oidc_request_url=fake" `
|
||||
"-var=client_secret=fake" `
|
||||
"-var=subscription_id=$($SubscriptionId)" `
|
||||
"-var=tenant_id=fake" `
|
||||
"-var=location=$($AzureLocation)" `
|
||||
"-var=image_os=$($PackerTemplate.ImageOS)" `
|
||||
"-var=managed_image_name=$($ManagedImageName)" `
|
||||
"-var=managed_image_resource_group_name=$($ResourceGroupName)" `
|
||||
"-var=install_password=$($InstallPassword)" `
|
||||
"-var=allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
"-var=azure_tags=$($TagsJson)" `
|
||||
$PackerTemplate.Path
|
||||
$TemplatePath
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Packer template validation failed."
|
||||
@@ -290,23 +230,10 @@ Function GenerateResourcesAndImage {
|
||||
Write-Verbose "No AzureClientId was provided, will use interactive login."
|
||||
az login --output none
|
||||
}
|
||||
elseif ($UseOidc) {
|
||||
if ([string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureTenantId is required for OIDC authentication."
|
||||
}
|
||||
|
||||
Write-Verbose "Using OIDC service principal login (federated credentials)."
|
||||
$idToken = Get-GitHubActionsOidcIdToken -RequestUrl $OidcRequestUrl -RequestToken $OidcRequestToken
|
||||
az login --service-principal --username $AzureClientId --tenant $AzureTenantId --federated-token $idToken --output none
|
||||
}
|
||||
else {
|
||||
if ([string]::IsNullOrEmpty($AzureClientSecret) -or [string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureClientSecret and AzureTenantId are required for service principal login unless -UseOidc is specified."
|
||||
}
|
||||
Write-Verbose "AzureClientId was provided, will use service principal login (client secret)."
|
||||
Write-Verbose "AzureClientId was provided, will use service principal login."
|
||||
az login --service-principal --username $AzureClientId --password=$AzureClientSecret --tenant $AzureTenantId --output none
|
||||
}
|
||||
|
||||
az account set --subscription $SubscriptionId
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Failed to login to Azure subscription '$SubscriptionId'."
|
||||
@@ -321,7 +248,7 @@ Function GenerateResourcesAndImage {
|
||||
throw "Resource group '$ResourceGroupName' does not exist."
|
||||
}
|
||||
|
||||
# Create / choose authentication for packer
|
||||
# Create service principal
|
||||
if ([string]::IsNullOrEmpty($AzureClientId)) {
|
||||
Write-Host "Creating service principal for packer..."
|
||||
$ADCleanupRequired = $true
|
||||
@@ -341,46 +268,25 @@ Function GenerateResourcesAndImage {
|
||||
Write-Host "Service principal created with id '$ServicePrincipalAppId'. It will be deleted after the build."
|
||||
}
|
||||
else {
|
||||
if ($UseOidc) {
|
||||
if ([string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureTenantId is required for OIDC authentication."
|
||||
}
|
||||
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = ""
|
||||
$TenantId = $AzureTenantId
|
||||
# Avoid leaking OIDC request values via command line arguments.
|
||||
$env:PKR_VAR_oidc_request_token = $OidcRequestToken
|
||||
$env:PKR_VAR_oidc_request_url = $OidcRequestUrl
|
||||
}
|
||||
else {
|
||||
if ([string]::IsNullOrEmpty($AzureClientSecret) -or [string]::IsNullOrEmpty($AzureTenantId)) {
|
||||
throw "AzureClientSecret and AzureTenantId are required for service principal authentication unless -UseOidc is specified."
|
||||
}
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = $AzureClientSecret
|
||||
$TenantId = $AzureTenantId
|
||||
}
|
||||
$ServicePrincipalAppId = $AzureClientId
|
||||
$ServicePrincipalPassword = $AzureClientSecret
|
||||
$TenantId = $AzureTenantId
|
||||
}
|
||||
Write-Debug "Service principal app id: $ServicePrincipalAppId."
|
||||
Write-Debug "Tenant id: $TenantId."
|
||||
|
||||
& $PackerBinary build -on-error="$($OnError)" `
|
||||
-only "$($PackerTemplate.BuildName).*" `
|
||||
-var "client_id=$($ServicePrincipalAppId)" `
|
||||
-var "client_secret=$($ServicePrincipalPassword)" `
|
||||
-var "oidc_request_token=$($env:PKR_VAR_oidc_request_token)" `
|
||||
-var "oidc_request_url=$($env:PKR_VAR_oidc_request_url)" `
|
||||
-var "subscription_id=$($SubscriptionId)" `
|
||||
-var "tenant_id=$($TenantId)" `
|
||||
-var "location=$($AzureLocation)" `
|
||||
-var "image_os=$($PackerTemplate.ImageOS)" `
|
||||
-var "managed_image_name=$($ManagedImageName)" `
|
||||
-var "managed_image_resource_group_name=$($ResourceGroupName)" `
|
||||
-var "install_password=$($InstallPassword)" `
|
||||
-var "allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
-var "azure_tags=$($TagsJson)" `
|
||||
$PackerTemplate.Path
|
||||
$TemplatePath
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Failed to build image."
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
class GithubApi
|
||||
{
|
||||
[string] $Repository
|
||||
[object] hidden $AuthHeader
|
||||
|
||||
GithubApi(
|
||||
[string] $Repository,
|
||||
[string] $AccessToken
|
||||
) {
|
||||
$this.Repository = $Repository
|
||||
$this.AuthHeader = $this.BuildAuth($AccessToken)
|
||||
}
|
||||
|
||||
[object] hidden BuildAuth([string]$AccessToken) {
|
||||
if ([string]::IsNullOrEmpty($AccessToken)) {
|
||||
return $null
|
||||
}
|
||||
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("'':${AccessToken}"))
|
||||
return @{
|
||||
Authorization = "Basic ${base64AuthInfo}"
|
||||
}
|
||||
}
|
||||
|
||||
[string] hidden BuildBaseUrl([string]$Repository, [string]$ApiPrefix) {
|
||||
return "https://$ApiPrefix.github.com/repos/$Repository"
|
||||
}
|
||||
|
||||
[object] GetWorkflowRuns([string]$WorkflowId) {
|
||||
$url = "actions/workflows/$WorkflowId/runs"
|
||||
$response = $this.InvokeRestMethod($url, 'GET', $null, $null)
|
||||
return $response
|
||||
}
|
||||
|
||||
[object] GetWorkflowRun([string]$WorkflowRunId) {
|
||||
$url = "actions/runs/$WorkflowRunId"
|
||||
$response = $this.InvokeRestMethod($url, 'GET', $null, $null)
|
||||
return $response
|
||||
}
|
||||
|
||||
[object] DispatchWorkflow([string]$EventType, [object]$EventPayload) {
|
||||
$url = "dispatches"
|
||||
$body = @{
|
||||
"event_type" = $EventType
|
||||
"client_payload" = $EventPayload
|
||||
} | ConvertTo-Json
|
||||
$response = $this.InvokeRestMethod($url, 'POST', $null, $body)
|
||||
return $response
|
||||
}
|
||||
|
||||
[object] CancelWorkflowRun([string]$workflowRunId) {
|
||||
$url = "actions/runs/$workflowRunId/cancel"
|
||||
$response = $this.InvokeRestMethod($url, 'POST', $null, $null)
|
||||
return $response
|
||||
}
|
||||
|
||||
[string] hidden BuildUrl([string]$url, [string]$RequestParams, [string]$ApiPrefix) {
|
||||
$baseUrl = $this.BuildBaseUrl($this.Repository, $ApiPrefix)
|
||||
if ([string]::IsNullOrEmpty($RequestParams)) {
|
||||
return "$($baseUrl)/$($url)"
|
||||
} else {
|
||||
return "$($baseUrl)/$($url)?$($requestParams)"
|
||||
}
|
||||
}
|
||||
|
||||
[object] hidden InvokeRestMethod(
|
||||
[string] $url,
|
||||
[string] $Method,
|
||||
[string] $RequestParams,
|
||||
[string] $body
|
||||
) {
|
||||
$requestUrl = $this.BuildUrl($url, $RequestParams, "api")
|
||||
$params = @{
|
||||
Method = $Method
|
||||
ContentType = "application/json"
|
||||
Uri = $requestUrl
|
||||
Headers = @{}
|
||||
}
|
||||
if ($this.AuthHeader) {
|
||||
$params.Headers += $this.AuthHeader
|
||||
}
|
||||
if (![string]::IsNullOrEmpty($body)) {
|
||||
$params.Body = $body
|
||||
}
|
||||
|
||||
$response = Invoke-RestMethod @params
|
||||
return $response
|
||||
}
|
||||
}
|
||||
|
||||
function Get-GithubApi {
|
||||
param (
|
||||
[string] $Repository,
|
||||
[string] $AccessToken
|
||||
)
|
||||
|
||||
return [GithubApi]::New($Repository, $AccessToken)
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
Param (
|
||||
[Parameter(Mandatory)]
|
||||
[string] $WorkflowRunId,
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Repository,
|
||||
[Parameter(Mandatory)]
|
||||
[string] $AccessToken,
|
||||
[int] $RetryIntervalSeconds = 300,
|
||||
[int] $MaxRetryCount = 0
|
||||
)
|
||||
|
||||
Import-Module (Join-Path $PSScriptRoot "GitHubApi.psm1")
|
||||
|
||||
function Wait-ForWorkflowCompletion($WorkflowRunId, $RetryIntervalSeconds) {
|
||||
do {
|
||||
Start-Sleep -Seconds $RetryIntervalSeconds
|
||||
$workflowRun = $gitHubApi.GetWorkflowRun($WorkflowRunId)
|
||||
} until ($workflowRun.status -eq "completed")
|
||||
|
||||
return $workflowRun
|
||||
}
|
||||
|
||||
$gitHubApi = Get-GithubApi -Repository $Repository -AccessToken $AccessToken
|
||||
|
||||
$attempt = 1
|
||||
do {
|
||||
$finishedWorkflowRun = Wait-ForWorkflowCompletion -WorkflowRunId $WorkflowRunId -RetryIntervalSeconds $RetryIntervalSeconds
|
||||
Write-Host "Workflow run finished with result: $($finishedWorkflowRun.conclusion)"
|
||||
if ($finishedWorkflowRun.conclusion -in ("success", "cancelled", "timed_out")) {
|
||||
break
|
||||
} elseif ($finishedWorkflowRun.conclusion -eq "failure") {
|
||||
if ($attempt -le $MaxRetryCount) {
|
||||
Write-Host "Workflow run will be restarted. Attempt $attempt of $MaxRetryCount"
|
||||
$gitHubApi.ReRunFailedJobs($WorkflowRunId)
|
||||
$attempt += 1
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
} while ($true)
|
||||
|
||||
Write-Host "Last result: $($finishedWorkflowRun.conclusion)."
|
||||
"CI_WORKFLOW_RUN_RESULT=$($finishedWorkflowRun.conclusion)" | Out-File -Append -FilePath $env:GITHUB_ENV
|
||||
|
||||
if ($finishedWorkflowRun.conclusion -in ("failure", "cancelled", "timed_out")) {
|
||||
exit 1
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
param(
|
||||
[String] [Parameter (Mandatory=$true)] $TemplatePath,
|
||||
[String] [Parameter (Mandatory=$true)] $BuildTemplateName,
|
||||
[String] [Parameter (Mandatory=$true)] $ClientId,
|
||||
[String] [Parameter (Mandatory=$false)] $ClientSecret,
|
||||
[String] [Parameter (Mandatory=$true)] $Location,
|
||||
@@ -9,9 +8,7 @@ param(
|
||||
[String] [Parameter (Mandatory=$true)] $TempResourceGroupName,
|
||||
[String] [Parameter (Mandatory=$true)] $SubscriptionId,
|
||||
[String] [Parameter (Mandatory=$true)] $TenantId,
|
||||
[String] [Parameter (Mandatory=$true)] $ImageOS, # e.g. "ubuntu22", "ubuntu24" or "win22", "win25"
|
||||
[String] [Parameter (Mandatory=$false)] $UseAzureCliAuth = "false",
|
||||
[String] [Parameter (Mandatory=$false)] $PluginVersion = "2.3.3",
|
||||
[String] [Parameter (Mandatory=$false)] $pluginVersion = "2.2.1",
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkName,
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkRG,
|
||||
[String] [Parameter (Mandatory=$false)] $VirtualNetworkSubnet,
|
||||
@@ -25,7 +22,7 @@ if (-not (Test-Path $TemplatePath))
|
||||
exit 1
|
||||
}
|
||||
|
||||
$buildName = $($BuildTemplateName).Split(".")[1]
|
||||
$ImageTemplateName = [io.path]::GetFileName($TemplatePath).Split(".")[0]
|
||||
$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
$SensitiveData = @(
|
||||
@@ -47,15 +44,13 @@ Write-Host "Download packer plugins"
|
||||
packer plugins install github.com/hashicorp/azure $pluginVersion
|
||||
|
||||
Write-Host "Validate packer template"
|
||||
packer validate -syntax-only -only "$buildName*" $TemplatePath
|
||||
packer validate -syntax-only $TemplatePath
|
||||
|
||||
Write-Host "Build $buildName VM"
|
||||
packer build -only "$buildName*" `
|
||||
-var "client_id=$ClientId" `
|
||||
Write-Host "Build $ImageTemplateName VM"
|
||||
packer build -var "client_id=$ClientId" `
|
||||
-var "client_secret=$ClientSecret" `
|
||||
-var "install_password=$InstallPassword" `
|
||||
-var "location=$Location" `
|
||||
-var "image_os=$ImageOS" `
|
||||
-var "managed_image_name=$ImageName" `
|
||||
-var "managed_image_resource_group_name=$ImageResourceGroupName" `
|
||||
-var "subscription_id=$SubscriptionId" `
|
||||
@@ -65,7 +60,6 @@ packer build -only "$buildName*" `
|
||||
-var "virtual_network_resource_group_name=$VirtualNetworkRG" `
|
||||
-var "virtual_network_subnet_name=$VirtualNetworkSubnet" `
|
||||
-var "allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
-var "use_azure_cli_auth=$UseAzureCliAuth" `
|
||||
-var "azure_tags=$azure_tags" `
|
||||
-color=false `
|
||||
$TemplatePath `
|
||||
|
||||
@@ -22,9 +22,8 @@ export PATH="/usr/local/opt/curl/bin:$PATH"
|
||||
export PATH=$HOME/.cargo/bin:$PATH
|
||||
|
||||
export RCT_NO_LAUNCH_PACKAGER=1
|
||||
export DOTNET_ROOT=$HOME/.dotnet
|
||||
export DOTNET_MULTILEVEL_LOOKUP=0
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export DOTNET_NOLOGO=1
|
||||
|
||||
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||
export HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
|
||||
@@ -0,0 +1,278 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.6 (22H625)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250616.1247
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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
|
||||
- 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
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.2
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.8
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.9
|
||||
- Homebrew 4.5.6
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Vcpkg 2025 (build from commit ef7dbf94b9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.14.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.59.1
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (18621.2.5.18.1)
|
||||
- SafariDriver 18.5 (18621.2.5.18.1)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Microsoft Edge 137.0.3296.83
|
||||
- Microsoft Edge WebDriver 137.0.3296.83
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.33.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.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
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.19]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.19 [PyPy 7.3.16]
|
||||
- 3.10.16 [PyPy 7.3.19]
|
||||
|
||||
#### Ruby
|
||||
- 3.1.7
|
||||
- 3.2.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.8.18
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| macOS 13.0 | macosx13.0 | 14.1 |
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.1.13356709 |
|
||||
| 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.16
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.3.2-55975/ParallelsDesktop-20.3.2-55975.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
If you want to use Parallels Desktop you should download a package from URL stored in
|
||||
PARALLELS_DMG_URL environment variable. A system extension is allowed for this version.
|
||||
```
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.6 (22H625)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250616.1345
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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
|
||||
- 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
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.2
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.5.6
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 18.5 (18621.2.5.18.1)
|
||||
- SafariDriver 18.5 (18621.2.5.18.1)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.33.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 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.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| macOS 13.0 | macosx13.0 | 14.1 |
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.1.13356709 |
|
||||
| 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.16
|
||||
|
||||
+122
-125
@@ -1,105 +1,104 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- OS Version: macOS 14.7.6 (23H626)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20260420.0006.1
|
||||
- Image Version: 20250616.1357
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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_1) - 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_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- Node.js 20.19.2
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.8
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- Composer 2.8.9
|
||||
- Homebrew 4.5.6
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 256acc6401)
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Vcpkg 2025 (build from commit ef7dbf94b9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.19.0
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- Curl 8.14.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.32
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
- SwiftLint 0.59.1
|
||||
|
||||
### Browsers
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- Safari 18.5 (19621.2.5.18.1)
|
||||
- SafariDriver 18.5 (19621.2.5.18.1)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Microsoft Edge 137.0.3296.83
|
||||
- Microsoft Edge WebDriver 137.0.3296.83
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.41.0
|
||||
- Selenium server 4.33.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -109,57 +108,55 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 8.0.482+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
| Version | Environment Variable |
|
||||
| -------------------- | -------------------- |
|
||||
| 8.0.452+9 | JAVA_HOME_8_X64 |
|
||||
| 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.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
- 3.1.7
|
||||
- 3.2.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.10.20
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
@@ -235,58 +232,58 @@
|
||||
| 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 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 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.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### 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/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.1.13356709 |
|
||||
| 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.3.1-57396/ParallelsDesktop-26.3.1-57396.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.3.2-55975/ParallelsDesktop-20.3.2-55975.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,158 +1,154 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- OS Version: macOS 14.7.6 (23H626)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20260420.0004.1
|
||||
- Image Version: 20250616.1605
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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_1) - 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_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.20.2
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- Node.js 20.19.2
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.1.7
|
||||
- Homebrew 4.5.6
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 256acc6401)
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Vcpkg 2025 (build from commit ef7dbf94b9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.53.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.32
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.2
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 26.4 (19624.1.16.18.2)
|
||||
- SafariDriver 26.4 (19624.1.16.18.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- Safari 18.5 (19621.2.5.18.1)
|
||||
- SafariDriver 18.5 (19621.2.5.18.1)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.41.0
|
||||
- Selenium server 4.33.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.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
| 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.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
- 3.1.7
|
||||
- 3.2.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
@@ -228,56 +224,56 @@
|
||||
| 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.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1<br>34.0.0 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### 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/26.3.11579264 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.3.11579264 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/28.1.13356709 |
|
||||
| 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
|
||||
|
||||
|
||||
+142
-161
@@ -1,103 +1,102 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.5 (24G617)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20260421.0014.1
|
||||
- OS Version: macOS 15.5 (24F5068b)
|
||||
- Kernel Version: Darwin 24.5.0
|
||||
- Image Version: 20250616.1506
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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_1) - 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_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 22.22.2
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Node.js 22.16.0
|
||||
- Perl 5.40.2
|
||||
- PHP 8.4.8
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 9c5e11404a)
|
||||
- Composer 2.8.9
|
||||
- Homebrew 4.5.6
|
||||
- NPM 10.9.2
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Vcpkg 2025 (build from commit ef7dbf94b9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.19.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- Curl 8.14.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.33
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
- SwiftLint 0.59.1
|
||||
|
||||
### Browsers
|
||||
- Safari 26.5 (20624.2.1.19.2)
|
||||
- SafariDriver 26.5 (20624.2.1.19.2)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- Safari 18.5 (20621.2.5.11.5)
|
||||
- SafariDriver 18.5 (20621.2.5.11.5)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Microsoft Edge 137.0.3296.83
|
||||
- Microsoft Edge WebDriver 137.0.3296.83
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.0
|
||||
- Selenium server 4.33.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -107,69 +106,64 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
| 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.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
- 3.1.7
|
||||
- 3.2.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.10.20
|
||||
- 3.9.23
|
||||
- 3.10.18
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
| 16.4 (default) | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app<br>/Applications/Xcode.app |
|
||||
| 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,128 +173,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.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| 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.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | xros26.2 | 26.2, 26.3 |
|
||||
| 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.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| 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.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### 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.1.13356709 |
|
||||
| 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.3.1-57396/ParallelsDesktop-26.3.1-57396.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.3.2-55975/ParallelsDesktop-20.3.2-55975.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,169 +1,162 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
| [[Windows ,Ubuntu, MacOs ] Breaking change: Updating Azure PowerShell Module version as 12.5.x from 2025-07-04](https://github.com/actions/runner-images/issues/12333) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.4 (24G517)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20260421.0007.1
|
||||
- OS Version: macOS 15.5 (24F74)
|
||||
- Kernel Version: Darwin 24.5.0
|
||||
- Image Version: 20250616.1800
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.202
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.411, 9.0.102, 9.0.203, 9.0.301
|
||||
- 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_1) - 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_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 22.22.2
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Node.js 22.16.0
|
||||
- Perl 5.40.2
|
||||
- Python3 3.13.5
|
||||
- Ruby 3.3.8
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.9
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.1.7
|
||||
- NPM 10.9.7
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 9c5e11404a)
|
||||
- Homebrew 4.5.7
|
||||
- NPM 10.9.2
|
||||
- Pip3 25.1.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.9
|
||||
- Vcpkg 2025 (build from commit ef7dbf94b9)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.10
|
||||
- Gradle 8.14.2
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.29.1
|
||||
- bazel 8.2.1
|
||||
- bazelisk 1.26.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.74.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- gpg (GnuPG) 2.4.8
|
||||
- jq 1.8.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.13.1
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.4
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.33
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.1
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- AWS CLI 2.27.35
|
||||
- AWS SAM CLI 1.140.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.74.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.36.1
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.22.0
|
||||
- Fastlane 2.228.0
|
||||
- SwiftFormat 0.56.4
|
||||
- Xcbeautify 2.28.0
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 26.3 (20623.2.7.18.1)
|
||||
- SafariDriver 26.3 (20623.2.7.18.1)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 149.0.2
|
||||
- Safari 18.5 (20621.2.5.11.8)
|
||||
- SafariDriver 18.5 (20621.2.5.11.8)
|
||||
- Google Chrome 137.0.7151.104
|
||||
- Google Chrome for Testing 137.0.7151.70
|
||||
- ChromeDriver 137.0.7151.70
|
||||
- Mozilla Firefox 139.0.4
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.0
|
||||
- Selenium server 4.33.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.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
| 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.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
- 3.1.7
|
||||
- 3.2.8
|
||||
- 3.3.8
|
||||
- 3.4.4
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.13.5
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.8
|
||||
- 20.19.2
|
||||
- 22.16.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.10
|
||||
- 1.24.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.87.0
|
||||
- Rust 1.87.0
|
||||
- Rustdoc 1.87.0
|
||||
- Rustup 1.28.2
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.87
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.10
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.24.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ------------------------------ | -------------------------------------------------------------- |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
| 16.4 (default) | 16F6 | /Applications/Xcode_16.4.app | /Applications/Xcode_16.4.0.app<br>/Applications/Xcode.app |
|
||||
| 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 |
|
||||
@@ -173,126 +166,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.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| 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.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| 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.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | xros26.2 | 26.2, 26.3 |
|
||||
| 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.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| 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.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 18.5 | 18.5 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 18.6 | 18.6 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 13-inch (M4) |
|
||||
| iOS 26.0 | 26.0.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.1 | 26.1 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16<br>iPhone 16 Plus<br>iPhone 16 Pro<br>iPhone 16 Pro Max<br>iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad (A16)<br>iPad Air 11-inch (M2)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M2)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M4)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M4)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 18.5 | 18.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 11.5 | 11.5 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 10 (42mm)<br>Apple Watch Series 10 (46mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 2 (49mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 2.3 | 2.3 | Apple Vision Pro |
|
||||
| visionOS 2.4 | 2.4 | Apple Vision Pro |
|
||||
| visionOS 2.5 | 2.5 | Apple Vision Pro |
|
||||
| visionOS 26.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
| 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.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2)<br>android-34-ext8 (rev 1)<br>android-34-ext12 (rev 1)<br>android-34-ext11 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 3) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 35.5.10 |
|
||||
| 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 | 35.0.2 |
|
||||
| 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.1.13356709 |
|
||||
|
||||
#### 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.1.13356709 |
|
||||
| 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
|
||||
|
||||
|
||||
@@ -1,262 +0,0 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 26
|
||||
- OS Version: macOS 26.3.1 (25D2128)
|
||||
- Kernel Version: Darwin 25.3.0
|
||||
- Image Version: 20260422.0018.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.203
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 24.15.0
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- NPM 11.12.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 3fb54e6717)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.19.0
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 3.6.2 7 Apr 2026 (Library: OpenSSL 3.6.2 7 Apr 2026)
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.34
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.2
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 26.4.1.0.1775747724
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.3.1 (21623.2.7.11.7)
|
||||
- SafariDriver 26.3.1 (21623.2.7.11.7)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 150.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | ------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.30+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_X64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ----------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.5 (beta) | 17F5022i | /Applications/Xcode_26.5_beta_2.app | /Applications/Xcode_26.5.0.app<br>/Applications/Xcode_26.5.app |
|
||||
| 26.4.1 | 17E202 | /Applications/Xcode_26.4.1.app | /Applications/Xcode_26.4.app |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 (default) | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| macOS 26.4 | macosx26.4 | 26.4.1 |
|
||||
| macOS 26.5 | macosx26.5 | 26.5 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| iOS 26.4 | iphoneos26.4 | 26.4.1 |
|
||||
| iOS 26.5 | iphoneos26.5 | 26.5 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 26.4 | iphonesimulator26.4 | 26.4.1 |
|
||||
| Simulator - iOS 26.5 | iphonesimulator26.5 | 26.5 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| tvOS 26.4 | appletvos26.4 | 26.4.1 |
|
||||
| tvOS 26.5 | appletvos26.5 | 26.5 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 26.4 | appletvsimulator26.4 | 26.4.1 |
|
||||
| Simulator - tvOS 26.5 | appletvsimulator26.5 | 26.5 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| watchOS 26.4 | watchos26.4 | 26.4.1 |
|
||||
| watchOS 26.5 | watchos26.5 | 26.5 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 26.4 | watchsimulator26.4 | 26.4.1 |
|
||||
| Simulator - watchOS 26.5 | watchsimulator26.5 | 26.5 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| visionOS 26.4 | xros26.4 | 26.4.1 |
|
||||
| visionOS 26.5 | xros26.5 | 26.5 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 26.4 | xrsimulator26.4 | 26.4.1 |
|
||||
| Simulator - visionOS 26.5 | xrsimulator26.5 | 26.5 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.4 | driverkit25.4 | 26.4.1 |
|
||||
| DriverKit 25.5 | driverkit25.5 | 26.5 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.4 | 26.4.1 | iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone 17e<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M4)<br>iPad Air 13-inch (M4)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.4 | 26.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.4 | 26.4 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
@@ -1,260 +0,0 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 26 (Tahoe) is now generally available in GitHub Actions](https://github.com/actions/runner-images/issues/13739) |
|
||||
| [[macOS] The macOS 14 Sonoma based runner images will begin deprecation on July 6th and will be fully unsupported by November 2nd for GitHub Actions and Azure DevOps](https://github.com/actions/runner-images/issues/13518) |
|
||||
***
|
||||
# macOS 26
|
||||
- OS Version: macOS 26.3 (25D125)
|
||||
- Kernel Version: Darwin 25.3.0
|
||||
- Image Version: 20260422.0012.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.420, 9.0.102, 9.0.203, 9.0.313, 10.0.103, 10.0.203
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM (Homebrew) 20.1.8 - available on `$(brew --prefix llvm@20)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_1) - available by `gcc-15` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.4.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.3.0) - available by `gfortran-14` alias
|
||||
- GNU Fortran 15 (Homebrew GCC 15.2.0_1) - available by `gfortran-15` alias
|
||||
- Kotlin 2.3.20-release-208
|
||||
- Node.js 24.15.0
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.4.9
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.1.7
|
||||
- NPM 11.12.1
|
||||
- Pip3 26.0.1 (python 3.14)
|
||||
- Pipx 1.11.1
|
||||
- RubyGems 4.0.10
|
||||
- Vcpkg 2026 (build from commit 3fb54e6717)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.17
|
||||
- Apache Maven 3.9.15
|
||||
- Gradle 9.4.1
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.7.1
|
||||
- Git 2.54.0
|
||||
- Git LFS 3.7.1
|
||||
- GitHub CLI 2.90.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.5.18
|
||||
- jq 1.8.1
|
||||
- OpenSSL 3.6.2 7 Apr 2026 (Library: OpenSSL 3.6.2 7 Apr 2026)
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.34.34
|
||||
- AWS SAM CLI 1.158.0
|
||||
- AWS Session Manager CLI 1.2.804.0
|
||||
- Azure CLI 2.85.0
|
||||
- Azure CLI (azure-devops) 1.0.3
|
||||
- Bicep CLI 0.42.1
|
||||
- Cmake 4.3.2
|
||||
- CodeQL Action Bundle 2.25.2
|
||||
- Fastlane 2.233.0
|
||||
- SwiftFormat 0.61.0
|
||||
- Xcbeautify 3.2.1
|
||||
- Xcode Command Line Tools 26.4.1.0.1775747724
|
||||
- Xcodes 1.6.2
|
||||
|
||||
### Browsers
|
||||
- Safari 26.3 (21623.2.7.11.6)
|
||||
- SafariDriver 26.3 (21623.2.7.11.6)
|
||||
- Google Chrome 147.0.7727.102
|
||||
- Google Chrome for Testing 147.0.7727.57
|
||||
- ChromeDriver 147.0.7727.57
|
||||
- Microsoft Edge 147.0.3912.72
|
||||
- Microsoft Edge WebDriver 147.0.3912.72
|
||||
- Mozilla Firefox 150.0
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.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.30+7 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.18+8 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.10+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
| 25.0.2+10.0 | JAVA_HOME_25_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
|
||||
#### Go
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | -------- | ----------------------------------- | -------------------------------------------------------------- |
|
||||
| 26.5 (beta) | 17F5022i | /Applications/Xcode_26.5_beta_2.app | /Applications/Xcode_26.5.0.app<br>/Applications/Xcode_26.5.app |
|
||||
| 26.4.1 | 17E202 | /Applications/Xcode_26.4.1.app | /Applications/Xcode_26.4.app |
|
||||
| 26.3 | 17C529 | /Applications/Xcode_26.3.app | /Applications/Xcode_26.3.0.app |
|
||||
| 26.2 (default) | 17C52 | /Applications/Xcode_26.2.app | /Applications/Xcode_26.2.0.app<br>/Applications/Xcode.app |
|
||||
| 26.1.1 | 17B100 | /Applications/Xcode_26.1.1.app | /Applications/Xcode_26.1.app |
|
||||
| 26.0.1 | 17A400 | /Applications/Xcode_26.0.1.app | /Applications/Xcode_26.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 26.0 | macosx26.0 | 26.0.1 |
|
||||
| macOS 26.1 | macosx26.1 | 26.1.1 |
|
||||
| macOS 26.2 | macosx26.2 | 26.2, 26.3 |
|
||||
| macOS 26.4 | macosx26.4 | 26.4.1 |
|
||||
| macOS 26.5 | macosx26.5 | 26.5 |
|
||||
| iOS 26.0 | iphoneos26.0 | 26.0.1 |
|
||||
| iOS 26.1 | iphoneos26.1 | 26.1.1 |
|
||||
| iOS 26.2 | iphoneos26.2 | 26.2, 26.3 |
|
||||
| iOS 26.4 | iphoneos26.4 | 26.4.1 |
|
||||
| iOS 26.5 | iphoneos26.5 | 26.5 |
|
||||
| Simulator - iOS 26.0 | iphonesimulator26.0 | 26.0.1 |
|
||||
| Simulator - iOS 26.1 | iphonesimulator26.1 | 26.1.1 |
|
||||
| Simulator - iOS 26.2 | iphonesimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - iOS 26.4 | iphonesimulator26.4 | 26.4.1 |
|
||||
| Simulator - iOS 26.5 | iphonesimulator26.5 | 26.5 |
|
||||
| tvOS 26.0 | appletvos26.0 | 26.0.1 |
|
||||
| tvOS 26.1 | appletvos26.1 | 26.1.1 |
|
||||
| tvOS 26.2 | appletvos26.2 | 26.2, 26.3 |
|
||||
| tvOS 26.4 | appletvos26.4 | 26.4.1 |
|
||||
| tvOS 26.5 | appletvos26.5 | 26.5 |
|
||||
| Simulator - tvOS 26.0 | appletvsimulator26.0 | 26.0.1 |
|
||||
| Simulator - tvOS 26.1 | appletvsimulator26.1 | 26.1.1 |
|
||||
| Simulator - tvOS 26.2 | appletvsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - tvOS 26.4 | appletvsimulator26.4 | 26.4.1 |
|
||||
| Simulator - tvOS 26.5 | appletvsimulator26.5 | 26.5 |
|
||||
| watchOS 26.0 | watchos26.0 | 26.0.1 |
|
||||
| watchOS 26.1 | watchos26.1 | 26.1.1 |
|
||||
| watchOS 26.2 | watchos26.2 | 26.2, 26.3 |
|
||||
| watchOS 26.4 | watchos26.4 | 26.4.1 |
|
||||
| watchOS 26.5 | watchos26.5 | 26.5 |
|
||||
| Simulator - watchOS 26.0 | watchsimulator26.0 | 26.0.1 |
|
||||
| Simulator - watchOS 26.1 | watchsimulator26.1 | 26.1.1 |
|
||||
| Simulator - watchOS 26.2 | watchsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - watchOS 26.4 | watchsimulator26.4 | 26.4.1 |
|
||||
| Simulator - watchOS 26.5 | watchsimulator26.5 | 26.5 |
|
||||
| visionOS 26.0 | xros26.0 | 26.0.1 |
|
||||
| visionOS 26.1 | xros26.1 | 26.1.1 |
|
||||
| visionOS 26.2 | xros26.2 | 26.2, 26.3 |
|
||||
| visionOS 26.4 | xros26.4 | 26.4.1 |
|
||||
| visionOS 26.5 | xros26.5 | 26.5 |
|
||||
| Simulator - visionOS 26.0 | xrsimulator26.0 | 26.0.1 |
|
||||
| Simulator - visionOS 26.1 | xrsimulator26.1 | 26.1.1 |
|
||||
| Simulator - visionOS 26.2 | xrsimulator26.2 | 26.2, 26.3 |
|
||||
| Simulator - visionOS 26.4 | xrsimulator26.4 | 26.4.1 |
|
||||
| Simulator - visionOS 26.5 | xrsimulator26.5 | 26.5 |
|
||||
| DriverKit 25.0 | driverkit25.0 | 26.0.1 |
|
||||
| DriverKit 25.1 | driverkit25.1 | 26.1.1 |
|
||||
| DriverKit 25.2 | driverkit25.2 | 26.2, 26.3 |
|
||||
| DriverKit 25.4 | driverkit25.4 | 26.4.1 |
|
||||
| DriverKit 25.5 | driverkit25.5 | 26.5 |
|
||||
|
||||
#### Installed Simulators
|
||||
| Name | OS | Simulators |
|
||||
| ------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 26.1 | 26.1 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.2 | 26.2 | iPhone 16e<br>iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M3)<br>iPad Air 13-inch (M3)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| iOS 26.4 | 26.4.1 | iPhone 17<br>iPhone 17 Pro<br>iPhone 17 Pro Max<br>iPhone 17e<br>iPhone Air<br>iPad (A16)<br>iPad Air 11-inch (M4)<br>iPad Air 13-inch (M4)<br>iPad mini (A17 Pro)<br>iPad Pro 11-inch (M5)<br>iPad Pro 13-inch (M5) |
|
||||
| tvOS 26.1 | 26.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.2 | 26.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 26.4 | 26.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 26.1 | 26.1 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.2 | 26.2 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| watchOS 26.4 | 26.4 | Apple Watch SE 3 (40mm)<br>Apple Watch SE 3 (44mm)<br>Apple Watch Series 11 (42mm)<br>Apple Watch Series 11 (46mm)<br>Apple Watch Ultra 3 (49mm) |
|
||||
| visionOS 26.1 | 26.1 | Apple Vision Pro |
|
||||
| visionOS 26.2 | 26.2 | Apple Vision Pro |
|
||||
| visionOS 26.4 | 26.4.1 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 16.0 |
|
||||
| Android Emulator | 36.5.10 |
|
||||
| Android SDK Build-tools | 37.0.0<br>36.0.0 36.1.0<br>35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | android-37.0 (rev 1)<br>android-36.1 (rev 1)<br>android-36-ext19 (rev 1)<br>android-36-ext18 (rev 1)<br>android-36 (rev 2)<br>android-35-ext15 (rev 1)<br>android-35-ext14 (rev 1)<br>android-35 (rev 2) |
|
||||
| Android SDK Platform-Tools | 37.0.0 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.31.5<br>4.1.2 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 27.3.13750724 (default)<br>28.2.13676358<br>29.0.14206865 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/29.0.14206865 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/27.3.13750724 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
### Miscellaneous
|
||||
- Tcl/Tk 8.6.17
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -49,3 +49,8 @@ function Test-SimulatorInstalled {
|
||||
|
||||
# First run doesn't provide full data about devices
|
||||
Get-XcodeInfoList | Out-Null
|
||||
|
||||
Write-Host "Validating and fixing Xcode simulators..."
|
||||
Get-BrokenXcodeSimulatorsList | ForEach-Object {
|
||||
Test-SimulatorInstalled -RuntimeId $_.RuntimeId -DeviceId $_.DeviceId -SimulatorName $_.SimulatorName -XcodeVersion $_.XcodeVersion
|
||||
}
|
||||
|
||||
@@ -10,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
|
||||
[
|
||||
|
||||
@@ -33,27 +33,15 @@ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.backupd.plist
|
||||
echo "Disable Apple Push Notification Service daemon"
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist
|
||||
|
||||
echo "Set SMC monitoring cadence to 0 to reduce CPU usage"
|
||||
sudo defaults -currentHost write /Library/Preferences/com.apple.powerlogd SMCMonitorCadence 0
|
||||
|
||||
echo "Disable Performance and Power Management daemon if possible"
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.PerfPowerServices.plist
|
||||
|
||||
# Remove Parallels Desktop
|
||||
# https://github.com/actions/runner-images/issues/6105
|
||||
# https://github.com/actions/runner-images/issues/10143
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
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,92 +8,71 @@ 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"
|
||||
)
|
||||
for values in "${systemValuesArray[@]}"; do
|
||||
configure_system_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
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"
|
||||
fi
|
||||
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','/opt/hca/hosted-compute-agent',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
|
||||
"'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','/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"
|
||||
"'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"
|
||||
"'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"
|
||||
"'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"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.systemevents',X'fade0c000000003400000001000000060000000200000016636f6d2e6170706c652e73797374656d6576656e7473000000000003',NULL,1592919552"
|
||||
)
|
||||
for values in "${userValuesArray[@]}"; do
|
||||
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
|
||||
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"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Close System Preferences window because since Ventura arm64 it is opened by default on Apperance tab
|
||||
# Close System Preferences window because in Ventura arm64 it is opened by default on Apperance tab
|
||||
if is_Arm64; then
|
||||
echo "Close System Preferences window"
|
||||
osascript -e 'tell application "System Preferences" to quit'
|
||||
|
||||
@@ -12,9 +12,9 @@ add_filtered_installation_components() {
|
||||
local tools_array=("$@")
|
||||
|
||||
for item in ${tools_array[@]}; do
|
||||
# Take the last 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
|
||||
|
||||
@@ -30,7 +30,7 @@ bundle_tag_name="codeql-bundle-v$bundle_version"
|
||||
echo "Downloading CodeQL bundle $bundle_version..."
|
||||
# Note that this is the all-platforms CodeQL bundle, to support scenarios where customers run
|
||||
# different operating systems within containers.
|
||||
archive_path=$(download_with_retry "https://github.com/github/codeql-action/releases/download/$bundle_tag_name/codeql-bundle-osx64.tar.gz")
|
||||
archive_path=$(download_with_retry "https://github.com/github/codeql-action/releases/download/$bundle_tag_name/codeql-bundle.tar.gz")
|
||||
|
||||
codeql_toolcache_path=$AGENT_TOOLSDIRECTORY/CodeQL/$bundle_version/x64
|
||||
mkdir -p "$codeql_toolcache_path"
|
||||
|
||||
@@ -15,9 +15,27 @@ for package in $common_packages; do
|
||||
brew install hashicorp/tap/packer
|
||||
;;
|
||||
|
||||
kotlin)
|
||||
# Pin kotlin bottle to 2.1.10 due to an issue with the latest version
|
||||
# https://youtrack.jetbrains.com/issue/KT-76169/kotlinc-js-version-and-kapt-version-returning-non-zero-status-code-on-v2.1.20
|
||||
kotlin_commit="442af88a2925f8c0e079eaf4fa62261133d2d7c4"
|
||||
kotlin_rb_link="https://raw.githubusercontent.com/Homebrew/homebrew-core/$kotlin_commit/Formula/k/kotlin.rb"
|
||||
kotlin_rb_path=$(download_with_retry "$kotlin_rb_link")
|
||||
brew install "$kotlin_rb_path"
|
||||
;;
|
||||
|
||||
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_SonomaX64 || is_SequoiaX64 || is_TahoeX64; 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
|
||||
@@ -42,27 +60,28 @@ for package in $cask_packages; do
|
||||
done
|
||||
|
||||
# Load "Parallels International GmbH"
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
sudo kextload /Applications/Parallels\ Desktop.app/Contents/Library/Extensions/10.9/prl_hypervisor.kext || true
|
||||
fi
|
||||
|
||||
# Execute AppleScript to change security preferences for macOS12, macOS13, macOS14 and macOS15
|
||||
# System Preferences -> Security & Privacy -> General -> Unlock -> Allow -> Not now
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
for retry in {4..0}; do
|
||||
echo "Executing AppleScript to change security preferences. Retries left: $retry"
|
||||
{
|
||||
set -e
|
||||
osascript -e 'tell application "System Events" to get application processes where visible is true'
|
||||
|
||||
osascript -e 'tell application "System Events" to get application processes where visible is true'
|
||||
if is_VenturaX64; then
|
||||
osascript $HOME/utils/confirm-identified-developers-macos13.scpt $USER_PASSWORD
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
} && break
|
||||
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
@@ -76,7 +95,7 @@ if is_SonomaX64 || is_SequoiaX64; then
|
||||
fi
|
||||
|
||||
# Validate "Parallels International GmbH" kext
|
||||
if is_SonomaX64 || is_SequoiaX64; then
|
||||
if is_SonomaX64 || is_VenturaX64 || is_SequoiaX64; then
|
||||
|
||||
echo "Closing System Settings window if it is still opened"
|
||||
killall "System Settings" || true
|
||||
|
||||
@@ -17,14 +17,9 @@ echo "Version of Microsoft Edge: ${edge_version}"
|
||||
|
||||
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_version_file_path=$(download_with_retry "https://msedgedriver.azureedge.net/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.azureedge.net/${edge_driver_latest_version}/edgedriver_mac64.zip"
|
||||
|
||||
echo "Compatible version of WebDriver: ${edge_driver_latest_version}"
|
||||
|
||||
|
||||
@@ -9,7 +9,5 @@ source ~/utils/utils.sh
|
||||
llvmVersion=$(get_toolset_value '.llvm.version')
|
||||
|
||||
brew_smart_install "llvm@${llvmVersion}"
|
||||
# After brew update to 5.1.0 we have to manually unlink llvm to avoid conflicts with pre-installed llvm on macOS
|
||||
brew unlink "llvm@${llvmVersion}"
|
||||
|
||||
invoke_tests "LLVM"
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-pypy.sh
|
||||
## Desc: Install PyPy
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
InstallPyPy() {
|
||||
local package_url=$1
|
||||
|
||||
PACKAGE_TAR_NAME=$(basename $package_url)
|
||||
echo "Downloading tar archive '$PACKAGE_TAR_NAME'"
|
||||
archive_path=$(download_with_retry $package_url)
|
||||
|
||||
echo "Expand '$PACKAGE_TAR_NAME' to the /tmp folder"
|
||||
tar xf $archive_path -C /tmp
|
||||
|
||||
# Get Python version
|
||||
PACKAGE_NAME=${PACKAGE_TAR_NAME/.tar.bz2/}
|
||||
MAJOR_VERSION=$(echo ${PACKAGE_NAME/pypy/} | cut -d. -f1)
|
||||
PYTHON_MAJOR="python$MAJOR_VERSION"
|
||||
|
||||
if [[ $MAJOR_VERSION != 2 ]]; then
|
||||
PYPY_MAJOR="pypy$MAJOR_VERSION"
|
||||
else
|
||||
PYPY_MAJOR="pypy"
|
||||
fi
|
||||
|
||||
PACKAGE_TEMP_FOLDER="/tmp/$PACKAGE_NAME"
|
||||
PYTHON_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(sys.version_info[0],sys.version_info[1],sys.version_info[2]))")
|
||||
PYPY_FULL_VERSION=$("$PACKAGE_TEMP_FOLDER/bin/$PYPY_MAJOR" -c "import sys;print('{}.{}.{}'.format(*sys.pypy_version_info[0:3]))")
|
||||
echo "Put '$PYPY_FULL_VERSION' to PYPY_VERSION file"
|
||||
echo $PYPY_FULL_VERSION > "$PACKAGE_TEMP_FOLDER/PYPY_VERSION"
|
||||
|
||||
# PyPy folder structure
|
||||
PYPY_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/PyPy
|
||||
PYPY_TOOLCACHE_VERSION_PATH=$PYPY_TOOLCACHE_PATH/$PYTHON_FULL_VERSION
|
||||
PYPY_TOOLCACHE_VERSION_ARCH_PATH=$PYPY_TOOLCACHE_VERSION_PATH/x64
|
||||
|
||||
echo "Check if PyPy hostedtoolcache folder exist..."
|
||||
if [[ ! -d $PYPY_TOOLCACHE_PATH ]]; then
|
||||
mkdir -p $PYPY_TOOLCACHE_PATH
|
||||
fi
|
||||
|
||||
echo "Create PyPy '$PYPY_TOOLCACHE_VERSION_PATH' folder"
|
||||
mkdir $PYPY_TOOLCACHE_VERSION_PATH
|
||||
|
||||
echo "Move PyPy $PACKAGE_TEMP_FOLDER binaries to $PYPY_TOOLCACHE_VERSION_ARCH_PATH folder"
|
||||
mv $PACKAGE_TEMP_FOLDER $PYPY_TOOLCACHE_VERSION_ARCH_PATH
|
||||
|
||||
echo "Create additional symlinks (Required for UsePythonVersion Azure DevOps task)"
|
||||
cd $PYPY_TOOLCACHE_VERSION_ARCH_PATH/bin
|
||||
|
||||
PYPY_FULL_VERSION=$(./$PYPY_MAJOR -c "import sys;print('{}.{}.{}'.format(*sys.pypy_version_info[0:3]))")
|
||||
echo "PYPY_FULL_VERSION is $PYPY_FULL_VERSION"
|
||||
echo $PYPY_FULL_VERSION > "PYPY_VERSION"
|
||||
|
||||
# Starting from PyPy 7.3.4 these links are already included in the package
|
||||
[[ -f ./$PYTHON_MAJOR ]] || ln -s $PYPY_MAJOR $PYTHON_MAJOR
|
||||
[[ -f ./python ]] || ln -s $PYTHON_MAJOR python
|
||||
|
||||
chmod +x ./python ./$PYTHON_MAJOR
|
||||
|
||||
echo "Install latest Pip"
|
||||
./python -m ensurepip
|
||||
./python -m pip install --ignore-installed pip
|
||||
|
||||
echo "Create complete file"
|
||||
touch $PYPY_TOOLCACHE_VERSION_PATH/x64.complete
|
||||
}
|
||||
|
||||
arch=$(get_arch)
|
||||
versions_json_path=$(download_with_retry "https://downloads.python.org/pypy/versions.json")
|
||||
toolsetVersions=$(get_toolset_value '.toolcache[] | select(.name | contains("PyPy")) | .arch.'$arch'.versions[]')
|
||||
|
||||
for toolsetVersion in $toolsetVersions; do
|
||||
latestMajorPyPyVersion=$(cat $versions_json_path |
|
||||
jq -r --arg toolsetVersion $toolsetVersion '.[]
|
||||
| select((.python_version | startswith($toolsetVersion)) and .stable == true).files[]
|
||||
| select(.platform == "darwin").download_url' | head -1)
|
||||
if [[ -z $latestMajorPyPyVersion ]]; then
|
||||
echo "Failed to get PyPy version $toolsetVersion"
|
||||
exit 1
|
||||
fi
|
||||
InstallPyPy $latestMajorPyPyVersion
|
||||
done
|
||||
@@ -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 "python@3.12"
|
||||
|
||||
# Pipx has its own Python dependency
|
||||
echo "Installing pipx"
|
||||
|
||||
if is_Arm64; then
|
||||
|
||||
@@ -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.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,18 +53,20 @@ $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.IsSonoma)) {
|
||||
if ((-not $os.IsSequoia)) {
|
||||
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Pip3", $(Get-Pip3Version))
|
||||
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
|
||||
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
if (-not $os.IsVenturaArm64) {
|
||||
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
|
||||
|
||||
# Project Management
|
||||
@@ -114,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))
|
||||
}
|
||||
|
||||
@@ -172,12 +174,15 @@ $android.AddTable($androidTable)
|
||||
$androidEnv = $android.AddHeader("Environment variables")
|
||||
$androidEnv.AddTable($(Build-AndroidEnvironmentTable))
|
||||
|
||||
if (($os.IsSonoma -or $os.IsSequoia -or $os.IsTahoe)) {
|
||||
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 (($os.IsSonomaX64 -or $os.IsSequoiaX64)) {
|
||||
if ($os.IsSonomaX64 -or $os.IsVenturaX64 -or $os.IsSequoiaX64) {
|
||||
|
||||
Write-Host "Adding environment variables for parallels"
|
||||
|
||||
@@ -198,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
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
function Get-ToolcacheRubyVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache" "Ruby"
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
@@ -10,6 +12,17 @@ function Get-ToolcachePythonVersions {
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
}
|
||||
|
||||
function Get-ToolcachePyPyVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache/PyPy/*/x64"
|
||||
Get-ChildItem -Path $toolcachePath | Sort-Object { [Version] $_.Parent.Name } | ForEach-Object {
|
||||
$foundVersionPath = $_.FullName
|
||||
$foundVersionName = (Get-Item ($foundVersionPath -replace "x64") | Sort-Object -Property {[version]$_.name} -Descending | Select-Object -First 1).name
|
||||
$arrPyPyVersion = ((& "$foundVersionPath/bin/python" -c "import sys;print(sys.version.split('\n')[1])") -split " ")
|
||||
$pypyVersion = "$($arrPyPyVersion[0]) $($arrPyPyVersion[1])"
|
||||
return "{0} {1}]" -f $foundVersionName, $pypyVersion
|
||||
}
|
||||
}
|
||||
|
||||
function Get-ToolcacheNodeVersions {
|
||||
$toolcachePath = Join-Path $env:HOME "hostedtoolcache" "Node"
|
||||
return Get-ChildItem $toolcachePath -Name | Sort-Object { [Version]$_ }
|
||||
@@ -23,6 +36,13 @@ function Get-ToolcacheGoVersions {
|
||||
function Build-ToolcacheSection {
|
||||
|
||||
$nodes = @()
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonoma) -and (-not $os.IsSequoia)) {
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")
|
||||
)
|
||||
}
|
||||
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List")
|
||||
[ToolVersionsListNode]::new("Python", $(Get-ToolcachePythonVersions), '^\d+\.\d+', "List"),
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
Import-Module "$PSScriptRoot/../helpers/Xcode.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
function Get-XcodePaths {
|
||||
$xcodePaths = Get-ChildItem -Path "/Applications" -Filter "Xcode_*.app" | Where-Object { !$_.LinkType }
|
||||
return $xcodePaths | Select-Object -ExpandProperty Fullname
|
||||
@@ -223,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])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,15 +29,15 @@ function Get-OSVersion {
|
||||
Version = $osVersion.Version
|
||||
Platform = $osVersion.Platform
|
||||
IsArm64 = $processorArchitecture -eq "arm64"
|
||||
IsVentura = $($osVersion.Version.Major -eq "13")
|
||||
IsVenturaArm64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -eq "arm64")
|
||||
IsVenturaX64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -ne "arm64")
|
||||
IsSonoma = $($osVersion.Version.Major -eq "14")
|
||||
IsSonomaArm64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -eq "arm64")
|
||||
IsSonomaX64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -ne "arm64")
|
||||
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")
|
||||
IsTahoeArm64 = $($osVersion.Version.Major -eq "26" -and $processorArchitecture -eq "arm64")
|
||||
IsTahoeX64 = $($osVersion.Version.Major -eq "26" -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -156,3 +156,157 @@ function Invoke-XCVersion {
|
||||
throw "Command [$Command] has finished with non-zero exit code."
|
||||
}
|
||||
}
|
||||
|
||||
function Get-BrokenXcodeSimulatorsList {
|
||||
return @(
|
||||
# tvOS Simulators
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-2";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-15-4";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple TV 4K (at 1080p) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-TV-4K-2nd-generation-1080p";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.tvOS-16-0";
|
||||
XcodeVersion = "14.2"
|
||||
},
|
||||
# watchOS-8-0 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-0";
|
||||
XcodeVersion = "13.1"
|
||||
},
|
||||
# watchOS-8-3 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-3";
|
||||
XcodeVersion = "13.2.1"
|
||||
},
|
||||
# watchOS-8-5 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 5 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-5-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 40mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-40mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 6 - 44mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-6-44mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 41mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-41mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch Series 7 - 45mm"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-Series-7-45mm";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-8-5";
|
||||
XcodeVersion = "13.4.1"
|
||||
},
|
||||
# watchOS-9-0 Simulators
|
||||
@{
|
||||
SimulatorName = "Apple Watch SE (40mm) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-SE-40mm-2nd-generation";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-9-0";
|
||||
XcodeVersion = "14.2"
|
||||
},
|
||||
@{
|
||||
SimulatorName = "Apple Watch SE (44mm) (2nd generation)"
|
||||
DeviceId = "com.apple.CoreSimulator.SimDeviceType.Apple-Watch-SE-44mm-2nd-generation";
|
||||
RuntimeId = "com.apple.CoreSimulator.SimRuntime.watchOS-9-0";
|
||||
XcodeVersion = "14.2"
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -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)]
|
||||
@@ -98,23 +138,25 @@ function Approve-XcodeLicense {
|
||||
Write-Host "Approving Xcode license for '$XcodeRootPath'..."
|
||||
$xcodeBuildPath = Get-XcodeToolPath -XcodeRootPath $XcodeRootPath -ToolName "xcodebuild"
|
||||
|
||||
if ($os.IsSonoma) {
|
||||
if ($os.IsVentura -or $os.IsSonoma) {
|
||||
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept" -Timeout 15
|
||||
} else {
|
||||
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept"
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
@@ -142,12 +184,6 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
$xcodebuildPath = Get-XcodeToolPath -Version $Version -ToolName 'xcodebuild'
|
||||
$validRuntimes = @("iOS", "watchOS", "tvOS")
|
||||
|
||||
# Determine architecture variant suffix for Xcode 26+
|
||||
$archSuffix = ""
|
||||
if ($Version -match '^(\d+)\.' -and [int]$matches[1] -ge 26) {
|
||||
$archSuffix = "-architectureVariant universal"
|
||||
}
|
||||
|
||||
# visionOS is only available on arm64
|
||||
if ($Arch -eq "arm64") {
|
||||
$validRuntimes += "visionOS"
|
||||
@@ -156,7 +192,7 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
# Install all runtimes / skip runtimes
|
||||
if ($Runtimes -eq "default") {
|
||||
Write-Host "Installing all runtimes for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadAllPlatforms $archSuffix" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadAllPlatforms" | Out-Null
|
||||
return
|
||||
} elseif ($Runtimes -eq "none") {
|
||||
Write-Host "Skipping runtimes installation for Xcode $Version ..."
|
||||
@@ -203,17 +239,17 @@ function Install-XcodeAdditionalSimulatorRuntimes {
|
||||
}
|
||||
"default" {
|
||||
Write-Host "Installing default $platform runtime for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform $archSuffix" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform" | Out-Null
|
||||
continue
|
||||
}
|
||||
default {
|
||||
# Version might be a semver or a build number
|
||||
if (($platformVersion -match "^\d{1,2}\.\d(\.\d)?$") -or ($platformVersion -match "^[a-zA-Z0-9]{6,8}$")) {
|
||||
Write-Host "Installing $platform $platformVersion runtime for Xcode $Version ..."
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform -buildVersion $platformVersion $archSuffix" | Out-Null
|
||||
Invoke-ValidateCommand "$xcodebuildPath -downloadPlatform $platform -buildVersion $platformVersion" | Out-Null
|
||||
continue
|
||||
}
|
||||
throw "$platformVersion is not a valid value for $platform version. Valid values are 'default', or 'skip', or a semver from 0.0 to 99.9.(9), or a build number."
|
||||
throw "$platformVersion is not a valid value for $platform version. Valid values are 'latest' or 'skip' or a semver from 0.0 to 99.9.(9)."
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -322,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"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# This AppleScript clicks "Allow" for "System Software from developer "Parallels International GmbH"
|
||||
# Steps:
|
||||
# - Open System Settings -> Privacy & Security
|
||||
# - Click 'Allow' for 'System Software from developer "Parallels International GmbH'
|
||||
# - Enter password for runner
|
||||
|
||||
on run argv
|
||||
set userpassword to item 1 of argv
|
||||
|
||||
tell application "System Settings"
|
||||
activate
|
||||
delay 5
|
||||
end tell
|
||||
|
||||
tell application "System Events"
|
||||
tell process "System Settings"
|
||||
set frontmost to true
|
||||
repeat until exists window 1
|
||||
delay 2
|
||||
end repeat
|
||||
|
||||
tell splitter group 1 of group 1 of window 1
|
||||
select row 20 of outline 1 of scroll area 1 of group 1
|
||||
delay 5
|
||||
click UI Element 2 of group 4 of scroll area 1 of group 1 of group 2
|
||||
delay 5
|
||||
keystroke userpassword
|
||||
delay 5
|
||||
keystroke return
|
||||
delay 5
|
||||
end tell
|
||||
end tell
|
||||
end tell
|
||||
end run
|
||||
@@ -45,18 +45,6 @@ is_Arm64() {
|
||||
[ "$(arch)" = "arm64" ]
|
||||
}
|
||||
|
||||
is_Tahoe() {
|
||||
[ "$OSTYPE" = "darwin25" ]
|
||||
}
|
||||
|
||||
is_TahoeArm64() {
|
||||
is_Tahoe && is_Arm64
|
||||
}
|
||||
|
||||
is_TahoeX64() {
|
||||
is_Tahoe && ! is_Arm64
|
||||
}
|
||||
|
||||
is_Sequoia() {
|
||||
[ "$OSTYPE" = "darwin24" ]
|
||||
}
|
||||
@@ -81,6 +69,18 @@ is_SonomaX64() {
|
||||
is_Sonoma && ! is_Arm64
|
||||
}
|
||||
|
||||
is_Ventura() {
|
||||
[ "$OSTYPE" = "darwin22" ]
|
||||
}
|
||||
|
||||
is_VenturaArm64() {
|
||||
is_Ventura && is_Arm64
|
||||
}
|
||||
|
||||
is_VenturaX64() {
|
||||
is_Ventura && ! is_Arm64
|
||||
}
|
||||
|
||||
get_toolset_value() {
|
||||
local toolset_path=$(echo "$IMAGE_FOLDER/toolset.json")
|
||||
local query=$1
|
||||
|
||||
@@ -56,7 +56,7 @@ Describe "Perl" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Tcl/Tk" -Skip:($os.IsArm64) {
|
||||
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
|
||||
@@ -69,7 +69,7 @@ Describe "bazelisk" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "GitHub CLI" {
|
||||
Describe "Github CLI" {
|
||||
It "GitHub CLI" {
|
||||
"gh --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
@@ -133,7 +133,7 @@ Describe "Kotlin" {
|
||||
$kotlinPackages = @("kapt", "kotlin", "kotlinc", "kotlinc-jvm", "kotlinc-js")
|
||||
|
||||
It "<toolName> is available" -TestCases ($kotlinPackages | ForEach-Object { @{ toolName = $_ } }) {
|
||||
"$toolName -help" | Should -ReturnZeroExitCode
|
||||
"$toolName -version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -33,7 +33,7 @@ Describe "GCC" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "vcpkg" {
|
||||
Describe "vcpkg" -Skip:($os.IsVenturaArm64) {
|
||||
It "vcpkg" {
|
||||
"vcpkg version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -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*"
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,4 @@ Describe "Clang/LLVM" {
|
||||
$clangVersion = & "$(brew --prefix llvm@$toolsetVersion)/bin/clang" --version
|
||||
$clangVersion[0] | Should -BeLike "*${toolsetVersion}*"
|
||||
}
|
||||
|
||||
It "Default clang points to Apple clang" {
|
||||
(Get-CommandResult "which clang").Output.Trim() | Should -Be "/usr/bin/clang"
|
||||
(Get-CommandResult "clang --version").Output | Should -BeLike "*Apple clang*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ BeforeAll {
|
||||
}
|
||||
}
|
||||
|
||||
if ($os.IsSonoma) {
|
||||
if ($os.IsVentura -or $os.IsSonoma) {
|
||||
Describe "Mono" {
|
||||
$MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions"
|
||||
$monoToolsetVersion = @((Get-ToolsetContent).mono.framework.version)
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,6 +99,49 @@ Describe "Toolcache" {
|
||||
}
|
||||
}
|
||||
}
|
||||
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 }
|
||||
|
||||
It "Toolcache directory exists" -TestCases $testCase {
|
||||
param ( [string] $PypyDirectory )
|
||||
|
||||
$PypyDirectory | Should -Exist
|
||||
}
|
||||
|
||||
It "Toolcache directory contains at least one version of PyPy" -TestCases $testCase {
|
||||
param ( [string] $PypyDirectory )
|
||||
|
||||
(Get-ChildItem -Path $PypyDirectory -Directory).Count | Should -BeGreaterThan 0
|
||||
}
|
||||
|
||||
$pypyPackage.Versions | Where-Object { $_ } | ForEach-Object {
|
||||
Context "$_" {
|
||||
$versionDirectory = Get-ChildItem -Path $pypyDirectory -Directory -Filter "$_*" | Select-Object -First 1
|
||||
$binFilename = If ($_.StartsWith("3")) { "pypy3" } else { "pypy" }
|
||||
$pypyBinPath = Join-Path $versionDirectory.FullName $pypyPackage.Arch "bin" $binFilename
|
||||
$testCase = @{ PypyVersion = $_; PypyBinPath = $pypyBinPath }
|
||||
|
||||
It "Version" -TestCases $testCase {
|
||||
param (
|
||||
[string] $PypyVersion,
|
||||
[string] $PypyBinPath
|
||||
)
|
||||
|
||||
$result = Get-CommandResult "$PypyBinPath --version"
|
||||
$result.Output | Should -BeLike "*$PypyVersion*"
|
||||
$result.ExitCode | Should -Be 0
|
||||
}
|
||||
|
||||
It "Run test script" -TestCases $testCase {
|
||||
param ( [string] $PypyBinPath )
|
||||
|
||||
"$PypyBinPath -c 'import sys;print(sys.version)'" | Should -ReturnZeroExitCode
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Context "Node" {
|
||||
$nodeDirectory = Join-Path $toolcacheDirectory "node"
|
||||
|
||||
+21
-17
@@ -76,12 +76,12 @@ variable "vcpu_count" {
|
||||
|
||||
variable "ram_size" {
|
||||
type = string
|
||||
default = "8G"
|
||||
default = "24G"
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos26"
|
||||
default = "macos13"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
@@ -91,7 +91,6 @@ source "veertu-anka-vm-clone" "template" {
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
log_level = "debug"
|
||||
}
|
||||
|
||||
source "null" "template" {
|
||||
@@ -149,7 +148,7 @@ build {
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-26.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
@@ -157,8 +156,9 @@ build {
|
||||
inline = [
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers-macos13.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils"
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -166,8 +166,7 @@ build {
|
||||
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"
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -206,14 +205,17 @@ build {
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-mono.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-openssl.sh",
|
||||
"${path.root}/../scripts/build/install-ruby.sh",
|
||||
"${path.root}/../scripts/build/install-rubygems.sh",
|
||||
"${path.root}/../scripts/build/install-git.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
"${path.root}/../scripts/build/install-common-utils.sh",
|
||||
"${path.root}/../scripts/build/install-unxip.sh"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -234,8 +236,11 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
@@ -244,10 +249,11 @@ build {
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh",
|
||||
"${path.root}/../scripts/build/install-firefox.sh",
|
||||
"${path.root}/../scripts/build/install-pypy.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh"
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -270,21 +276,19 @@ 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-26-arm64-Readme.md"
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/software-report.md"
|
||||
source = "${local.image_folder}/output/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/software-report.json"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/software-report.json"
|
||||
provisioner "shell" {
|
||||
inline = ["rm -rf \"$(brew --cache)\""]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
+13
-18
@@ -81,7 +81,7 @@ variable "ram_size" {
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos26"
|
||||
default = "macos13"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
@@ -149,7 +149,7 @@ build {
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-26.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
@@ -158,7 +158,7 @@ build {
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils"
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -203,16 +203,20 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-rosetta.sh",
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-mono.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-openssl.sh",
|
||||
"${path.root}/../scripts/build/install-ruby.sh",
|
||||
"${path.root}/../scripts/build/install-rubygems.sh",
|
||||
"${path.root}/../scripts/build/install-git.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
"${path.root}/../scripts/build/install-common-utils.sh",
|
||||
"${path.root}/../scripts/build/install-unxip.sh"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -233,22 +237,19 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-firefox.sh",
|
||||
"${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 +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-26-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-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" {
|
||||
|
||||
@@ -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" {
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "15.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{ "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", "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"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"java": {
|
||||
"x64": {
|
||||
"default": "17",
|
||||
"versions": [ "8", "11", "17", "21"]
|
||||
},
|
||||
"arm64": {
|
||||
"default": "17",
|
||||
"versions": [ "11", "17", "21"]
|
||||
}
|
||||
},
|
||||
"android": {
|
||||
"cmdline-tools": "commandlinetools-mac-10406996_latest.zip",
|
||||
"sdk-tools": "sdk-tools-darwin-4333796.zip",
|
||||
"platform_min_version": "33",
|
||||
"build_tools_min_version": "33.0.2",
|
||||
"extras": [
|
||||
"android;m2repository", "google;m2repository", "google;google_play_services"
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"versions": [
|
||||
"26", "27", "28"
|
||||
]
|
||||
}
|
||||
},
|
||||
"powershellModules": [
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"12.4.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
{ "name": "PSScriptAnalyzer" }
|
||||
],
|
||||
"brew": {
|
||||
"common_packages": [
|
||||
"ant",
|
||||
"aria2",
|
||||
"azure-cli",
|
||||
"bazelisk",
|
||||
"carthage",
|
||||
"cmake",
|
||||
"gh",
|
||||
"gnupg",
|
||||
"gnu-tar",
|
||||
"kotlin",
|
||||
"libpq",
|
||||
"p7zip",
|
||||
"packer",
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
"yq",
|
||||
"xcbeautify",
|
||||
"xcodes"
|
||||
],
|
||||
"cask_packages": [
|
||||
"parallels"
|
||||
]
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14"
|
||||
]
|
||||
},
|
||||
"dotnet": {
|
||||
"arch":{
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"ruby": {
|
||||
"default": "3.3",
|
||||
"rubygems": [
|
||||
"cocoapods",
|
||||
"bundler",
|
||||
"fastlane"
|
||||
]
|
||||
},
|
||||
"toolcache": [
|
||||
{
|
||||
"name": "Python",
|
||||
"url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.8.*",
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PyPy",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"2.7",
|
||||
"3.7",
|
||||
"3.8",
|
||||
"3.9",
|
||||
"3.10"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Node",
|
||||
"url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go",
|
||||
"url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"node": {
|
||||
"default": "20"
|
||||
},
|
||||
"llvm": {
|
||||
"version": "15"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.4"
|
||||
},
|
||||
"mono": {
|
||||
"framework":{
|
||||
"version": "6.12.0.188",
|
||||
"sha256": "07cdd4e5e72b562892960b7fc73af470db7a4ffc2f68bb834eb3d0a874bbd12c"
|
||||
},
|
||||
"nunit": {
|
||||
"version": "3.15.4",
|
||||
"sha256": "356dab61433b5be76b76fd0e2e979bda56d164f6d85a900e55c3a4a5fffa28de"
|
||||
}
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,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,30 +108,29 @@
|
||||
"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": {
|
||||
"cmdline-tools": "commandlinetools-mac-10406996_latest.zip",
|
||||
"sdk-tools": "sdk-tools-darwin-4333796.zip",
|
||||
"platform_min_version": "34",
|
||||
"build_tools_min_version": "34.0.0",
|
||||
"platform_min_version": "33",
|
||||
"build_tools_min_version": "33.0.2",
|
||||
"extras": [
|
||||
"android;m2repository", "google;m2repository", "google;google_play_services"
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
"cmake;3.31.5"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"default": "26",
|
||||
"versions": [
|
||||
"27", "28", "29"
|
||||
"26", "27", "28"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -153,7 +138,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"14.6.0"
|
||||
"12.4.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -232,19 +215,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
"3.13.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
"3.13.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -256,16 +238,16 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -280,8 +262,7 @@
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
@@ -289,8 +270,7 @@
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -300,18 +280,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
"3.4.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
"3.4.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -324,7 +304,7 @@
|
||||
"version": "15"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.5"
|
||||
"version": "8.4"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
|
||||
@@ -1,81 +1,45 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "16.4",
|
||||
"default": "16",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"link": "26_beta",
|
||||
"version": "26.0.0-Beta+17A5241e",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "664ad6ec7a3139e9c43b95620c73f8950a802c3d469bb47e6d89f3eab9541b1c",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "Xcode_16.4",
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["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"],
|
||||
@@ -86,81 +50,43 @@
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"link": "26_beta",
|
||||
"version": "26.0.0-Beta+17A5241e",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "664ad6ec7a3139e9c43b95620c73f8950a802c3d469bb47e6d89f3eab9541b1c",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] },
|
||||
{ "visionOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] },
|
||||
{ "visionOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "Xcode_16.4",
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["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"],
|
||||
@@ -172,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": {
|
||||
@@ -189,13 +115,12 @@
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
"cmake;3.31.5"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"27", "28", "29"
|
||||
"26", "27","28"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -203,7 +128,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"14.6.0"
|
||||
"12.4.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -228,7 +153,6 @@
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
@@ -243,9 +167,9 @@
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
"14"
|
||||
]
|
||||
},
|
||||
"dotnet": {
|
||||
@@ -253,15 +177,13 @@
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
"9.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
"9.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -282,19 +204,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.9.*",
|
||||
"3.10.*",
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
"3.13.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
"3.13.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -306,16 +227,16 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -330,8 +251,7 @@
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
@@ -339,8 +259,7 @@
|
||||
"versions": [
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -350,18 +269,18 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
"3.4.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.1.*",
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
"3.4.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -374,7 +293,7 @@
|
||||
"version": "18"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.5"
|
||||
"version": "8.4"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
|
||||
@@ -1,320 +0,0 @@
|
||||
{
|
||||
"xcode": {
|
||||
"default": "26.2",
|
||||
"x64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.5_beta_2",
|
||||
"filename": "Xcode_26.5_beta_2_Universal",
|
||||
"version": "26.5+17F5022i",
|
||||
"symlinks": ["26.5"],
|
||||
"sha256": "4e08f652cf56fe32d209f55d64f1ec71c20c8acfeb92898a21215ca71e17ff7d",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.4.1",
|
||||
"filename": "Xcode_26.4.1_Universal",
|
||||
"version": "26.4.1+17E202",
|
||||
"symlinks": ["26.4"],
|
||||
"sha256": "e2698ef350e5b38740132b1110d02bd22a1feb928c3e019c168d373ce00e3ffa",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "none"
|
||||
}
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.5_beta_2",
|
||||
"filename": "Xcode_26.5_beta_2_Universal",
|
||||
"version": "26.5+17F5022i",
|
||||
"symlinks": ["26.5"],
|
||||
"sha256": "4e08f652cf56fe32d209f55d64f1ec71c20c8acfeb92898a21215ca71e17ff7d",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.4.1",
|
||||
"filename": "Xcode_26.4.1_Universal",
|
||||
"version": "26.4.1+17E202",
|
||||
"symlinks": ["26.4"],
|
||||
"sha256": "e2698ef350e5b38740132b1110d02bd22a1feb928c3e019c168d373ce00e3ffa",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] },
|
||||
{ "visionOS": ["default"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": "none"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"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.6.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",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
"yq",
|
||||
"unxip",
|
||||
"xcbeautify",
|
||||
"xcodes"
|
||||
],
|
||||
"cask_packages": []
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
]
|
||||
},
|
||||
"dotnet": {
|
||||
"arch":{
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
]
|
||||
},
|
||||
"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": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.11.*",
|
||||
"3.12.*",
|
||||
"3.13.*",
|
||||
"3.14.*"
|
||||
]
|
||||
},
|
||||
"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": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Go",
|
||||
"url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json",
|
||||
"platform" : "darwin",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Ruby",
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"3.2.*",
|
||||
"3.3.*",
|
||||
"3.4.*",
|
||||
"4.0.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"node": {
|
||||
"default": "24"
|
||||
},
|
||||
"llvm": {
|
||||
"version": "20"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.5"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
}
|
||||
}
|
||||
@@ -1,65 +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 echo 'set -eo pipefail' >> /etc/bash.bashrc
|
||||
|
||||
RUN apt-get update && apt-get upgrade -y && apt-get install -y sudo lsb-release jq dpkg && \
|
||||
touch /run/.containerenv && \
|
||||
/tmp/scripts/build/configure-apt-sources.sh && \
|
||||
/tmp/scripts/build/configure-apt.sh && \
|
||||
/tmp/scripts/build/install-apt-vital.sh && \
|
||||
/tmp/scripts/build/install-ms-repos.sh && \
|
||||
/tmp/scripts/build/configure-image-data-file.sh && \
|
||||
/tmp/scripts/build/configure-environment.sh && \
|
||||
/tmp/scripts/build/install-actions-cache.sh && \
|
||||
/tmp/scripts/build/install-apt-common.sh && \
|
||||
/tmp/scripts/build/install-azcopy.sh && \
|
||||
/tmp/scripts/build/install-azure-cli.sh && \
|
||||
/tmp/scripts/build/install-azure-devops-cli.sh && \
|
||||
/tmp/scripts/build/install-bicep.sh && \
|
||||
/tmp/scripts/build/install-aws-tools.sh && \
|
||||
/tmp/scripts/build/install-git.sh && \
|
||||
/tmp/scripts/build/install-git-lfs.sh && \
|
||||
/tmp/scripts/build/install-github-cli.sh && \
|
||||
/tmp/scripts/build/install-google-cloud-cli.sh && \
|
||||
/tmp/scripts/build/install-nvm.sh && \
|
||||
/tmp/scripts/build/install-nodejs.sh && \
|
||||
/tmp/scripts/build/install-powershell.sh && \
|
||||
/tmp/scripts/build/configure-dpkg.sh && \
|
||||
/tmp/scripts/build/install-yq.sh && \
|
||||
/tmp/scripts/build/install-python.sh && \
|
||||
/tmp/scripts/build/install-zstd.sh && \
|
||||
/tmp/scripts/build/install-pipx-packages.sh && \
|
||||
/tmp/scripts/build/install-docker-cli.sh && \
|
||||
/tmp/scripts/build/configure-system.sh && \
|
||||
/tmp/scripts/helpers/cleanup.sh
|
||||
|
||||
RUN sed -i '/set -eo pipefail/d' /etc/bash.bashrc
|
||||
|
||||
ENTRYPOINT ["/opt/entrypoint.sh"]
|
||||
|
||||
CMD [ "bash" ]
|
||||
@@ -1,83 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
show_help() {
|
||||
echo "Usage: $0 [IMAGE_NAME]"
|
||||
echo ""
|
||||
echo "Generate a software report for a Docker image."
|
||||
echo ""
|
||||
echo "Arguments:"
|
||||
echo " IMAGE_NAME Docker image name to generate report for (default: ubuntu-slim:test)"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 # Generate report for ubuntu-slim:test (builds image first)"
|
||||
echo " $0 my-registry/ubuntu:latest # Generate report for existing image"
|
||||
echo " $0 ubuntu-slim:v1.2.3 # Generate report for tagged image"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message"
|
||||
}
|
||||
|
||||
# Handle help flags
|
||||
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||
show_help
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Set the image name from parameter or use default
|
||||
IMAGE_NAME="${1:-ubuntu-slim:test}"
|
||||
|
||||
# Build the image only if using the default name (for backward compatibility)
|
||||
if [[ "$IMAGE_NAME" == "ubuntu-slim:test" ]]; then
|
||||
echo "Building image: $IMAGE_NAME"
|
||||
docker build --debug --progress plain -t "$IMAGE_NAME" .
|
||||
else
|
||||
# Check if the image exists
|
||||
if ! docker image inspect "$IMAGE_NAME" >/dev/null 2>&1; then
|
||||
echo "Error: Image '$IMAGE_NAME' does not exist. Please build it first or provide a valid image name."
|
||||
echo "Run '$0 --help' for usage information."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Generating software report for image: $IMAGE_NAME"
|
||||
|
||||
# Get the script directory
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BASE_DIR="$(cd ../../helpers/software-report-base && pwd)"
|
||||
|
||||
echo $BASE_DIR
|
||||
|
||||
# Create a temporary directory for output
|
||||
OUTPUT_DIR=$(mktemp -d)
|
||||
echo "Using temporary directory: $OUTPUT_DIR"
|
||||
|
||||
# Run the container and execute the PowerShell script inside it
|
||||
echo "Running Generate-SoftwareReport.ps1 inside the container..."
|
||||
docker run --rm \
|
||||
-v "$OUTPUT_DIR:/output" \
|
||||
-v "$SCRIPT_DIR/scripts/docs-gen:/scripts/docs-gen:ro" \
|
||||
-v "$BASE_DIR:/scripts/software-report-base:ro" \
|
||||
"$IMAGE_NAME" \
|
||||
pwsh /scripts/docs-gen/Generate-SoftwareReport.ps1 -OutputDirectory /output
|
||||
|
||||
if [ -f "$OUTPUT_DIR/software-report.md" ]; then
|
||||
cp "$OUTPUT_DIR/software-report.md" ubuntu-slim-Readme.md
|
||||
echo "✓ Copied software-report.md to current directory"
|
||||
else
|
||||
echo "✗ Error: software-report.md was not generated"
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "$OUTPUT_DIR/software-report.json" ]; then
|
||||
cp "$OUTPUT_DIR/software-report.json" ubuntu-slim-Report.json
|
||||
echo "✓ Copied software-report.json to current directory"
|
||||
else
|
||||
echo "✗ Error: software-report.json was not generated"
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up temporary directory
|
||||
rm -rf "$OUTPUT_DIR"
|
||||
echo "✓ Software report generation complete"
|
||||
@@ -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://archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list.d/ubuntu.sources
|
||||
else
|
||||
sed -i 's|http://archive\.ubuntu\.com/ubuntu/|mirror+file:/etc/apt/apt-mirrors.txt|' /etc/apt/sources.list
|
||||
fi
|
||||
@@ -1,48 +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
|
||||
|
||||
echo 'APT sources'
|
||||
if ! is_ubuntu24; then
|
||||
cat /etc/apt/sources.list
|
||||
else
|
||||
cat /etc/apt/sources.list.d/ubuntu.sources
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
|
||||
echo "ubuntu ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
||||
@@ -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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user