Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 94ea493f48 |
@@ -36,18 +36,18 @@ body:
|
||||
attributes:
|
||||
label: Runner images affected
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- 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
|
||||
|
||||
@@ -19,18 +19,18 @@ body:
|
||||
attributes:
|
||||
label: Runner images affected
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- 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
|
||||
|
||||
@@ -57,18 +57,18 @@ body:
|
||||
attributes:
|
||||
label: Runner images where you need the tool
|
||||
options:
|
||||
- label: Ubuntu 20.04
|
||||
- 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@v3
|
||||
|
||||
- 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.14.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,93 @@
|
||||
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
|
||||
|
||||
- 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 D:/syft
|
||||
- name: Install SYFT tool on Ubuntu or macOS
|
||||
if: ${{ runner.os != 'Windows' }}
|
||||
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,12 +17,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Lint Code Base
|
||||
uses: github/super-linter/slim@v7
|
||||
uses: github/super-linter/slim@v4
|
||||
env:
|
||||
VALIDATE_ALL_CODEBASE: false
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
name: Trigger Ubuntu20.04 CI
|
||||
run-name: Ubuntu20.04 - ${{ github.event.pull_request.title }}
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: labeled
|
||||
paths:
|
||||
- 'images/ubuntu/**'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Ubuntu_2004:
|
||||
if: github.event.label.name == 'CI ubuntu-all' || github.event.label.name == 'CI ubuntu-2004'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
image_type: 'ubuntu2004'
|
||||
secrets: inherit
|
||||
@@ -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@v3
|
||||
|
||||
- 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
|
||||
@@ -12,7 +12,7 @@ defaults:
|
||||
shell: pwsh
|
||||
|
||||
jobs:
|
||||
Windows_2025:
|
||||
Windows_2022:
|
||||
if: github.event.label.name == 'CI windows-all' || github.event.label.name == 'CI windows-2025'
|
||||
uses: ./.github/workflows/trigger-ubuntu-win-build.yml
|
||||
with:
|
||||
|
||||
+7
-192
@@ -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].
|
||||
|
||||
@@ -29,29 +23,29 @@ Here are a few things you can do that will increase the likelihood of your pull
|
||||
- Follow the style guide for [Powershell](https://github.com/PoshCode/PowerShellPracticeAndStyle) when writing Windows scripts. There is currently no set style for the Shell scripts that run Linux installs :soon:.
|
||||
- Include complete details of why this is needed in the PR description.
|
||||
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
|
||||
- Write [good commit messages](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
||||
- Write [good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
|
||||
- For new tools:
|
||||
- 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
|
||||
|
||||
@@ -59,192 +53,13 @@ Add `Invoke-PesterTests -TestFile <testFileName> [-TestName <describeName>]` at
|
||||
Use existing scripts such as [github-cli.sh](images/ubuntu/scripts/build/github-cli.sh) as a starting point.
|
||||
- Use [helpers](images/ubuntu/scripts/helpers/install.sh) to simplify the installation process.
|
||||
- The validation part should `exit 1` if there is any issue with the installation.
|
||||
- Add changes to the software report generator `images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Ubuntu2204-Readme.md](images/ubuntu/Ubuntu2204-Readme.md) and it uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
- Add changes to the software report generator `images/ubuntu/scripts/docs-gen/Generate-SoftwareReport.ps1`. The software report generator is used to generate an image's README file, e.g. [Ubuntu2004-Readme.md](images/ubuntu/Ubuntu2004-README.md) and it uses [MarkdownPS](https://github.com/Sarafian/MarkdownPS).
|
||||
|
||||
### macOS
|
||||
|
||||
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,38 @@ 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] |  |
|
||||
| Ubuntu 20.04 <sup>deprecated</sup> | `ubuntu-20.04` | [ubuntu-20.04] |  |
|
||||
| macOS 15 <sup>beta</sup> | `macos-15-large`| [macOS-15] |  |
|
||||
| macOS 15 Arm64 <sup>beta</sup> | `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 <sup>beta</sup> | `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
|
||||
[ubuntu-20.04]: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2004-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 +81,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 +122,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
|
||||
|
||||
@@ -132,7 +131,7 @@ We use third-party package managers to install software during the image generat
|
||||
|
||||
| Operating system | Package manager | Third-party repos and packages |
|
||||
| :--- | :---: | ---: |
|
||||
| Ubuntu | [APT](https://wiki.debian.org/Apt) | [docker](https://download.docker.com/linux/ubuntu) <br/> [Eclipse-Temurin (Adoptium)](https://packages.adoptium.net/artifactory/deb/) <br/> [Erlang](https://packages.erlang-solutions.com/ubuntu) <br/> [Firefox](https://ppa.launchpad.net/mozillateam/ppa/ubuntu) <br/> [git-lfs](https://packagecloud.io/install/repositories/github/git-lfs) <br/> [git](https://launchpad.net/~git-core/+archive/ubuntu/ppa) <br/> [Google Cloud CLI](https://packages.cloud.google.com/apt) <br/> [Heroku](https://cli-assets.heroku.com/channels/stable/apt) <br/> [HHvm](https://dl.hhvm.com/ubuntu) <br/> [MongoDB](https://repo.mongodb.org/apt/ubuntu) <br/> [Mono](https://download.mono-project.com/repo/ubuntu) <br/> [MS Edge](https://packages.microsoft.com/repos/edge) <br/> [PostgreSQL](https://apt.postgresql.org/pub/repos/apt/) <br/> [R](https://cloud.r-project.org/bin/linux/ubuntu) |
|
||||
| Ubuntu | [APT](https://wiki.debian.org/Apt) | [containers](https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable) (Ubuntu 20 only) <br/> [docker](https://download.docker.com/linux/ubuntu) (Ubuntu20 0nly) <br/> [Eclipse-Temurin (Adoptium)](https://packages.adoptium.net/artifactory/deb/) <br/> [Erlang](https://packages.erlang-solutions.com/ubuntu) <br/> [Firefox](http://ppa.launchpad.net/mozillateam/ppa/ubuntu) <br/> [git-lfs](https://packagecloud.io/install/repositories/github/git-lfs) <br/> [git](https://launchpad.net/~git-core/+archive/ubuntu/ppa) <br/> [Google Cloud CLI](https://packages.cloud.google.com/apt) <br/> [Heroku](https://cli-assets.heroku.com/channels/stable/apt) <br/> [HHvm](https://dl.hhvm.com/ubuntu) <br/> [MongoDB](https://repo.mongodb.org/apt/ubuntu) <br/> [Mono](https://download.mono-project.com/repo/ubuntu) <br/> [MS Edge](https://packages.microsoft.com/repos/edge) <br/> [PostgreSQL](https://apt.postgresql.org/pub/repos/apt/) <br/> [R](https://cloud.r-project.org/bin/linux/ubuntu) |
|
||||
| | [pipx](https://pypa.github.io/pipx) | ansible-core <br/>yamllint |
|
||||
| Windows | [Chocolatey](https://chocolatey.org) | No third-party repos installed |
|
||||
| macOS | [Homebrew](https://brew.sh) | [aws-cli v2](https://github.com/aws/homebrew-tap) </br> [azure/bicep](https://github.com/Azure/homebrew-bicep) </br> [mongodb/brew](https://github.com/mongodb/homebrew-brew) |
|
||||
@@ -141,10 +140,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 +164,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 +173,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 20.04/22.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.
|
||||
@@ -49,7 +49,7 @@ In any case, you will need these software installed:
|
||||
|
||||
For Linux - install the latest version from your distro's package repo.
|
||||
|
||||
For Windows - download and install it from [here](https://gitforwindows.org/) or use [Chocolatey](https://chocolatey.org/):
|
||||
For Windows - download and install it from [here](https://gitforwindows.org/) of use [Chocolatey](https://chocolatey.org/):
|
||||
|
||||
```powershell
|
||||
choco install git -params '"/GitAndUnixToolsOnPath"'
|
||||
@@ -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", "Ubuntu2004", "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,16 @@
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
enum ImageType {
|
||||
Windows2022 = 1
|
||||
Windows2025 = 2
|
||||
Windows2025_vs2026 = 3
|
||||
Ubuntu2204 = 4
|
||||
Ubuntu2404 = 5
|
||||
Windows2019 = 1
|
||||
Windows2022 = 2
|
||||
Windows2025 = 3
|
||||
Ubuntu2004 = 4
|
||||
Ubuntu2204 = 5
|
||||
Ubuntu2404 = 6
|
||||
UbuntuMinimal = 7
|
||||
}
|
||||
|
||||
Function Get-PackerTemplate {
|
||||
Function Get-PackerTemplatePath {
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
[string] $RepositoryRoot,
|
||||
@@ -18,42 +20,37 @@ 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"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2025.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Windows2025_vs2026) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "build.windows-2025-vs2026.pkr.hcl"
|
||||
$imageOS = "win25-vs2026"
|
||||
([ImageType]::Ubuntu2004) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-20.04.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 +63,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 +85,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, Ubuntu2004, Ubuntu2204, Ubuntu2404, UbuntuMinimal.
|
||||
.PARAMETER ManagedImageName
|
||||
The name of the managed image to create. The default is "Runner-Image-{{ImageType}}".
|
||||
.PARAMETER AzureLocation
|
||||
@@ -132,13 +100,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.
|
||||
@@ -155,7 +116,7 @@ Function GenerateResourcesAndImage {
|
||||
.PARAMETER PluginVersion
|
||||
Specify the version of the packer Azure plugin to use. The default is "2.2.1".
|
||||
.EXAMPLE
|
||||
GenerateResourcesAndImage -SubscriptionId {YourSubscriptionId} -ResourceGroupName "shsamytest1" -ImageGenerationRepositoryRoot "C:\runner-images" -ImageType Ubuntu2204 -AzureLocation "East US"
|
||||
GenerateResourcesAndImage -SubscriptionId {YourSubscriptionId} -ResourceGroupName "shsamytest1" -ImageGenerationRepositoryRoot "C:\runner-images" -ImageType Ubuntu2004 -AzureLocation "East US"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
@@ -166,7 +127,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 +140,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,12 +159,12 @@ 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) {
|
||||
$AgentIp = (Invoke-RestMethod https://ipinfo.io/json).ip
|
||||
$AgentIp = (Invoke-RestMethod http://ipinfo.io/json).ip
|
||||
if (-not $AgentIp) {
|
||||
throw "Unable to determine agent IP address."
|
||||
}
|
||||
@@ -258,27 +211,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 +234,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 +252,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 +272,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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
# Port of Gavin Brock's Perl kcpassword generator to Python, by Tom Taylor
|
||||
# <tom@tomtaylor.co.uk>.
|
||||
# Perl version: https://www.brock-family.org/gavin/perl/kcpassword.html
|
||||
# Perl version: http://www.brock-family.org/gavin/perl/kcpassword.html
|
||||
# This script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/support/set_kcpassword.py
|
||||
# Distributed by MIT license, license can be found at the bottom of this script
|
||||
|
||||
@@ -45,4 +45,4 @@ Copyright (c) 2013-2017 Timothy Sutton
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
"""
|
||||
"""
|
||||
@@ -0,0 +1,279 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 15 (Sequoia) will be generally available in GitHub Actions and Azure DevOps from March, 25](https://github.com/actions/runner-images/issues/11486) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.4 (22H420)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250317.820
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.407, 9.0.102, 9.0.201
|
||||
- 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.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.0
|
||||
- Perl 5.40.1
|
||||
- PHP 8.4.5
|
||||
- Python3 3.13.2
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.6.6
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.8.6
|
||||
- Homebrew 4.4.24
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.0.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.6
|
||||
- Vcpkg 2025 (build from commit 782ccc18d8)
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.13
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.28.0
|
||||
- bazel 8.1.1
|
||||
- bazelisk 1.25.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.12.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.68.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.12.0
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.24.24
|
||||
- AWS SAM CLI 1.135.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.70.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.33.93
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.227.0
|
||||
- SwiftFormat 0.55.5
|
||||
- Xcbeautify 2.27.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.58.2
|
||||
|
||||
### Browsers
|
||||
- Safari 18.3.1 (18620.2.4.111.9)
|
||||
- SafariDriver 18.3.1 (18620.2.4.111.9)
|
||||
- Google Chrome 134.0.6998.89
|
||||
- Google Chrome for Testing 134.0.6998.88
|
||||
- ChromeDriver 134.0.6998.88
|
||||
- Microsoft Edge 134.0.3124.68
|
||||
- Microsoft Edge WebDriver 134.0.3124.68
|
||||
- Mozilla Firefox 136.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.29.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.442+6 | JAVA_HOME_8_X64 |
|
||||
| 11.0.26+4 | JAVA_HOME_11_X64 |
|
||||
| 17.0.14+7 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.6+7.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.6
|
||||
- 3.2.7
|
||||
- 3.3.7
|
||||
- 3.4.2
|
||||
|
||||
#### Python
|
||||
- 3.8.18
|
||||
- 3.9.21
|
||||
- 3.10.16
|
||||
- 3.11.9
|
||||
- 3.12.9
|
||||
- 3.13.2
|
||||
|
||||
#### Node.js
|
||||
- 18.20.7
|
||||
- 20.19.0
|
||||
- 22.14.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.12
|
||||
- 1.23.7
|
||||
- 1.24.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.85.0
|
||||
- Rust 1.85.0
|
||||
- Rustdoc 1.85.0
|
||||
- Rustup 1.28.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.85
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.7
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.23.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.4.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36 (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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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.2.2-55879/ParallelsDesktop-20.2.2-55879.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,250 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [macOS 15 (Sequoia) will be generally available in GitHub Actions and Azure DevOps from March, 25](https://github.com/actions/runner-images/issues/11486) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.7.4 (22H420)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20250317.910
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 8.0.101, 8.0.204, 8.0.303, 8.0.407, 9.0.102, 9.0.201
|
||||
- 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.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.1.10-release-473
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 20.19.0
|
||||
- Perl 5.40.1
|
||||
- Python3 3.13.2
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.6.6
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 4.4.24
|
||||
- NPM 10.8.2
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 25.0 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.6
|
||||
- Yarn 1.22.22
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.15
|
||||
- Apache Maven 3.9.9
|
||||
- Gradle 8.13
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.28.0
|
||||
- bazel 8.1.1
|
||||
- bazelisk 1.25.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.68.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.25.0
|
||||
- gpg (GnuPG) 2.4.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.12.0
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.12.1
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.24.24
|
||||
- AWS SAM CLI 1.135.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.70.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.33.93
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.227.0
|
||||
- SwiftFormat 0.55.5
|
||||
- Xcbeautify 2.27.0
|
||||
- Xcode Command Line Tools 14.3.1.0.1.1683849156
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 18.3.1 (18620.2.4.111.9)
|
||||
- SafariDriver 18.3.1 (18620.2.4.111.9)
|
||||
- Google Chrome 134.0.6998.89
|
||||
- Google Chrome for Testing 134.0.6998.88
|
||||
- ChromeDriver 134.0.6998.88
|
||||
- Selenium server 4.29.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 11.0.26+4 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.14+7 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.6+7.0 | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.1.6
|
||||
- 3.2.7
|
||||
- 3.3.7
|
||||
- 3.4.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.9
|
||||
- 3.13.2
|
||||
|
||||
#### Node.js
|
||||
- 18.20.7
|
||||
- 20.19.0
|
||||
- 22.14.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.12
|
||||
- 1.23.7
|
||||
- 1.24.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.85.0
|
||||
- Rust 1.85.0
|
||||
- Rustdoc 1.85.0
|
||||
- Rustup 1.28.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.85
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.7
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
| -------------- | ------- | ------------------------------ | --------------------------------------------------------- |
|
||||
| 15.2 (default) | 15C500b | /Applications/Xcode_15.2.app | /Applications/Xcode_15.2.0.app<br>/Applications/Xcode.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app | /Applications/Xcode_15.1.0.app |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app | /Applications/Xcode_15.0.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app | /Applications/Xcode_14.3.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app | /Applications/Xcode_14.2.0.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app | /Applications/Xcode_14.1.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| macOS 13.0 | macosx13.0 | 14.1 |
|
||||
| macOS 13.1 | macosx13.1 | 14.2 |
|
||||
| macOS 13.3 | macosx13.3 | 14.3.1 |
|
||||
| macOS 14.0 | macosx14.0 | 15.0.1 |
|
||||
| macOS 14.2 | macosx14.2 | 15.1, 15.2 |
|
||||
| iOS 16.1 | iphoneos16.1 | 14.1 |
|
||||
| iOS 16.2 | iphoneos16.2 | 14.2 |
|
||||
| iOS 16.4 | iphoneos16.4 | 14.3.1 |
|
||||
| iOS 17.0 | iphoneos17.0 | 15.0.1 |
|
||||
| iOS 17.2 | iphoneos17.2 | 15.1, 15.2 |
|
||||
| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 |
|
||||
| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 |
|
||||
| Simulator - iOS 16.4 | iphonesimulator16.4 | 14.3.1 |
|
||||
| Simulator - iOS 17.0 | iphonesimulator17.0 | 15.0.1 |
|
||||
| Simulator - iOS 17.2 | iphonesimulator17.2 | 15.1, 15.2 |
|
||||
| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 |
|
||||
| tvOS 16.4 | appletvos16.4 | 14.3.1 |
|
||||
| tvOS 17.0 | appletvos17.0 | 15.0.1 |
|
||||
| tvOS 17.2 | appletvos17.2 | 15.1, 15.2 |
|
||||
| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 |
|
||||
| Simulator - tvOS 16.4 | appletvsimulator16.4 | 14.3.1 |
|
||||
| Simulator - tvOS 17.0 | appletvsimulator17.0 | 15.0.1 |
|
||||
| Simulator - tvOS 17.2 | appletvsimulator17.2 | 15.1, 15.2 |
|
||||
| watchOS 9.1 | watchos9.1 | 14.1, 14.2 |
|
||||
| watchOS 9.4 | watchos9.4 | 14.3.1 |
|
||||
| watchOS 10.0 | watchos10.0 | 15.0.1 |
|
||||
| watchOS 10.2 | watchos10.2 | 15.1, 15.2 |
|
||||
| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 |
|
||||
| Simulator - watchOS 9.4 | watchsimulator9.4 | 14.3.1 |
|
||||
| Simulator - watchOS 10.0 | watchsimulator10.0 | 15.0.1 |
|
||||
| Simulator - watchOS 10.2 | watchsimulator10.2 | 15.1, 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Simulators |
|
||||
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 16.4 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.0 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| iOS 17.2 | iPhone 14<br>iPhone 14 Plus<br>iPhone 14 Pro<br>iPhone 14 Pro Max<br>iPhone 15<br>iPhone 15 Plus<br>iPhone 15 Pro<br>iPhone 15 Pro Max<br>iPhone SE (3rd generation)<br>iPad (10th generation)<br>iPad Air (5th generation)<br>iPad mini (6th generation)<br>iPad Pro (11-inch) (4th generation)<br>iPad Pro (12.9-inch) (6th generation) |
|
||||
| tvOS 16.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 9.4 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Ultra (49mm) |
|
||||
| watchOS 10.0 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| watchOS 10.2 | Apple Watch SE (40mm) (2nd generation)<br>Apple Watch SE (44mm) (2nd generation)<br>Apple Watch Series 5 (40mm)<br>Apple Watch Series 5 (44mm)<br>Apple Watch Series 6 (40mm)<br>Apple Watch Series 6 (44mm)<br>Apple Watch Series 7 (41mm)<br>Apple Watch Series 7 (45mm)<br>Apple Watch Series 8 (41mm)<br>Apple Watch Series 8 (45mm)<br>Apple Watch Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 35.4.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36 (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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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
|
||||
|
||||
+128
-131
@@ -1,105 +1,103 @@
|
||||
| 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 15 (Sequoia) will be generally available in GitHub Actions and Azure DevOps from March, 25](https://github.com/actions/runner-images/issues/11486) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- OS Version: macOS 14.7.4 (23H420)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20260420.0006.1
|
||||
- Image Version: 20250317.946
|
||||
|
||||
## 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.407, 9.0.102, 9.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_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
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- 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.0
|
||||
- Perl 5.40.1
|
||||
- PHP 8.4.5
|
||||
- Python3 3.13.2
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.6
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Composer 2.9.7
|
||||
- Homebrew 5.1.7
|
||||
- Composer 2.8.6
|
||||
- Homebrew 4.4.24
|
||||
- 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.0.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.6
|
||||
- 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.9
|
||||
- Gradle 8.13
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.28.0
|
||||
- bazel 8.1.1
|
||||
- bazelisk 1.25.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.12.1
|
||||
- Git 2.49.0
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.68.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.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.12.0
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- 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.24.24
|
||||
- AWS SAM CLI 1.135.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.70.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.33.93
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.227.0
|
||||
- SwiftFormat 0.55.5
|
||||
- Xcbeautify 2.27.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
- SwiftLint 0.58.2
|
||||
|
||||
### 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.3.1 (19620.2.4.111.9)
|
||||
- SafariDriver 18.3.1 (19620.2.4.111.9)
|
||||
- Google Chrome 134.0.6998.89
|
||||
- Google Chrome for Testing 134.0.6998.88
|
||||
- ChromeDriver 134.0.6998.88
|
||||
- Microsoft Edge 134.0.3124.68
|
||||
- Microsoft Edge WebDriver 134.0.3124.68
|
||||
- Mozilla Firefox 136.0.1
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.41.0
|
||||
- Selenium server 4.29.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -109,57 +107,56 @@
|
||||
| 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.442+6 | JAVA_HOME_8_X64 |
|
||||
| 11.0.26+4 | JAVA_HOME_11_X64 |
|
||||
| 17.0.14+7 | JAVA_HOME_17_X64 |
|
||||
| 21.0.6+7.0 (default) | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
- 3.1.6
|
||||
- 3.2.7
|
||||
- 3.3.7
|
||||
- 3.4.2
|
||||
|
||||
#### Python
|
||||
- 3.10.20
|
||||
- 3.9.21
|
||||
- 3.10.16
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.12.9
|
||||
- 3.13.2
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.7
|
||||
- 20.19.0
|
||||
- 22.14.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.7
|
||||
- 1.24.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.85.0
|
||||
- Rust 1.85.0
|
||||
- Rustdoc 1.85.0
|
||||
- Rustup 1.28.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.85
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.7
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.23.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 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 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 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.4.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36 (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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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.2.2-55879/ParallelsDesktop-20.2.2-55879.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
@@ -1,158 +1,152 @@
|
||||
| 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 15 (Sequoia) will be generally available in GitHub Actions and Azure DevOps from March, 25](https://github.com/actions/runner-images/issues/11486) |
|
||||
***
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.8.5 (23J423)
|
||||
- OS Version: macOS 14.7.4 (23H420)
|
||||
- Kernel Version: Darwin 23.6.0
|
||||
- Image Version: 20260420.0004.1
|
||||
- Image Version: 20250317.1117
|
||||
|
||||
## 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.407, 9.0.102, 9.0.201
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_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
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- 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.0
|
||||
- Perl 5.40.1
|
||||
- Python3 3.13.2
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.6
|
||||
- Carthage 0.40.0
|
||||
- CocoaPods 1.16.2
|
||||
- Homebrew 5.1.7
|
||||
- Homebrew 4.4.24
|
||||
- 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.0 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.6
|
||||
- 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.9
|
||||
- Gradle 8.13
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.0.2
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.28.0
|
||||
- bazel 8.1.1
|
||||
- bazelisk 1.25.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.68.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.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- Packer 1.12.0
|
||||
- pkgconf 2.4.3
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- 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.24.24
|
||||
- AWS SAM CLI 1.135.0
|
||||
- AWS Session Manager CLI 1.2.707.0
|
||||
- Azure CLI 2.70.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.33.93
|
||||
- Cmake 3.31.6
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.227.0
|
||||
- SwiftFormat 0.55.5
|
||||
- Xcbeautify 2.27.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.2
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### 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
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.41.0
|
||||
- Safari 18.3.1 (19620.2.4.111.9)
|
||||
- SafariDriver 18.3.1 (19620.2.4.111.9)
|
||||
- Google Chrome 134.0.6998.89
|
||||
- Google Chrome for Testing 134.0.6998.88
|
||||
- ChromeDriver 134.0.6998.88
|
||||
- Selenium server 4.29.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### 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.26+4 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.14+7 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.6+7.0 (default) | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.2
|
||||
- 3.1.6
|
||||
- 3.2.7
|
||||
- 3.3.7
|
||||
- 3.4.2
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.12.9
|
||||
- 3.13.2
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.7
|
||||
- 20.19.0
|
||||
- 22.14.0
|
||||
|
||||
#### Go
|
||||
- 1.21.13
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.23.7
|
||||
- 1.24.1
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.85.0
|
||||
- Rust 1.85.0
|
||||
- Rustdoc 1.85.0
|
||||
- Rustup 1.28.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.85
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.7
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.23.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path | Symlinks |
|
||||
@@ -228,56 +222,54 @@
|
||||
| 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 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 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 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 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) |
|
||||
| visionOS 1.0 | Apple Vision Pro |
|
||||
| visionOS 1.1 | Apple Vision Pro |
|
||||
| visionOS 1.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.4.9 |
|
||||
| Android SDK Build-tools | 36.0.0<br>35.0.0 35.0.1<br>34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-36 (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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264 (default)<br>27.2.12479018 |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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
|
||||
|
||||
|
||||
+172
-233
@@ -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) |
|
||||
| [[macOS] Ruby version 3.0 will be removed from the images on Feb 10, 2025 and 3.3 will be set as default. ](https://github.com/actions/runner-images/issues/11345) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and by 01/13/25 for ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.5 (24G617)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20260421.0014.1
|
||||
- OS Version: macOS 15.2 (24C101)
|
||||
- Kernel Version: Darwin 24.2.0
|
||||
- Image Version: 20250120.591
|
||||
|
||||
## 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.405, 9.0.102
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_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 22.22.2
|
||||
- Perl 5.42.2
|
||||
- PHP 8.5.5
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.1.0-release-394
|
||||
- Node.js 22.13.0
|
||||
- Perl 5.40.1
|
||||
- PHP 8.4.3
|
||||
- Python3 3.13.1
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.3
|
||||
- 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.4
|
||||
- Homebrew 4.4.16
|
||||
- NPM 10.9.2
|
||||
- Pip3 24.3.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.3
|
||||
- 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.9
|
||||
- Gradle 8.12
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.27.1
|
||||
- bazel 8.0.1
|
||||
- bazelisk 1.25.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.11.1
|
||||
- Git 2.48.1
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.65.0
|
||||
- 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.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- zstd 1.5.6
|
||||
|
||||
### 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
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
- AWS CLI 2.23.2
|
||||
- AWS SAM CLI 1.132.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.68.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.32.4
|
||||
- Cmake 3.31.4
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.226.0
|
||||
- SwiftFormat 0.55.4
|
||||
- Xcbeautify 2.17.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.63.2
|
||||
- SwiftLint 0.58.2
|
||||
|
||||
### 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
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.0
|
||||
- Safari 18.2 (20620.1.16.11.8)
|
||||
- SafariDriver 18.2 (20620.1.16.11.8)
|
||||
- Google Chrome 132.0.6834.84
|
||||
- Google Chrome for Testing 132.0.6834.83
|
||||
- ChromeDriver 132.0.6834.83
|
||||
- Microsoft Edge 132.0.2957.115
|
||||
- Microsoft Edge WebDriver 132.0.2957.115
|
||||
- Mozilla Firefox 134.0.1
|
||||
- geckodriver 0.35.0
|
||||
- Selenium server 4.27.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -109,202 +108,142 @@
|
||||
### 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 |
|
||||
| 11.0.25+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_X64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.7
|
||||
- 3.4.1
|
||||
|
||||
#### Python
|
||||
- 3.10.20
|
||||
- 3.9.21
|
||||
- 3.10.16
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.12.8
|
||||
- 3.13.1
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.13.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.21.13
|
||||
- 1.22.10
|
||||
- 1.23.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.84.0
|
||||
- Rust 1.84.0
|
||||
- Rustdoc 1.84.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.84
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.23.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 |
|
||||
| -------------- | -------- | ---------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| 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 |
|
||||
| 15.4 | 15F31d | /Applications/Xcode_15.4.app | /Applications/Xcode_15.4.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 14.5 | macosx14.5 | 15.4 |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| macOS 15.2 | macosx15.2 | 16.2 |
|
||||
| iOS 17.5 | iphoneos17.5 | 15.4 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
| Simulator - iOS 17.5 | iphonesimulator17.5 | 15.4 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
| tvOS 17.5 | appletvos17.5 | 15.4 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
| Simulator - tvOS 17.5 | appletvsimulator17.5 | 15.4 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
| watchOS 10.5 | watchos10.5 | 15.4 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
| Simulator - watchOS 10.5 | watchsimulator10.5 | 15.4 |
|
||||
| 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 - visionOS 1.2 | xrsimulator1.2 | 15.4 |
|
||||
| visionOS 1.2 | xros1.2 | 15.4 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
| DriverKit 23.5 | driverkit23.5 | 15.4 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### 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 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.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) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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) |
|
||||
| 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.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) |
|
||||
|
||||
### 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.3.11 |
|
||||
| Android SDK Build-tools | 35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | 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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.2.12479018 (default) |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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 |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
If you want to use Parallels Desktop you should download a package from URL stored in
|
||||
PARALLELS_DMG_URL environment variable. A system extension is allowed for this version.
|
||||
```
|
||||
|
||||
|
||||
@@ -1,298 +1,245 @@
|
||||
| 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] Ruby version 3.0 will be removed from the images on Feb 10, 2025 and 3.3 will be set as default. ](https://github.com/actions/runner-images/issues/11345) |
|
||||
| [[macOS] The macOS 12 Actions runner image will begin deprecation on 10/7/24 and will be fully unsupported by 12/3/24 for GitHub and by 01/13/25 for ADO](https://github.com/actions/runner-images/issues/10721) |
|
||||
| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) |
|
||||
***
|
||||
# macOS 15
|
||||
- OS Version: macOS 15.7.4 (24G517)
|
||||
- Kernel Version: Darwin 24.6.0
|
||||
- Image Version: 20260421.0007.1
|
||||
- OS Version: macOS 15.2 (24C101)
|
||||
- Kernel Version: Darwin 24.2.0
|
||||
- Image Version: 20250120.596
|
||||
|
||||
## 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.405, 9.0.102
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 17.0.0
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 18.1.8 - available on `$(brew --prefix llvm@18)/bin/clang`
|
||||
- GCC 13 (Homebrew GCC 13.4.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.3.0) - available by `gcc-14` alias
|
||||
- GCC 15 (Homebrew GCC 15.2.0_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 22.22.2
|
||||
- Perl 5.42.2
|
||||
- Python3 3.14.4
|
||||
- Ruby 3.3.11
|
||||
- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias
|
||||
- GCC 14 (Homebrew GCC 14.2.0_1) - available by `gcc-14` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias
|
||||
- GNU Fortran 14 (Homebrew GCC 14.2.0_1) - available by `gfortran-14` alias
|
||||
- Kotlin 2.1.0-release-394
|
||||
- Node.js 22.13.0
|
||||
- Perl 5.40.1
|
||||
- Python3 3.13.1
|
||||
- Ruby 3.3.7
|
||||
|
||||
### Package Management
|
||||
- Bundler 4.0.10
|
||||
- Bundler 2.6.3
|
||||
- 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.4.16
|
||||
- NPM 10.9.2
|
||||
- Pip3 24.3.1 (python 3.13)
|
||||
- Pipx 1.7.1
|
||||
- RubyGems 3.6.3
|
||||
- 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.9
|
||||
- Gradle 8.12
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.32.2
|
||||
- bazel 9.1.0
|
||||
- bazelisk 1.28.1
|
||||
- azcopy 10.27.1
|
||||
- bazel 8.0.1
|
||||
- bazelisk 1.25.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.48.1
|
||||
- Git LFS 3.6.1
|
||||
- GitHub CLI 2.65.0
|
||||
- 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.7
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.15.1
|
||||
- pkgconf 2.5.1
|
||||
- Unxip 3.3
|
||||
- yq 4.53.2
|
||||
- zstd 1.5.7
|
||||
- Ninja 1.13.2
|
||||
- Packer 1.11.2
|
||||
- pkgconf 2.3.0
|
||||
- Unxip 3.1
|
||||
- yq 4.45.1
|
||||
- zstd 1.5.6
|
||||
|
||||
### 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
|
||||
- Xcode Command Line Tools 16.4.0.0.1.1747106510
|
||||
- Xcodes 1.6.2
|
||||
- AWS CLI 2.23.2
|
||||
- AWS SAM CLI 1.132.0
|
||||
- AWS Session Manager CLI 1.2.694.0
|
||||
- Azure CLI 2.68.0
|
||||
- Azure CLI (azure-devops) 1.0.1
|
||||
- Bicep CLI 0.32.4
|
||||
- Cmake 3.31.4
|
||||
- CodeQL Action Bundle 2.20.1
|
||||
- Fastlane 2.226.0
|
||||
- SwiftFormat 0.55.4
|
||||
- Xcbeautify 2.17.0
|
||||
- Xcode Command Line Tools 16.2.0.0.1.1733547573
|
||||
- Xcodes 1.6.0
|
||||
|
||||
### 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
|
||||
- geckodriver 0.36.0
|
||||
- Selenium server 4.43.0
|
||||
- Safari 18.2 (20620.1.16.11.8)
|
||||
- SafariDriver 18.2 (20620.1.16.11.8)
|
||||
- Google Chrome 132.0.6834.84
|
||||
- Google Chrome for Testing 132.0.6834.83
|
||||
- ChromeDriver 132.0.6834.83
|
||||
- Selenium server 4.27.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | /usr/local/share/edge_driver |
|
||||
| GECKOWEBDRIVER | /opt/homebrew/opt/geckodriver/bin |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### 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 |
|
||||
| 11.0.25+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.13+11 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.5+11.0 (default) | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Ruby
|
||||
- 3.2.11
|
||||
- 3.3.11
|
||||
- 3.4.9
|
||||
- 4.0.3
|
||||
- 3.1.6
|
||||
- 3.2.6
|
||||
- 3.3.7
|
||||
- 3.4.1
|
||||
|
||||
#### Python
|
||||
- 3.11.9
|
||||
- 3.12.10
|
||||
- 3.13.13
|
||||
- 3.14.4
|
||||
- 3.12.8
|
||||
- 3.13.1
|
||||
|
||||
#### Node.js
|
||||
- 20.20.2
|
||||
- 22.22.2
|
||||
- 24.15.0
|
||||
- 18.20.5
|
||||
- 20.18.1
|
||||
- 22.13.0
|
||||
|
||||
#### Go
|
||||
- 1.22.12
|
||||
- 1.23.12
|
||||
- 1.24.13
|
||||
- 1.25.9
|
||||
- 1.21.13
|
||||
- 1.22.10
|
||||
- 1.23.4
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.95.0
|
||||
- Rust 1.95.0
|
||||
- Rustdoc 1.95.0
|
||||
- Rustup 1.29.0
|
||||
- Cargo 1.84.0
|
||||
- Rust 1.84.0
|
||||
- Rustdoc 1.84.0
|
||||
- Rustup 1.27.1
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.95
|
||||
- Rustfmt 1.9.0-stable
|
||||
- Clippy 0.1.84
|
||||
- Rustfmt 1.8.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.4.14
|
||||
- PowerShell 7.4.6
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 14.6.0
|
||||
- Az: 12.4.0
|
||||
- Pester: 5.7.1
|
||||
- PSScriptAnalyzer: 1.25.0
|
||||
- PSScriptAnalyzer: 1.23.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 |
|
||||
| -------------- | -------- | ---------------------------- | ----------------------------------------------------------------------------------------- |
|
||||
| 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 |
|
||||
| 15.4 | 15F31d | /Applications/Xcode_15.4.app | /Applications/Xcode_15.4.0.app |
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------- | -------------------- | ------------- |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------ | -------------------- | ------------- |
|
||||
| macOS 14.5 | macosx14.5 | 15.4 |
|
||||
| macOS 15.0 | macosx15.0 | 16.0 |
|
||||
| macOS 15.1 | macosx15.1 | 16.1 |
|
||||
| macOS 15.2 | macosx15.2 | 16.2 |
|
||||
| iOS 17.5 | iphoneos17.5 | 15.4 |
|
||||
| iOS 18.0 | iphoneos18.0 | 16.0 |
|
||||
| iOS 18.1 | iphoneos18.1 | 16.1 |
|
||||
| iOS 18.2 | iphoneos18.2 | 16.2 |
|
||||
| Simulator - iOS 17.5 | iphonesimulator17.5 | 15.4 |
|
||||
| Simulator - iOS 18.0 | iphonesimulator18.0 | 16.0 |
|
||||
| Simulator - iOS 18.1 | iphonesimulator18.1 | 16.1 |
|
||||
| Simulator - iOS 18.2 | iphonesimulator18.2 | 16.2 |
|
||||
| tvOS 17.5 | appletvos17.5 | 15.4 |
|
||||
| tvOS 18.0 | appletvos18.0 | 16.0 |
|
||||
| tvOS 18.1 | appletvos18.1 | 16.1 |
|
||||
| tvOS 18.2 | appletvos18.2 | 16.2 |
|
||||
| Simulator - tvOS 17.5 | appletvsimulator17.5 | 15.4 |
|
||||
| Simulator - tvOS 18.0 | appletvsimulator18.0 | 16.0 |
|
||||
| Simulator - tvOS 18.1 | appletvsimulator18.1 | 16.1 |
|
||||
| Simulator - tvOS 18.2 | appletvsimulator18.2 | 16.2 |
|
||||
| watchOS 10.5 | watchos10.5 | 15.4 |
|
||||
| watchOS 11.0 | watchos11.0 | 16.0 |
|
||||
| watchOS 11.1 | watchos11.1 | 16.1 |
|
||||
| watchOS 11.2 | watchos11.2 | 16.2 |
|
||||
| Simulator - watchOS 10.5 | watchsimulator10.5 | 15.4 |
|
||||
| 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 - visionOS 1.2 | xrsimulator1.2 | 15.4 |
|
||||
| visionOS 1.2 | xros1.2 | 15.4 |
|
||||
| visionOS 2.0 | xros2.0 | 16.0 |
|
||||
| Simulator - visionOS 2.0 | xrsimulator2.0 | 16.0 |
|
||||
| visionOS 2.1 | xros2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.1 | xrsimulator2.1 | 16.1 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
| visionOS 2.2 | xros2.2 | 16.2 |
|
||||
| Simulator - visionOS 2.2 | xrsimulator2.2 | 16.2 |
|
||||
| DriverKit 23.5 | driverkit23.5 | 15.4 |
|
||||
| DriverKit 24.0 | driverkit24.0 | 16.0 |
|
||||
| DriverKit 24.1 | driverkit24.1 | 16.1 |
|
||||
| DriverKit 24.2 | driverkit24.2 | 16.2 |
|
||||
|
||||
#### 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 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.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) |
|
||||
| tvOS 17.5 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| 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) |
|
||||
| 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.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) |
|
||||
| visionOS 1.2 | Apple Vision Pro |
|
||||
| visionOS 2.0 | Apple Vision Pro |
|
||||
| visionOS 2.1 | Apple Vision Pro |
|
||||
| visionOS 2.2 | 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.3.11 |
|
||||
| Android SDK Build-tools | 35.0.0 35.0.1 |
|
||||
| Android SDK Platforms | 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.0 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 26.3.11579264<br>27.2.12479018 (default) |
|
||||
|
||||
#### 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/27.2.12479018 |
|
||||
| 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
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ chmod +x /usr/local/bin/change_hostname.sh
|
||||
|
||||
sudo tee -a /Library/LaunchDaemons/change_hostname.plist > /dev/null <<\EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
|
||||
@@ -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
|
||||
[
|
||||
|
||||
@@ -6,112 +6,42 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Set solid color wallpaper"
|
||||
osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/System/Library/Desktop Pictures/Solid Colors/Black.png"'
|
||||
|
||||
echo "Close all finder windows because they can interfere with UI tests"
|
||||
# Close all finder windows because they can interfere with UI tests
|
||||
close_finder_window
|
||||
|
||||
echo "Disable Handoff and Continuity"
|
||||
defaults write com.apple.coreservices.useractivityd ActivityReceivingEnabled -bool false
|
||||
defaults write com.apple.coreservices.useractivityd ActivityAdvertisingAllowed -bool false
|
||||
|
||||
echo "Disable graphic effects in System"
|
||||
defaults write com.apple.universalaccess reduceMotion -bool true
|
||||
defaults write com.apple.universalaccess reduceTransparency -bool true
|
||||
|
||||
echo "Disable analytics daemon (requires SIP to be disabled)"
|
||||
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.SubmitDiagInfo.plist
|
||||
|
||||
echo "Disable notification center agent"
|
||||
launchctl unload -w /System/Library/LaunchAgents/com.apple.notificationcenterui.plist
|
||||
|
||||
echo "Disable Time Machine and it's daemon"
|
||||
sudo tmutil disable
|
||||
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
|
||||
# Put documentation to $HOME root
|
||||
cp $HOME/image-generation/output/software-report/systeminfo.* $HOME/
|
||||
|
||||
echo "Put documentation to $HOME root"
|
||||
cp $HOME/image-generation/output/software-report.* $HOME/
|
||||
|
||||
echo "Remove fastlane cached cookie"
|
||||
# Remove fastlane cached cookie
|
||||
rm -rf ~/.fastlane
|
||||
|
||||
# Clean up npm cache which collected during image-generation
|
||||
# we have to do that here because `npm install` is run in a few different places during image-generation
|
||||
echo "Clean up npm cache"
|
||||
npm cache clean --force
|
||||
|
||||
# Clean yarn cache
|
||||
yarn cache clean
|
||||
|
||||
echo "Clean up temporary directories"
|
||||
# Clean up temporary directories
|
||||
sudo rm -rf ~/utils /tmp/*
|
||||
|
||||
# Erase all indexes and wait until the rebuilding process ends,
|
||||
# for now there is no clear way to get status of indexing process on macOS, it takes around 3-6 minutes to accomplish
|
||||
echo "Erase all MDS indexes and wait until the rebuilding process ends"
|
||||
sudo mdutil -E / > /dev/null
|
||||
# for now there is no way to get status of indexing process, it takes around 3 minutes to accomplish
|
||||
sudo mdutil -E /
|
||||
sudo log stream | grep -q -E 'mds.*Released.*BackgroundTask' || true
|
||||
echo "Indexing completed"
|
||||
|
||||
echo "Wait for 6 minutes or until the indexing process end signal is found in logs"
|
||||
for _ in {1..12}; do
|
||||
sleep 30
|
||||
result=$(sudo log show --last 1m | grep -E 'mds.*Released.*BackgroundTask' || true)
|
||||
if [[ -n "$result" ]]; then
|
||||
echo "Sign of indexing completion found:"
|
||||
echo "$result"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Check if the indexing process or other CPU intensive process (5% and more) is still running"
|
||||
|
||||
cool=0
|
||||
while true; do
|
||||
usage=$(top -l 2 | grep "CPU usage" | awk '{print int($3)}' | tr -d '%' | tail -n 1)
|
||||
echo "Current CPU usage: ${usage}%"
|
||||
if [ $usage -lt 5 ]; then
|
||||
cool=$((cool + 1))
|
||||
else
|
||||
ps -arcwwwxo ppid,pid,%cpu,%mem,time,command | head -n 2 || true
|
||||
cool=0
|
||||
fi
|
||||
|
||||
echo "Feeling cool for $cool intervals"
|
||||
|
||||
if [ $cool -gt 5 ]; then
|
||||
echo "Cooled down, exiting..."
|
||||
break
|
||||
fi
|
||||
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Delete symlink for tests running"
|
||||
# delete symlink for tests running
|
||||
sudo rm -f /usr/local/bin/invoke_tests
|
||||
|
||||
echo "Clean Homebrew downloads"
|
||||
# Clean Homebrew downloads
|
||||
sudo rm -rf /Users/$USER/Library/Caches/Homebrew/downloads/*
|
||||
|
||||
# Uninstall expect used in configure-machine.sh
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -6,43 +6,27 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Retrieve the latest major version of the CodeQL Action to use in the base URL for downloading the bundle.
|
||||
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
|
||||
releases=$(curl "${authString[@]}" -s "https://api.github.com/repos/github/codeql-action/releases")
|
||||
|
||||
# Get the release tags starting with v[0-9] and sort them in descending order, then parse the first one to get the major version.
|
||||
codeql_action_latest_major_version=$(echo "$releases" |
|
||||
jq -r '.[].tag_name' |
|
||||
grep -E '^v[0-9]' |
|
||||
sort -nr |
|
||||
head -n 1 |
|
||||
sed -E 's/^v([0-9]+).*/\1/')
|
||||
if [ -z "$codeql_action_latest_major_version" ]; then
|
||||
echo "Error: Unable to find the latest major version of the CodeQL Action."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Retrieve the CLI version of the latest CodeQL bundle.
|
||||
defaults_json_path=$(download_with_retry "https://raw.githubusercontent.com/github/codeql-action/v$codeql_action_latest_major_version/src/defaults.json")
|
||||
bundle_version=$(jq -r '.cliVersion' "$defaults_json_path")
|
||||
defaults_json_path=$(download_with_retry https://raw.githubusercontent.com/github/codeql-action/v2/src/defaults.json)
|
||||
bundle_version=$(jq -r '.cliVersion' $defaults_json_path)
|
||||
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"
|
||||
mkdir -p $codeql_toolcache_path
|
||||
|
||||
echo "Unpacking the downloaded CodeQL bundle archive..."
|
||||
tar -xzf "$archive_path" -C "$codeql_toolcache_path"
|
||||
tar -xzf $archive_path -C $codeql_toolcache_path
|
||||
|
||||
# Touch a file to indicate to the CodeQL Action that this bundle shipped with the toolcache. This is
|
||||
# to support overriding the CodeQL version specified in defaults.json on GitHub Enterprise.
|
||||
touch "$codeql_toolcache_path/pinned-version"
|
||||
touch $codeql_toolcache_path/pinned-version
|
||||
|
||||
# Touch a file to indicate to the toolcache that setting up CodeQL is complete.
|
||||
touch "$codeql_toolcache_path.complete"
|
||||
touch $codeql_toolcache_path.complete
|
||||
|
||||
invoke_tests "Common" "CodeQL Bundle"
|
||||
|
||||
@@ -15,9 +15,18 @@ 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"
|
||||
;;
|
||||
|
||||
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 +51,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 +86,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}"
|
||||
|
||||
@@ -47,7 +42,7 @@ sudo mkdir "/Library/Managed Preferences"
|
||||
|
||||
cat <<EOF | sudo tee "/Library/Managed Preferences/com.microsoft.EdgeUpdater.plist" > /dev/null
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>updatePolicies</key>
|
||||
|
||||
@@ -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"
|
||||
@@ -10,11 +10,18 @@ source ~/utils/utils.sh
|
||||
VCPKG_INSTALLATION_ROOT=/usr/local/share/vcpkg
|
||||
echo "export VCPKG_INSTALLATION_ROOT=${VCPKG_INSTALLATION_ROOT}" | tee -a ~/.bashrc
|
||||
|
||||
# workaround https://github.com/microsoft/vcpkg/issues/27786
|
||||
|
||||
mkdir -p /Users/runner/.vcpkg
|
||||
touch /Users/runner/.vcpkg/vcpkg.path.txt
|
||||
|
||||
# Install vcpkg
|
||||
sudo git clone https://github.com/Microsoft/vcpkg $VCPKG_INSTALLATION_ROOT
|
||||
sudo $VCPKG_INSTALLATION_ROOT/bootstrap-vcpkg.sh
|
||||
git clone https://github.com/Microsoft/vcpkg $VCPKG_INSTALLATION_ROOT
|
||||
$VCPKG_INSTALLATION_ROOT/bootstrap-vcpkg.sh
|
||||
$VCPKG_INSTALLATION_ROOT/vcpkg integrate install
|
||||
sudo chmod -R 0777 $VCPKG_INSTALLATION_ROOT
|
||||
chmod -R 0777 $VCPKG_INSTALLATION_ROOT
|
||||
ln -sf $VCPKG_INSTALLATION_ROOT/vcpkg /usr/local/bin
|
||||
|
||||
rm -rf /Users/runner/.vcpkg
|
||||
|
||||
invoke_tests "Common" "vcpkg"
|
||||
|
||||
@@ -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) -and (-not $os.IsSonoma) -and (-not $os.IsSequoia)) {
|
||||
$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,13 +9,18 @@ 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))
|
||||
[ToolVersionNode]::new("Mozilla Firefox", $(Get-FirefoxVersion))
|
||||
[ToolVersionNode]::new("geckodriver", $(Get-GeckodriverVersion))
|
||||
)
|
||||
}
|
||||
|
||||
$nodes += @(
|
||||
[ToolVersionNode]::new("Mozilla Firefox", $(Get-FirefoxVersion))
|
||||
[ToolVersionNode]::new("geckodriver", $(Get-GeckodriverVersion))
|
||||
[ToolVersionNode]::new("Selenium server", $(Get-SeleniumVersion))
|
||||
)
|
||||
|
||||
@@ -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 "sudo $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 "sudo $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 "sudo $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
|
||||
@@ -53,7 +53,7 @@ Describe "Edge" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Firefox" {
|
||||
Describe "Firefox" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64 -or $os.IsSequoiaArm64) {
|
||||
It "Firefox" {
|
||||
$firefoxLocation = "/Applications/Firefox.app/Contents/MacOS/firefox"
|
||||
$firefoxLocation | Should -Exist
|
||||
|
||||
@@ -33,7 +33,7 @@ Describe "GCC" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "vcpkg" {
|
||||
Describe "vcpkg" -Skip:($os.IsVenturaArm64 -or $os.IsSonoma -or $os.IsSequoia) {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,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"
|
||||
|
||||
+18
-15
@@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -205,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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -233,6 +236,7 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
@@ -245,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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -271,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-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" {
|
||||
+15
-23
@@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -204,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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -234,6 +237,7 @@ build {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-runner-package.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
@@ -241,13 +245,10 @@ build {
|
||||
"${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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -270,28 +271,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"
|
||||
}
|
||||
|
||||
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" {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
scripts = ["${path.root}/../scripts/build/configure-hostname.sh"]
|
||||
}
|
||||
}
|
||||
@@ -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",
|
||||
@@ -244,7 +245,6 @@ build {
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh",
|
||||
@@ -273,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-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",
|
||||
@@ -243,13 +244,10 @@ build {
|
||||
"${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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -272,28 +270,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-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" {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
scripts = ["${path.root}/../scripts/build/configure-hostname.sh"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
@@ -243,7 +244,6 @@ build {
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh",
|
||||
@@ -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-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",
|
||||
@@ -242,13 +243,10 @@ build {
|
||||
"${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,28 +269,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-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" {
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
scripts = ["${path.root}/../scripts/build/configure-hostname.sh"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
{
|
||||
"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.0"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "26",
|
||||
"versions": [
|
||||
"26", "27"
|
||||
]
|
||||
}
|
||||
},
|
||||
"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.21.*",
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.21.*",
|
||||
"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.0"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"default": "26",
|
||||
"versions": [
|
||||
"27", "28", "29"
|
||||
"26", "27"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -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.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -278,19 +260,19 @@
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.21.*",
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.21.*",
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -300,18 +282,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 +306,7 @@
|
||||
"version": "15"
|
||||
},
|
||||
"php": {
|
||||
"version": "8.5"
|
||||
"version": "8.4"
|
||||
},
|
||||
"pwsh": {
|
||||
"version": "7.4"
|
||||
|
||||
@@ -1,170 +1,84 @@
|
||||
{
|
||||
"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",
|
||||
"link": "16.3_beta_3",
|
||||
"version": "16.3.0-Beta.3+16E5129f",
|
||||
"symlinks": ["16.3"],
|
||||
"sha256": "5f709f7b418005c7c735d6f62076feb8fd9095f874f3d7c2d58a039ce9531348",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] }
|
||||
{ "iOS": ["18.0", "18.1", "18.2", "18.3.1", "22E5232a"] },
|
||||
{ "watchOS": ["11.0", "11.1", "11.2", "22T5244a"] },
|
||||
{ "tvOS": ["18.0", "18.1", "18.2", "22L5250a"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "26.1.1",
|
||||
"filename": "Xcode_26.1.1_Universal",
|
||||
"version": "26.1.1+17B100",
|
||||
"symlinks": ["26.1"],
|
||||
"sha256": "ed55d55fa28455c11a65e0809ba8fdf7d83fdeb268aabf9af7fcc1ee911543eb",
|
||||
"install_runtimes": "default"
|
||||
},
|
||||
{
|
||||
"link": "26.0.1",
|
||||
"filename": "Xcode_26.0.1_Universal",
|
||||
"version": "26.0.1+17A400",
|
||||
"symlinks": ["26.0"],
|
||||
"sha256": "9881c457068c86ac91e94cca2d7116dfd01cb7179c22b0863b63c7f3bb7e7695",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["default"] },
|
||||
{ "watchOS": ["skip"] },
|
||||
{ "tvOS": ["skip"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"link": "16.4",
|
||||
"filename": "Xcode_16.4",
|
||||
"version": "16.4.0+16F6",
|
||||
"sha256": "2dbf65ba28fb85b34e72c14c529a42d5c3189ab0f11fb29fdebd5f4ee6c87900",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["18.5", "18.6"] },
|
||||
{ "watchOS": ["11.5"] },
|
||||
{ "tvOS": ["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"],
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "15.4",
|
||||
"version": "15.4.0+15F31d",
|
||||
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
|
||||
"install_runtimes": "default"
|
||||
}
|
||||
]
|
||||
},
|
||||
"arm64":{
|
||||
"versions": [
|
||||
{
|
||||
"link": "26.3",
|
||||
"filename": "Xcode_26.3_Universal",
|
||||
"version": "26.3+17C529",
|
||||
"sha256": "cf87232e0419785170edcfa070b750f28808ec00b489ab540c08b7d197c79ae4",
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "26.2",
|
||||
"filename": "Xcode_26.2_Universal",
|
||||
"version": "26.2+17C52",
|
||||
"sha256": "8f29ab6a9ac6670d3cf53545ffdb1c317d11607fa8db38fc56d3391df7783fbd",
|
||||
"link": "16.3_beta_3",
|
||||
"version": "16.3.0-Beta.3+16E5129f",
|
||||
"symlinks": ["16.3"],
|
||||
"sha256": "5f709f7b418005c7c735d6f62076feb8fd9095f874f3d7c2d58a039ce9531348",
|
||||
"install_runtimes": [
|
||||
{ "iOS": ["26.2"] },
|
||||
{ "watchOS": ["default"] },
|
||||
{ "tvOS": ["default"] },
|
||||
{ "visionOS": ["default"] }
|
||||
{ "iOS": ["18.0", "18.1", "18.2", "18.3.1", "22E5232a"] },
|
||||
{ "watchOS": ["11.0", "11.1", "11.2", "22T5244a"] },
|
||||
{ "tvOS": ["18.0", "18.1", "18.2", "22L5250a"] },
|
||||
{ "visionOS": ["2.0", "2.1", "2.2", "2.3", "22O5215f"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"],
|
||||
"install_runtimes": "none"
|
||||
},
|
||||
{
|
||||
"link": "15.4",
|
||||
"version": "15.4.0+15F31d",
|
||||
"sha256": "82d3d61804ff3f4c7c82085e91dc701037ddaa770e542848b2477e22f4e8aa7a",
|
||||
"install_runtimes": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -172,11 +86,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 +103,12 @@
|
||||
],
|
||||
"addons": [],
|
||||
"additional_tools": [
|
||||
"cmake;3.31.5",
|
||||
"cmake;4.1.2"
|
||||
"cmake;3.31.0"
|
||||
],
|
||||
"ndk": {
|
||||
"default": "27",
|
||||
"versions": [
|
||||
"27", "28", "29"
|
||||
"26", "27"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -203,7 +116,7 @@
|
||||
{
|
||||
"name": "Az",
|
||||
"versions": [
|
||||
"14.6.0"
|
||||
"12.4.0"
|
||||
]
|
||||
},
|
||||
{ "name": "Pester" },
|
||||
@@ -228,7 +141,6 @@
|
||||
"perl",
|
||||
"pkgconf",
|
||||
"swiftformat",
|
||||
"tcl-tk@8",
|
||||
"zstd",
|
||||
"ninja",
|
||||
"gmp",
|
||||
@@ -243,9 +155,9 @@
|
||||
},
|
||||
"gcc": {
|
||||
"versions": [
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15"
|
||||
"14"
|
||||
]
|
||||
},
|
||||
"dotnet": {
|
||||
@@ -253,15 +165,13 @@
|
||||
"x64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
"9.0"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"8.0",
|
||||
"9.0",
|
||||
"10.0"
|
||||
"9.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -282,19 +192,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 +215,16 @@
|
||||
"arch": {
|
||||
"x64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"versions": [
|
||||
"18.*",
|
||||
"20.*",
|
||||
"22.*",
|
||||
"24.*"
|
||||
"22.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -328,19 +237,19 @@
|
||||
"x64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_X64",
|
||||
"versions": [
|
||||
"1.21.*",
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
},
|
||||
"arm64": {
|
||||
"variable_template" : "GOROOT_{0}_{1}_ARM64",
|
||||
"versions": [
|
||||
"1.21.*",
|
||||
"1.22.*",
|
||||
"1.23.*",
|
||||
"1.24.*",
|
||||
"1.25.*"
|
||||
"1.24.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -350,18 +259,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 +283,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
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user