Compare commits
147 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd9ae9f1b5 | |||
| 9813840059 | |||
| 395174881d | |||
| ca82d0a325 | |||
| deba4d6cd5 | |||
| 1812c0ce71 | |||
| 61a8703bd1 | |||
| b9da7c8a76 | |||
| b33a106fb9 | |||
| 8a4dc5b0f6 | |||
| 7535fb59ff | |||
| 0202f4b94c | |||
| cda60174f7 | |||
| e579fdb9e6 | |||
| 13d5100df5 | |||
| d84718d23e | |||
| 0390d98adc | |||
| e844facbb9 | |||
| fb980e9751 | |||
| 04da57c694 | |||
| 68d16ce43c | |||
| 213dba8dd6 | |||
| bd5782ca77 | |||
| 0b5f4562aa | |||
| b99ee7f44e | |||
| 3151c92d25 | |||
| 5d5f63b19a | |||
| 82095c6197 | |||
| 33261492c5 | |||
| 3387580469 | |||
| b8d3d784e4 | |||
| a8d9540421 | |||
| be3dd8b0dd | |||
| ee179c70f2 | |||
| 03c4d84bba | |||
| 36b3a6c458 | |||
| 5a9870800d | |||
| 218c157acc | |||
| 9547a10a19 | |||
| 6f1fa8953f | |||
| 37a171e44d | |||
| 5418817c5f | |||
| 2d19e2799a | |||
| 52777b1081 | |||
| 14e41b1b5b | |||
| 3243ea36ef | |||
| 6308849b25 | |||
| 8f1339b65b | |||
| 47e2999afb | |||
| 74ed9d7d83 | |||
| 83c984cdd9 | |||
| 17b9f1e582 | |||
| 237618d14f | |||
| 8d5da63ac4 | |||
| 0b56eac4f1 | |||
| 022efa3751 | |||
| 96659c7d44 | |||
| 07fa737c4c | |||
| 4637c23381 | |||
| a9c5653066 | |||
| a6643f8ce6 | |||
| 807eb76cfc | |||
| ba3718b5d8 | |||
| d622d2bc2e | |||
| cbc79f8a0c | |||
| 097e28c9d7 | |||
| 17d89dbd74 | |||
| 299257c4bc | |||
| 9eea2470fb | |||
| 55a6d9d687 | |||
| 6c52c5a744 | |||
| 10cbb27509 | |||
| 8943e98be1 | |||
| 76ad0eb3d6 | |||
| 192a94d178 | |||
| f046bcaec3 | |||
| c40e9d7d53 | |||
| 4d310f0a59 | |||
| 5ee9ae1e60 | |||
| ba2e955e0b | |||
| 2a7ca2e6a2 | |||
| ebef5f5fee | |||
| cb77fa2a64 | |||
| b3ae9702f7 | |||
| b6b0130a7d | |||
| b56952d51e | |||
| 17d0f979ab | |||
| b4635a0ab9 | |||
| d5d2dd7704 | |||
| a89e382279 | |||
| 10ddf030ed | |||
| 4d5381bd21 | |||
| c40faf56bf | |||
| ec4e51233f | |||
| 5a6e215859 | |||
| 5bdda2e8c2 | |||
| 4b8f0f965c | |||
| 4960fde8f7 | |||
| 9da2ec6b06 | |||
| 83fbf5a752 | |||
| f36abbb92b | |||
| a9b737bac5 | |||
| 20d2e9821f | |||
| 266f9413d3 | |||
| 1658c2e905 | |||
| e16b5524ff | |||
| 34b6b3172f | |||
| e9057a22fc | |||
| 62aeae3a20 | |||
| 62a46d0fd8 | |||
| 503ae89818 | |||
| d16bc5f120 | |||
| 694536d87f | |||
| 08d10be70d | |||
| 50c8126f76 | |||
| c46c9c7f7d | |||
| e969572ffb | |||
| ed3d2204db | |||
| 43e3d8bfc6 | |||
| dec20a5272 | |||
| 087fb382a8 | |||
| 6b0f6eb184 | |||
| 28be760bba | |||
| 522c8fb680 | |||
| 045b46c8c1 | |||
| 0298168e00 | |||
| 1f11cd7e17 | |||
| 50f736491f | |||
| 5d6e226c1d | |||
| 7fe17c7614 | |||
| 1cb43238b5 | |||
| 2633fdfcc4 | |||
| 5e4039478f | |||
| 9e49d08492 | |||
| 62536f12ed | |||
| eed37c2c66 | |||
| cd286f70f7 | |||
| 1921245719 | |||
| 3945d6e7dc | |||
| dbb10c67ba | |||
| 2179765026 | |||
| d631f76f8b | |||
| e6a69f4bd1 | |||
| 9f3cf00bb3 | |||
| 3f2b0e2afc | |||
| a5519ebed0 | |||
| ea64263b41 |
@@ -41,6 +41,9 @@ body:
|
||||
- label: macOS 11
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
|
||||
@@ -24,6 +24,9 @@ body:
|
||||
- label: macOS 11
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
|
||||
@@ -62,6 +62,9 @@ body:
|
||||
- label: macOS 11
|
||||
- label: macOS 12
|
||||
- label: macOS 13
|
||||
- label: macOS 13 Arm64
|
||||
- label: macOS 14
|
||||
- label: macOS 14 Arm64
|
||||
- label: Windows Server 2019
|
||||
- label: Windows Server 2022
|
||||
- type: textarea
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
check_status: ${{ steps.check.outputs.status }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check release
|
||||
- name: Check release for ${{ github.event.client_payload.ReleaseBranchName }}
|
||||
id: check
|
||||
shell: pwsh
|
||||
run: |
|
||||
@@ -55,10 +55,10 @@ jobs:
|
||||
}
|
||||
- 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 D:/syft
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b D:/syft v0.100.0
|
||||
- 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
|
||||
run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin v0.100.0
|
||||
#Running section.
|
||||
- name: Run SYFT on Windows
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023 GitHub
|
||||
Copyright (c) 2024 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
|
||||
|
||||
@@ -19,15 +19,18 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
|
||||
## Available Images
|
||||
|
||||
| Image | YAML Label | Included Software | Rollout Progress of Latest Image Release |
|
||||
| --------------------|---------------------|--------------------|---------------------|
|
||||
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | [ubuntu-22.04] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=ubuntu22&redirect=1)
|
||||
| Ubuntu 20.04 | `ubuntu-20.04` | [ubuntu-20.04] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=ubuntu20&redirect=1)
|
||||
| macOS 13 [beta] | `macos-13` or `macos-13-xl`| [macOS-13] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-13&redirect=1)
|
||||
| macOS 12 | `macos-latest`, `macos-latest-xl`, `macos-12`, or `macos-12-xl`| [macOS-12] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-12&redirect=1)
|
||||
| macOS 11 | `macos-11`| [macOS-11] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=macos-11&redirect=1)
|
||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=windows-2022&redirect=1) |
|
||||
| Windows Server 2019 | `windows-2019` | [windows-2019] | [](https://gh-runnerimagesdeploymentstatus.azurewebsites.net/api/status?imageName=windows-2019&redirect=1)
|
||||
| Image | YAML Label | Included Software |
|
||||
| --------------------|---------------------|--------------------|
|
||||
| Ubuntu 22.04 | `ubuntu-latest` or `ubuntu-22.04` | [ubuntu-22.04] |
|
||||
| Ubuntu 20.04 | `ubuntu-20.04` | [ubuntu-20.04] |
|
||||
| macOS 14 [beta] | `macos-14-large`| [macOS-14] |
|
||||
| macOS 14 Arm64 [beta] | `macos-14` or `macos-14-xlarge`| [macOS-14-arm64] |
|
||||
| macOS 13 | `macos-13`, `macos-13-large` or `macos-latest-large` | [macOS-13] |
|
||||
| macOS 13 Arm64 | `macos-13-xlarge` | [macOS-13-arm64] |
|
||||
| macOS 12 | `macos-latest`,`macos-12` or`macos-12-large`| [macOS-12] |
|
||||
| macOS 11 [deprecated] | `macos-11`| [macOS-11] |
|
||||
| Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] |
|
||||
| Windows Server 2019 | `windows-2019` | [windows-2019] |
|
||||
|
||||
### Label scheme
|
||||
|
||||
@@ -41,6 +44,9 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat
|
||||
[macOS-11]: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md
|
||||
[macOS-12]: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-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
|
||||
[self-hosted runners]: https://help.github.com/en/actions/hosting-your-own-runners
|
||||
|
||||
## Announcements
|
||||
@@ -199,3 +205,9 @@ For some tools, we always install the latest at the time of the deployment; for
|
||||
<summary><b><i>How do I request that a new tool be pre-installed on the image?</b></i></summary>
|
||||
Please create an issue and get an approval from us to add this tool to the image before creating the pull request.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b><i>What branch should I use to build custom image?</b></i></summary>
|
||||
We strongly encourage customers to build their own images using the main branch.
|
||||
This repository contains multiple branches and releases that serve as document milestones to reflect what software is installed in the images at certain point of time. Current builds are not idempotent and if one tries to build a runner image using the specific tag it is not guaranteed that the build will succeed.
|
||||
</details>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
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 JSON or HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
Each image is configured by a HCL2 Packer template that specifies where to build the image (Azure, in this case),
|
||||
and what steps to run to install software and prepare the disk.
|
||||
|
||||
The Packer process initializes a connection to the Azure subscription using Azure CLI and creates temporary resources
|
||||
@@ -217,7 +217,7 @@ Where:
|
||||
- `InstallPassword` - password for the user used to install software (Windows only);
|
||||
- `Location` - location where resources will be created (e.g., "East US");
|
||||
- `ImageName` and `ImageResourceGroupName` - name of the resource group where the managed image will be stored;
|
||||
- `TemplatePath` - path to the Packer template file (e.g., "images/windows/templates/windows-2022.json").
|
||||
- `TemplatePath` - path to the Packer template file (e.g., "images/windows/templates/windows-2022.pkr.hcl").
|
||||
|
||||
### Required variables
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ Log into the Azure Portal. Find that resource group under `Resource groups`. Y
|
||||
## Step 3: Connect to the VM
|
||||
Select the VM in the resource group. Click `Connect:`
|
||||
|
||||
This will download an RDP file. Open that and enter the credentials found in the JSON file you pass to `packer build`:
|
||||
This will download an RDP file. Open that and enter the credentials found in the HCL2 file you pass to `packer build`:
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ Function CreateAzureVMFromPackerTemplate {
|
||||
The location where the Azure virtual machine will be provisioned. Example: "eastus"
|
||||
|
||||
.EXAMPLE
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {YourSubscriptionId} -ResourceGroupName {ResourceGroupName} -TemplateFile "C:\BuildVmImages\temporaryTemplate.json" -VirtualMachineName "testvm1" -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
CreateAzureVMFromPackerTemplate -SubscriptionId {SubscriptionId} -ResourceGroupName {ResourceGroupName} -VirtualMachineName "testvm1" -ManagedImageName {ManagedImageName} -AdminUsername "shady1" -AdminPassword "SomeSecurePassword1" -AzureLocation "eastus"
|
||||
#>
|
||||
param (
|
||||
[Parameter(Mandatory = $True)]
|
||||
|
||||
@@ -19,13 +19,13 @@ Function Get-PackerTemplatePath {
|
||||
switch ($ImageType) {
|
||||
# Note: Double Join-Path is required to support PowerShell 5.1
|
||||
([ImageType]::Windows2019) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2019.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2019.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Windows2022) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2022.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "windows" "templates") "windows-2022.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2004) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-20.04.json"
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-20.04.pkr.hcl"
|
||||
}
|
||||
([ImageType]::Ubuntu2204) {
|
||||
$relativeTemplatePath = Join-Path (Join-Path "ubuntu" "templates") "ubuntu-22.04.pkr.hcl"
|
||||
@@ -155,7 +155,7 @@ Function GenerateResourcesAndImage {
|
||||
if ($Force -and $ReuseResourceGroup) {
|
||||
throw "Force and ReuseResourceGroup cannot be used together."
|
||||
}
|
||||
|
||||
|
||||
Show-LatestCommit -ErrorAction SilentlyContinue
|
||||
|
||||
# Validate packer is installed
|
||||
@@ -176,30 +176,20 @@ Function GenerateResourcesAndImage {
|
||||
}
|
||||
|
||||
Write-Host "Access to packer generated VM will be restricted to agent IP Address: $AgentIp."
|
||||
if ($TemplatePath.Contains("pkr.hcl")) {
|
||||
if ($PSVersionTable.PSVersion.Major -eq 5) {
|
||||
Write-Verbose "PowerShell 5 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
elseif ($PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -le 2) {
|
||||
Write-Verbose "PowerShell 7.0-7.2 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = '["{0}"]' -f $AgentIp
|
||||
}
|
||||
if ($PSVersionTable.PSVersion.Major -eq 5) {
|
||||
Write-Verbose "PowerShell 5 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
elseif ($PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -le 2) {
|
||||
Write-Verbose "PowerShell 7.0-7.2 detected. Replacing double quotes with escaped double quotes in allowed inbound IP addresses."
|
||||
$AllowedInboundIpAddresses = '[\"{0}\"]' -f $AgentIp
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = $AgentIp
|
||||
$AllowedInboundIpAddresses = '["{0}"]' -f $AgentIp
|
||||
}
|
||||
}
|
||||
else {
|
||||
if ($TemplatePath.Contains("pkr.hcl")) {
|
||||
$AllowedInboundIpAddresses = "[]"
|
||||
}
|
||||
else {
|
||||
$AllowedInboundIpAddresses = ""
|
||||
}
|
||||
$AllowedInboundIpAddresses = "[]"
|
||||
}
|
||||
Write-Debug "Allowed inbound IP addresses: $AllowedInboundIpAddresses."
|
||||
|
||||
@@ -216,19 +206,16 @@ Function GenerateResourcesAndImage {
|
||||
$TagsJson = $TagsJson -replace '"', '\"'
|
||||
}
|
||||
Write-Debug "Tags JSON: $TagsJson."
|
||||
if ($TemplatePath.Contains(".json")) {
|
||||
Write-Verbose "Injecting tags into packer template."
|
||||
if ($Tags) {
|
||||
$BuilderScriptPathInjected = $TemplatePath.Replace(".json", "-temp.json")
|
||||
$PackerTemplateContent = Get-Content -Path $TemplatePath | ConvertFrom-Json
|
||||
$PackerTemplateContent.builders | Add-Member -Name "azure_tags" -Value $Tags -MemberType NoteProperty
|
||||
$PackerTemplateContent | ConvertTo-Json -Depth 3 | Out-File -Encoding Ascii $BuilderScriptPathInjected
|
||||
$TemplatePath = $BuilderScriptPathInjected
|
||||
}
|
||||
}
|
||||
|
||||
$InstallPassword = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
Write-Host "Downloading packer plugins..."
|
||||
& $PackerBinary init $TemplatePath
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Packer plugins download failed."
|
||||
}
|
||||
|
||||
Write-Host "Validating packer template..."
|
||||
& $PackerBinary validate `
|
||||
"-var=client_id=fake" `
|
||||
@@ -242,7 +229,7 @@ Function GenerateResourcesAndImage {
|
||||
"-var=allowed_inbound_ip_addresses=$($AllowedInboundIpAddresses)" `
|
||||
"-var=azure_tags=$($TagsJson)" `
|
||||
$TemplatePath
|
||||
|
||||
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Packer template validation failed."
|
||||
}
|
||||
@@ -290,7 +277,7 @@ Function GenerateResourcesAndImage {
|
||||
# Resource group already exists, ask the user what to do
|
||||
$title = "Resource group '$ResourceGroupName' already exists"
|
||||
$message = "Do you want to delete the resource group and all resources in it?"
|
||||
|
||||
|
||||
$options = @(
|
||||
[System.Management.Automation.Host.ChoiceDescription]::new("&Yes", "Delete the resource group and all resources in it."),
|
||||
[System.Management.Automation.Host.ChoiceDescription]::new("&No", "Keep the resource group and continue."),
|
||||
@@ -346,7 +333,7 @@ Function GenerateResourcesAndImage {
|
||||
if ($LastExitCode -ne 0) {
|
||||
throw "Failed to create service principal '$ServicePrincipalName'."
|
||||
}
|
||||
|
||||
|
||||
$ServicePrincipalAppId = $ServicePrincipal.appId
|
||||
$ServicePrincipalPassword = $ServicePrincipal.password
|
||||
$TenantId = $ServicePrincipal.tenant
|
||||
@@ -383,7 +370,7 @@ Function GenerateResourcesAndImage {
|
||||
Write-Error $_
|
||||
} finally {
|
||||
Write-Verbose "`nCleaning up..."
|
||||
|
||||
|
||||
# Remove ADServicePrincipal and ADApplication
|
||||
if ($ADCleanupRequired) {
|
||||
Write-Host "Removing ADServicePrincipal..."
|
||||
|
||||
@@ -69,14 +69,7 @@ jobs:
|
||||
$TemplateDirectoryPath = Join-Path "images" $TemplateDirectoryName | Resolve-Path
|
||||
|
||||
$TemplateFileName = "${{ parameters.image_template_name }}"
|
||||
if ($TemplateFileName) {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath $TemplateFileName
|
||||
} else {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath "$ImageType.pkr.hcl"
|
||||
if ( -not (Test-Path $TemplatePath) ) {
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath "$ImageType.json"
|
||||
}
|
||||
}
|
||||
$TemplatePath = Join-Path $TemplateDirectoryPath $TemplateFileName
|
||||
Write-Host "##vso[task.setvariable variable=TemplateDirectoryPath;]$TemplateDirectoryPath"
|
||||
Write-Host "##vso[task.setvariable variable=TemplatePath;]$TemplatePath"
|
||||
|
||||
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: ubuntu2004
|
||||
image_readme_name: Ubuntu2004-Readme.md
|
||||
image_template_name: ubuntu-20.04.json
|
||||
image_template_name: ubuntu-20.04.pkr.hcl
|
||||
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: windows2019
|
||||
image_readme_name: Windows2019-Readme.md
|
||||
image_template_name: windows-2019.json
|
||||
image_template_name: windows-2019.pkr.hcl
|
||||
|
||||
@@ -18,4 +18,4 @@ jobs:
|
||||
parameters:
|
||||
image_type: windows2022
|
||||
image_readme_name: Windows2022-Readme.md
|
||||
image_template_name: windows-2022.json
|
||||
image_template_name: windows-2022.pkr.hcl
|
||||
|
||||
@@ -22,8 +22,6 @@ if (-not (Test-Path $TemplatePath))
|
||||
$ImageTemplateName = [io.path]::GetFileName($TemplatePath).Split(".")[0]
|
||||
$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper()
|
||||
|
||||
packer validate -syntax-only $TemplatePath
|
||||
|
||||
$SensitiveData = @(
|
||||
'OSType',
|
||||
'StorageAccountLocation',
|
||||
@@ -37,6 +35,12 @@ $SensitiveData = @(
|
||||
Write-Host "Show Packer Version"
|
||||
packer --version
|
||||
|
||||
Write-Host "Download packer plugins"
|
||||
packer init $TemplatePath
|
||||
|
||||
Write-Host "Validate packer template"
|
||||
packer validate -syntax-only $TemplatePath
|
||||
|
||||
Write-Host "Build $ImageTemplateName VM"
|
||||
packer build -var "client_id=$ClientId" `
|
||||
-var "client_secret=$ClientSecret" `
|
||||
|
||||
@@ -89,13 +89,6 @@ function Invoke-SoftwareUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "`t[*] Fetching Software Updates ready to install on '$TemplateName' VM:"
|
||||
Show-StringWithFormat $newUpdates
|
||||
$listOfNewUpdates = $($($newUpdates.Split("*")).Split("Title") | Where-Object {$_ -match "Label:"}).Replace("Label: ", '')
|
||||
Write-Host "`t[*] Installing Software Updates on '$TemplateName' VM:"
|
||||
Install-SoftwareUpdate -HostName $ipAddress -listOfUpdates $listOfNewUpdates -Password $Password | Show-StringWithFormat
|
||||
|
||||
# Check if Action: restart
|
||||
# Define the next macOS version
|
||||
$command = "sw_vers"
|
||||
$guestMacosVersion = Invoke-SSHPassCommand -HostName $ipAddress -Command $command
|
||||
@@ -103,27 +96,26 @@ function Invoke-SoftwareUpdate {
|
||||
'12.\d' { $nextOSVersion = 'macOS Ventura|macOS Sonoma' }
|
||||
'13.\d' { $nextOSVersion = 'macOS Sonoma' }
|
||||
}
|
||||
# Make an array of updates
|
||||
$listOfNewUpdates = $newUpdates.split('*').Trim('')
|
||||
|
||||
Write-Host "`t[*] Fetching Software Updates ready to install on '$TemplateName' VM:"
|
||||
Show-StringWithFormat $newUpdates
|
||||
$listOfNewUpdates = $($($newUpdates.Split("*")).Split("Title").where({$_ -match "Label:"}).Replace("Label: ", '').where({$_ -notmatch $nextOSVersion}))
|
||||
Write-Host "`t[*] Installing Software Updates on '$TemplateName' VM:"
|
||||
Install-SoftwareUpdate -HostName $ipAddress -listOfUpdates $listOfNewUpdates -Password $Password | Show-StringWithFormat
|
||||
Write-Host "`t[*] Sleep 60 seconds before the software updates have been installed"
|
||||
Start-Sleep -Seconds 60
|
||||
Write-Host "`t[*] Waiting for loginwindow process"
|
||||
Wait-LoginWindow -HostName $ipAddress | Show-StringWithFormat
|
||||
# Re-enable AutoLogon after installing a new security software update
|
||||
Invoke-EnableAutoLogon
|
||||
|
||||
foreach ($newupdate in $listOfNewUpdates) {
|
||||
# Will be True if the value is not Venture, not empty, and contains "Action: restart" words
|
||||
if ($newupdate.Contains("Action: restart") -and !($newupdate -match $nextOSVersion) -and (-not [String]::IsNullOrEmpty($newupdate))) {
|
||||
Write-Host "`t[*] Sleep 120 seconds before the software updates have been installed"
|
||||
Start-Sleep -Seconds 120
|
||||
|
||||
Write-Host "`t[*] Waiting for loginwindow process"
|
||||
Wait-LoginWindow -HostName $ipAddress | Show-StringWithFormat
|
||||
|
||||
# Re-enable AutoLogon after installing a new security software update
|
||||
Invoke-EnableAutoLogon
|
||||
|
||||
# Check software updates have been installed
|
||||
$updates = Get-SoftwareUpdate -HostName $ipAddress
|
||||
if ($updates.Contains("Action: restart") -and !($newupdate -match $nextOSVersion)) {
|
||||
Write-Host "`t[x] Software updates failed to install: "
|
||||
Show-StringWithFormat $updates
|
||||
exit 1
|
||||
}
|
||||
# Check software updates have been installed
|
||||
$updates = Get-SoftwareUpdate -HostName $ipAddress
|
||||
if ($updates.Contains("Action: restart") -and !($updates -match $nextOSVersion)) {
|
||||
Write-Host "`t[x] Software updates failed to install: "
|
||||
Show-StringWithFormat $updates
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,6 +128,7 @@ function Invoke-SoftwareUpdate {
|
||||
Invoke-SSHPassCommand -HostName $ipAddress -Command $command | Show-StringWithFormat
|
||||
}
|
||||
|
||||
|
||||
function Invoke-UpdateSettings {
|
||||
param (
|
||||
[Parameter(Mandatory)]
|
||||
|
||||
@@ -266,36 +266,13 @@ function Install-SoftwareUpdate {
|
||||
[array] $listOfUpdates,
|
||||
[string] $Password
|
||||
)
|
||||
# If an update is happening on macOS 12 or 13 we will use the prepared list of updates, otherwise, we will install all updates.
|
||||
$command = "sw_vers"
|
||||
$guestMacosVersion = Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
if ($guestMacosVersion[1] -match "12") {
|
||||
foreach ($update in $listOfUpdates) {
|
||||
# Filtering updates that contain "Ventura" word
|
||||
if ($update -notmatch "Ventura") {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
} elseif ($guestMacosVersion[1] -match "13") {
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
foreach ($update in $listOfUpdates) {
|
||||
# Filtering updates that contain "Sonoma" word
|
||||
if ($update -notmatch "Sonoma") {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
}
|
||||
# If an update is happening on macOS arm64 we will use the additional tool to install updates.
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
$osArch = $(arch)
|
||||
if ($osArch -eq "arm64") {
|
||||
Invoke-SoftwareUpdateArm64 -HostName $HostName -Password $Password -ListOfUpdates $listOfUpdates
|
||||
} else {
|
||||
$command = "sudo /usr/sbin/softwareupdate --all --install --restart --verbose"
|
||||
foreach ($update in $listOfUpdates) {
|
||||
$command = "sudo /usr/sbin/softwareupdate --restart --verbose --install '$($update.trim())'"
|
||||
Invoke-SSHPassCommand -HostName $HostName -Command $command
|
||||
}
|
||||
}
|
||||
@@ -348,14 +325,17 @@ function Invoke-WithRetry {
|
||||
[int] $RetryCount = 20,
|
||||
[int] $Seconds = 60
|
||||
)
|
||||
|
||||
while ($RetryCount -gt 0) {
|
||||
if ($Command) {
|
||||
$result = & $Command
|
||||
}
|
||||
try {
|
||||
if ($Command) {
|
||||
$result = & $Command
|
||||
}
|
||||
|
||||
if (& $BreakCondition) {
|
||||
return $result
|
||||
if (& $BreakCondition) {
|
||||
return $result
|
||||
}
|
||||
} catch {
|
||||
Write-Host "`t [!] Error during command execution: $_"
|
||||
}
|
||||
|
||||
$RetryCount--
|
||||
|
||||
@@ -4,8 +4,10 @@ jobs:
|
||||
timeoutInMinutes: 1200
|
||||
pool:
|
||||
name: Mac-Cloud Image Generation
|
||||
demands:
|
||||
- PrimaryRackAgent -equals ${{ parameters.primary_agent }}
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
- group: ${{ parameters.variable_group_name }}
|
||||
|
||||
steps:
|
||||
- pwsh: |
|
||||
@@ -63,6 +65,7 @@ jobs:
|
||||
'Using ssh communicator to connect:'
|
||||
)
|
||||
|
||||
packer init ${{ parameters.template_path }}
|
||||
packer build -on-error=abort `
|
||||
-var="vcenter_server=$(vcenter-server-v2)" `
|
||||
-var="vcenter_username=$(vcenter-username-v2)" `
|
||||
|
||||
@@ -14,10 +14,15 @@ pr:
|
||||
include:
|
||||
- main
|
||||
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Big Sur'
|
||||
base_image_name: 'clean-macOS-11-380Gb-runner'
|
||||
template_path: 'templates/macOS-11.json'
|
||||
template_path: 'templates/macOS-11.pkr.hcl'
|
||||
target_datastore: 'ds-image'
|
||||
variable_group_name: 'Mac-Cloud Image Generation'
|
||||
primary_agent: 'true'
|
||||
|
||||
@@ -14,10 +14,15 @@ pr:
|
||||
include:
|
||||
- main
|
||||
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Monterey'
|
||||
base_image_name: 'clean-macOS-12-380Gb-runner'
|
||||
template_path: 'templates/macOS-12.json'
|
||||
template_path: 'templates/macOS-12.pkr.hcl'
|
||||
target_datastore: 'ds-image'
|
||||
variable_group_name: 'Mac-Cloud Image Generation'
|
||||
primary_agent: 'true'
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
name: macOS-11_$(date:yyyyMMdd)$(rev:.r)_unstable
|
||||
schedules:
|
||||
- cron: '45 0 * * 1'
|
||||
displayName: Weekly
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
trigger: none
|
||||
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Big Sur'
|
||||
base_image_name: 'clean-macOS-11-380Gb-runner'
|
||||
template_path: 'templates/macOS-11.pkr.hcl'
|
||||
target_datastore: 'ds-image'
|
||||
variable_group_name: 'Mac-Cloud Secondary Image Generation'
|
||||
primary_agent: 'false'
|
||||
@@ -0,0 +1,23 @@
|
||||
name: macOS-12_$(date:yyyyMMdd)$(rev:.r)_unstable
|
||||
schedules:
|
||||
- cron: '45 1 * * 1'
|
||||
displayName: Weekly
|
||||
branches:
|
||||
include:
|
||||
- main
|
||||
always: true
|
||||
|
||||
trigger: none
|
||||
|
||||
variables:
|
||||
- group: Mac-Cloud Image Generation
|
||||
|
||||
jobs:
|
||||
- template: image-generation.yml
|
||||
parameters:
|
||||
image_label: 'macOS Monterey'
|
||||
base_image_name: 'clean-macOS-12-380Gb-runner'
|
||||
template_path: 'templates/macOS-12.pkr.hcl'
|
||||
target_datastore: 'ds-image'
|
||||
variable_group_name: 'Mac-Cloud Secondary Image Generation'
|
||||
primary_agent: 'false'
|
||||
@@ -11,7 +11,7 @@ LICENSE_BLOCK
|
||||
USERNAME="${1}"
|
||||
PW="${2}"
|
||||
|
||||
function kcpasswordEncode {
|
||||
kcpasswordEncode() {
|
||||
#ascii string
|
||||
local thisString="${1}"
|
||||
local i
|
||||
|
||||
@@ -23,7 +23,7 @@ change_framework_version() {
|
||||
echo "Select $framework $version"
|
||||
|
||||
local countDigit=$(echo "${version}" | grep -o "\." | grep -c "\.")
|
||||
|
||||
|
||||
if [[ countDigit -gt 1 ]]; then
|
||||
echo "[WARNING] It is not recommended to specify the exact framework version because your build can be broken with the next patch update. Consider using "major.minor" only format."
|
||||
fi
|
||||
@@ -31,7 +31,7 @@ change_framework_version() {
|
||||
local framework_path=$(get_framework_path "$framework")
|
||||
|
||||
if [ -d "${framework_path}/${version}" ]; then
|
||||
sudo rm -f "${framework_path}/Current"
|
||||
sudo rm -f ${framework_path}/Current
|
||||
sudo ln -s "${framework_path}/${version}" "${framework_path}/Current"
|
||||
else
|
||||
echo "Invalid framework version ${framework_path}/${version}"
|
||||
@@ -46,7 +46,7 @@ for arg in "$@"; do
|
||||
case $key in
|
||||
--mono | --ios | --android | --mac) change_framework_version $key $value ;;
|
||||
*)
|
||||
echo "Invalid parameter <${key}>"
|
||||
echo "Invalid parameter <${key}>"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[all OSs] Nodejs 14.x will be removed from the images on November, 26](https://github.com/actions/runner-images/issues/8779) |
|
||||
| [Major Refactoring of GitHub Actions Runner Images Repository](https://github.com/actions/runner-images/issues/8706) |
|
||||
| [[All OSes] Powershell Core will be updated to 7.4.x LTS on January, 28](https://github.com/actions/runner-images/issues/9115) |
|
||||
***
|
||||
# macOS 11
|
||||
- OS Version: macOS 11.7.10 (20G1427)
|
||||
- Kernel Version: Darwin 20.6.0
|
||||
- Image Version: 20231127.1
|
||||
- Image Version: 20240127.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 6.0.417, 7.0.102, 7.0.202, 7.0.306, 7.0.404, 8.0.100
|
||||
- .NET Core SDK: 6.0.418, 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 13.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
@@ -21,18 +20,17 @@
|
||||
- GNU Fortran 10 (Homebrew GCC 10.5.0) - available by `gfortran-10` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- Julia 1.9.4
|
||||
- Kotlin 1.9.21-release-633
|
||||
- Go 1.20.11
|
||||
- Julia 1.10.0
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Go 1.20.13
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Node.js 18.19.0
|
||||
- MSBuild 16.10.1.51301 (Mono 6.12.0.188)
|
||||
- NVM 0.39.5
|
||||
- NVM - Cached node versions: 16.20.2, 18.18.2, 20.10.0
|
||||
- Perl 5.38.1
|
||||
- PHP 8.3.0
|
||||
- NVM 0.39.7
|
||||
- NVM - Cached node versions: 16.20.2, 18.19.0, 20.11.0
|
||||
- Perl 5.38.2
|
||||
- Python 2.7.18
|
||||
- Python3 3.12.0
|
||||
- Python3 3.12.1
|
||||
- R 4.3.2
|
||||
- Ruby 2.7.8p225
|
||||
|
||||
@@ -40,16 +38,15 @@
|
||||
- Bundler 2.4.22
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.3
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.22
|
||||
- Miniconda 23.10.0
|
||||
- NPM 9.8.1
|
||||
- Homebrew 4.2.5
|
||||
- Miniconda 23.11.0
|
||||
- NPM 10.2.3
|
||||
- NuGet 6.3.1.1
|
||||
- Pip 20.3.4 (python 2.7)
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.22
|
||||
- Vcpkg 2023 (build from commit 2a01db703)
|
||||
- Pip3 23.3.2 (python 3.12)
|
||||
- Pipx 1.4.3
|
||||
- RubyGems 3.4.10
|
||||
- Vcpkg 2024 (build from commit 7032c5759)
|
||||
- Yarn 1.22.19
|
||||
|
||||
#### Environment variables
|
||||
@@ -60,60 +57,59 @@
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Sbt 1.9.7
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.5
|
||||
- Sbt 1.9.8
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.21.2
|
||||
- bazel 6.4.0
|
||||
- azcopy 10.22.2
|
||||
- bazel 7.0.2
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.3.2 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Curl 8.5.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.39.1
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.42.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- helm v3.13.2+g2a2fb3b
|
||||
- ImageMagick 7.1.1-21
|
||||
- jq 1.7
|
||||
- gpg (GnuPG) 2.4.4
|
||||
- helm v3.14.0+g3fc9f4b
|
||||
- jq 1.7.1
|
||||
- mongo 5.0.21
|
||||
- mongod 5.0.21
|
||||
- Newman 6.0.0
|
||||
- Newman 6.1.0
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- PostgreSQL 14.10 (Homebrew)
|
||||
- psql (PostgreSQL) 14.10 (Homebrew)
|
||||
- Sox 14.4.2
|
||||
- Subversion (SVN) 1.14.2
|
||||
- Subversion (SVN) 1.14.3
|
||||
- Switchaudio-osx 1.2.2
|
||||
- yq 4.40.3
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- Aliyun CLI 3.0.188
|
||||
- Aliyun CLI 3.0.197
|
||||
- App Center CLI 2.14.0
|
||||
- AWS CLI 2.14.0
|
||||
- AWS SAM CLI 1.103.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.54.0
|
||||
- AWS CLI 2.15.15
|
||||
- AWS SAM CLI 1.108.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.23.1
|
||||
- Cabal 3.6.2.0
|
||||
- Cmake 3.27.8
|
||||
- CodeQL Action Bundle 2.15.3
|
||||
- Fastlane 2.217.0
|
||||
- Bicep CLI 0.24.24
|
||||
- Cabal 3.10.2.1
|
||||
- Cmake 3.28.1
|
||||
- CodeQL Action Bundle 2.16.1
|
||||
- Fastlane 2.219.0
|
||||
- GHC 9.8.1
|
||||
- GHCup 0.1.20.0
|
||||
- Jazzy 0.14.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.10
|
||||
- Swig 4.1.1
|
||||
- SwiftFormat 0.53.0
|
||||
- Swig 4.2.0
|
||||
- Xcode Command Line Tools 13.2.0.0.1.1638488800
|
||||
|
||||
### Linters
|
||||
@@ -123,14 +119,14 @@
|
||||
### Browsers
|
||||
- Safari 16.6.1 (16615.3.12.11.5)
|
||||
- SafariDriver 16.6.1 (16615.3.12.11.5)
|
||||
- Google Chrome 119.0.6045.159
|
||||
- Google Chrome for Testing 119.0.6045.105
|
||||
- ChromeDriver 119.0.6045.105
|
||||
- Microsoft Edge 119.0.2151.72
|
||||
- Microsoft Edge WebDriver 119.0.2151.72
|
||||
- Mozilla Firefox 120.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.15.0
|
||||
- Google Chrome 121.0.6167.85
|
||||
- Google Chrome for Testing 121.0.6167.85
|
||||
- ChromeDriver 121.0.6167.85
|
||||
- Microsoft Edge 121.0.2277.83
|
||||
- Microsoft Edge WebDriver 121.0.2277.83
|
||||
- Mozilla Firefox 122.0
|
||||
- geckodriver 0.34.0
|
||||
- Selenium server 4.17.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -142,10 +138,10 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.392+8 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0 | JAVA_HOME_21_X64 |
|
||||
| 8.0.402+6 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.22+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.10+7 | JAVA_HOME_17_X64 |
|
||||
| 21.0.2+13.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
@@ -157,49 +153,49 @@
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 2.7.18 [PyPy 7.3.15]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
- 3.9.18 [PyPy 7.3.15]
|
||||
- 3.10.13 [PyPy 7.3.15]
|
||||
|
||||
#### Python
|
||||
- 3.7.17
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.11.7
|
||||
- 3.12.1
|
||||
|
||||
#### Node.js
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.10.0
|
||||
- 18.19.0
|
||||
- 20.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.11
|
||||
- 1.21.4
|
||||
- 1.20.13
|
||||
- 1.21.6
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.74.0
|
||||
- Rust 1.74.0
|
||||
- Rustdoc 1.74.0
|
||||
- Cargo 1.75.0
|
||||
- Rust 1.75.0
|
||||
- Rustdoc 1.75.0
|
||||
- Rustup 1.26.0
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.69.1
|
||||
- Bindgen 0.69.2
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.14.0
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.74
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.75
|
||||
- Rustfmt 1.7.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.17
|
||||
- PowerShell 7.4.1
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 11.0.0
|
||||
- Az: 11.2.0
|
||||
- MarkdownPS: 1.9
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
@@ -216,7 +212,7 @@
|
||||
| Version | Build | Path |
|
||||
| -------------- | ---------- | ------------------------------------ |
|
||||
| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app |
|
||||
| 2022 (default) | 17.6.7.417 | /Applications/Visual Studio.app |
|
||||
| 2022 (default) | 17.6.8.400 | /Applications/Visual Studio.app |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
@@ -329,18 +325,18 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
| watchOS 8.3 | 13.2.1 | Apple Watch Series 4 - 40mm<br>Apple Watch Series 4 - 44mm<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 |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2<br>32.0.0<br>31.0.0<br>30.0.0 30.0.1 30.0.2 30.0.3<br>29.0.0 29.0.1 29.0.2 29.0.3<br>28.0.0 28.0.1 28.0.2 28.0.3<br>27.0.0 27.0.1 27.0.2 27.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1)<br>android-30 (rev 3)<br>android-29 (rev 5)<br>android-28 (rev 6)<br>android-27 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.10.2<br>3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.10.2<br>3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -356,5 +352,5 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
- libXext 1.3.5
|
||||
- libXft 2.3.8
|
||||
- Tcl/Tk 8.6.13_5
|
||||
- Zlib 1.3
|
||||
- Zlib 1.3.1
|
||||
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[all OSs] Nodejs 14.x will be removed from the images on November, 26](https://github.com/actions/runner-images/issues/8779) |
|
||||
| [Major Refactoring of GitHub Actions Runner Images Repository](https://github.com/actions/runner-images/issues/8706) |
|
||||
| [[All OSes] Powershell Core will be updated to 7.4.x LTS on January, 28](https://github.com/actions/runner-images/issues/9115) |
|
||||
***
|
||||
# macOS 12
|
||||
- OS Version: macOS 12.7.1 (21G920)
|
||||
- OS Version: macOS 12.7.3 (21H1015)
|
||||
- Kernel Version: Darwin 21.6.0
|
||||
- Image Version: 20231127.1
|
||||
- Image Version: 20240202.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 6.0.417, 7.0.102, 7.0.202, 7.0.306, 7.0.404, 8.0.100
|
||||
- .NET Core SDK: 6.0.418, 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- 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`
|
||||
@@ -21,35 +20,35 @@
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.4
|
||||
- Kotlin 1.9.21-release-633
|
||||
- Go 1.20.11
|
||||
- Julia 1.10.0
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Go 1.20.13
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Node.js 18.19.0
|
||||
- MSBuild 16.10.1.51301 (Mono 6.12.0.188)
|
||||
- NVM 0.39.5
|
||||
- NVM - Cached node versions: 16.20.2, 18.18.2, 20.10.0
|
||||
- Perl 5.38.1
|
||||
- PHP 8.3.0
|
||||
- NVM 0.39.7
|
||||
- NVM - Cached node versions: 16.20.2, 18.19.0, 20.11.0
|
||||
- Perl 5.38.2
|
||||
- PHP 8.3.2
|
||||
- Python 2.7.18
|
||||
- Python3 3.12.0
|
||||
- Python3 3.12.1
|
||||
- R 4.3.2
|
||||
- Ruby 3.0.6p216
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.22
|
||||
- Bundler 2.5.5
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.3
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.22
|
||||
- Miniconda 23.10.0
|
||||
- NPM 9.8.1
|
||||
- CocoaPods 1.15.0
|
||||
- Composer 2.6.6
|
||||
- Homebrew 4.2.6
|
||||
- Miniconda 23.11.0
|
||||
- NPM 10.2.3
|
||||
- NuGet 6.3.1.1
|
||||
- Pip 20.3.4 (python 2.7)
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.22
|
||||
- Vcpkg 2023 (build from commit 13c3c0fcc)
|
||||
- Pip3 23.3.2 (python 3.12)
|
||||
- Pipx 1.4.3
|
||||
- RubyGems 3.5.5
|
||||
- Vcpkg 2024 (build from commit 80403036a)
|
||||
- Yarn 1.22.19
|
||||
|
||||
#### Environment variables
|
||||
@@ -60,26 +59,26 @@
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Sbt 1.9.7
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.5
|
||||
- Sbt 1.9.8
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.21.2
|
||||
- bazel 6.4.0
|
||||
- azcopy 10.23.0
|
||||
- bazel 7.0.2
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.5.1 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Curl 8.6.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.39.1
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.43.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- ImageMagick 7.1.1-21
|
||||
- jq 1.7
|
||||
- gpg (GnuPG) 2.4.4
|
||||
- ImageMagick 7.1.1-27
|
||||
- jq 1.7.1
|
||||
- mongo 5.0.21
|
||||
- mongod 5.0.21
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
@@ -88,33 +87,33 @@
|
||||
- PostgreSQL 14.10 (Homebrew)
|
||||
- psql (PostgreSQL) 14.10 (Homebrew)
|
||||
- Sox 14.4.2
|
||||
- Subversion (SVN) 1.14.2
|
||||
- Subversion (SVN) 1.14.3
|
||||
- Switchaudio-osx 1.2.2
|
||||
- Vagrant 2.4.0
|
||||
- Vagrant 2.4.1
|
||||
- VirtualBox 6.1.38r153438
|
||||
- yq 4.40.3
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- App Center CLI 2.14.0
|
||||
- AWS CLI 2.13.39
|
||||
- AWS SAM CLI 1.103.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.54.0
|
||||
- AWS CLI 2.15.17
|
||||
- AWS SAM CLI 1.108.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.23.1
|
||||
- Cabal 3.6.2.0
|
||||
- Cmake 3.27.8
|
||||
- CodeQL Action Bundle 2.15.3
|
||||
- Colima 0.6.6
|
||||
- Fastlane 2.217.0
|
||||
- Bicep CLI 0.24.24
|
||||
- Cabal 3.10.2.1
|
||||
- Cmake 3.28.2
|
||||
- CodeQL Action Bundle 2.16.1
|
||||
- Colima 0.6.8
|
||||
- Fastlane 2.219.0
|
||||
- GHC 9.8.1
|
||||
- GHCup 0.1.20.0
|
||||
- Jazzy 0.14.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.10
|
||||
- Swig 4.1.1
|
||||
- Xcbeautify 1.0.1
|
||||
- SwiftFormat 0.53.1
|
||||
- Swig 4.2.0
|
||||
- Xcbeautify 1.4.0
|
||||
- Xcode Command Line Tools 14.2.0.0.1.1668646533
|
||||
- Xcodes 1.4.1
|
||||
|
||||
@@ -123,16 +122,16 @@
|
||||
- Yamllint 1.33.0
|
||||
|
||||
### Browsers
|
||||
- Safari 17.1 (17616.2.9.11.9)
|
||||
- SafariDriver 17.1 (17616.2.9.11.9)
|
||||
- Google Chrome 119.0.6045.159
|
||||
- Google Chrome for Testing 119.0.6045.105
|
||||
- ChromeDriver 119.0.6045.105
|
||||
- Microsoft Edge 119.0.2151.72
|
||||
- Microsoft Edge WebDriver 119.0.2151.72
|
||||
- Mozilla Firefox 120.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.15.0
|
||||
- Safari 17.3 (17617.2.4.11.11)
|
||||
- SafariDriver 17.3 (17617.2.4.11.11)
|
||||
- Google Chrome 121.0.6167.139
|
||||
- Google Chrome for Testing 121.0.6167.85
|
||||
- ChromeDriver 121.0.6167.85
|
||||
- Microsoft Edge 121.0.2277.98
|
||||
- Microsoft Edge WebDriver 121.0.2277.98
|
||||
- Mozilla Firefox 122.0
|
||||
- geckodriver 0.34.0
|
||||
- Selenium server 4.17.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -144,10 +143,10 @@
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.392+8 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0 | JAVA_HOME_21_X64 |
|
||||
| 8.0.402+6 (default) | JAVA_HOME_8_X64 |
|
||||
| 11.0.22+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.10+7 | JAVA_HOME_17_X64 |
|
||||
| 21.0.2+13.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
@@ -157,49 +156,49 @@
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 2.7.18 [PyPy 7.3.15]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
- 3.9.18 [PyPy 7.3.15]
|
||||
- 3.10.13 [PyPy 7.3.15]
|
||||
|
||||
#### Python
|
||||
- 3.7.17
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.11.7
|
||||
- 3.12.1
|
||||
|
||||
#### Node.js
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.10.0
|
||||
- 18.19.0
|
||||
- 20.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.11
|
||||
- 1.21.4
|
||||
- 1.20.13
|
||||
- 1.21.6
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.74.0
|
||||
- Rust 1.74.0
|
||||
- Rustdoc 1.74.0
|
||||
- Cargo 1.75.0
|
||||
- Rust 1.75.0
|
||||
- Rustdoc 1.75.0
|
||||
- Rustup 1.26.0
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.69.1
|
||||
- Bindgen 0.69.2
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.14.0
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.74
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.75
|
||||
- Rustfmt 1.7.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.17
|
||||
- PowerShell 7.4.1
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 11.0.0
|
||||
- Az: 11.2.0
|
||||
- MarkdownPS: 1.9
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
@@ -216,7 +215,7 @@
|
||||
| Version | Build | Path |
|
||||
| -------------- | ---------- | ------------------------------------ |
|
||||
| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app |
|
||||
| 2022 (default) | 17.6.7.417 | /Applications/Visual Studio.app |
|
||||
| 2022 (default) | 17.6.8.400 | /Applications/Visual Studio.app |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
@@ -332,18 +331,18 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
| watchOS 9.1 | 13.1<br>13.2.1<br>13.3.1<br>13.4.1<br>14.0.1<br>14.1<br>14.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 Ultra (49mm) |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2<br>32.0.0<br>31.0.0<br>30.0.0 30.0.1 30.0.2 30.0.3<br>29.0.0 29.0.1 29.0.2 29.0.3<br>28.0.0 28.0.1 28.0.2 28.0.3<br>27.0.0 27.0.1 27.0.2 27.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1)<br>android-30 (rev 3)<br>android-29 (rev 5)<br>android-28 (rev 6)<br>android-27 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 8.0 |
|
||||
| Android Emulator | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.0 33.0.1 33.0.2 33.0.3<br>32.0.0<br>31.0.0 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3)<br>android-32 (rev 1)<br>android-31 (rev 1) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.18.1<br>3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653 (default)<br>26.1.10909125 |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -359,12 +358,12 @@ mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app"
|
||||
- libXext 1.3.5
|
||||
- libXft 2.3.8
|
||||
- Tcl/Tk 8.6.13_5
|
||||
- Zlib 1.3
|
||||
- Zlib 1.3.1
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------- | ----------------------------------------------------------------------------------------- |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.1.1-54734/ParallelsDesktop-19.1.1-54734.dmg |
|
||||
| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v19/19.2.1-54832/ParallelsDesktop-19.2.1-54832.dmg |
|
||||
|
||||
##### Notes
|
||||
```
|
||||
|
||||
+122
-114
@@ -1,14 +1,18 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[All OSes] Powershell Core will be updated to 7.4.x LTS on January, 28](https://github.com/actions/runner-images/issues/9115) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.6 (22G120)
|
||||
- OS Version: macOS 13.6.4 (22G513)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20231025.2
|
||||
- Image Version: 20240204.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.403
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.3
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
@@ -16,87 +20,83 @@
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.3
|
||||
- Kotlin 1.9.10-release-459
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Perl 5.38.0
|
||||
- PHP 8.2.11
|
||||
- Python3 3.12.0
|
||||
- R 4.3.1
|
||||
- Node.js 20.11.0
|
||||
- Perl 5.38.2
|
||||
- PHP 8.3.2
|
||||
- Python3 3.12.1
|
||||
- Ruby 3.0.6p216
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.21
|
||||
- Bundler 2.5.5
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.13.0
|
||||
- Composer 2.6.5
|
||||
- Homebrew 4.1.17
|
||||
- NPM 9.8.1
|
||||
- CocoaPods 1.15.0
|
||||
- Composer 2.6.6
|
||||
- Homebrew 4.2.6
|
||||
- NPM 10.2.4
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 23.3.1 (python 3.12)
|
||||
- Pipx 1.2.1
|
||||
- RubyGems 3.4.21
|
||||
- Vcpkg 2023 (build from commit 213c01f87)
|
||||
- Pip3 24.0 (python 3.12)
|
||||
- Pipx 1.4.3
|
||||
- RubyGems 3.5.5
|
||||
- Vcpkg 2024 (build from commit 80403036a)
|
||||
- Yarn 1.22.19
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.6
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.36.0
|
||||
- azcopy 10.21.1
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.23.0
|
||||
- bazel 7.0.2
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Git 2.42.0
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.37.0
|
||||
- Curl 8.6.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.43.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7
|
||||
- gpg (GnuPG) 2.4.4
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.35.2
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.13.29
|
||||
- AWS SAM CLI 1.99.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.53.1
|
||||
- AWS CLI 2.15.17
|
||||
- AWS SAM CLI 1.108.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.22.6
|
||||
- Cabal 3.6.2.0
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.1
|
||||
- Fastlane 2.216.0
|
||||
- GHC 9.8.1
|
||||
- GHCup 0.1.19.4
|
||||
- Stack 2.13.1
|
||||
- SwiftFormat 0.52.8
|
||||
- Xcode Command Line Tools 15.0.0.0.1.1694021235
|
||||
- Bicep CLI 0.24.24
|
||||
- Cmake 3.28.2
|
||||
- CodeQL Action Bundle 2.16.1
|
||||
- Fastlane 2.219.0
|
||||
- SwiftFormat 0.53.1
|
||||
- Xcbeautify 1.4.0
|
||||
- Xcode Command Line Tools 15.1.0.0.1.1700200546
|
||||
- Xcodes 1.4.1
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.53.0
|
||||
|
||||
### Browsers
|
||||
- Safari 17.0 (18616.1.27.111.22)
|
||||
- SafariDriver 17.0 (18616.1.27.111.22)
|
||||
- Google Chrome 118.0.5993.117
|
||||
- Google Chrome for Testing 118.0.5993.70
|
||||
- ChromeDriver 118.0.5993.70
|
||||
- Microsoft Edge 118.0.2088.69
|
||||
- Microsoft Edge WebDriver 118.0.2088.69
|
||||
- Mozilla Firefox 119.0
|
||||
- geckodriver 0.33.0
|
||||
- Selenium server 4.14.1
|
||||
- Safari 17.3 (18617.2.4.11.11)
|
||||
- SafariDriver 17.3 (18617.2.4.11.11)
|
||||
- Google Chrome 121.0.6167.139
|
||||
- Google Chrome for Testing 121.0.6167.85
|
||||
- ChromeDriver 121.0.6167.85
|
||||
- Microsoft Edge 121.0.2277.98
|
||||
- Microsoft Edge WebDriver 121.0.2277.98
|
||||
- Mozilla Firefox 122.0
|
||||
- geckodriver 0.34.0
|
||||
- Selenium server 4.17.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -106,12 +106,12 @@
|
||||
| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------ | -------------------- |
|
||||
| 8.0.392+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0.LTS | JAVA_HOME_21_X64 |
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 8.0.402+6 | JAVA_HOME_8_X64 |
|
||||
| 11.0.22+7 | JAVA_HOME_11_X64 |
|
||||
| 17.0.10+7 (default) | JAVA_HOME_17_X64 |
|
||||
| 21.0.2+13.0 | JAVA_HOME_21_X64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
@@ -120,62 +120,57 @@
|
||||
- 3.1.4
|
||||
|
||||
#### PyPy
|
||||
- 2.7.18 [PyPy 7.3.13]
|
||||
- 2.7.18 [PyPy 7.3.15]
|
||||
- 3.7.13 [PyPy 7.3.9]
|
||||
- 3.8.16 [PyPy 7.3.11]
|
||||
- 3.9.18 [PyPy 7.3.13]
|
||||
- 3.10.13 [PyPy 7.3.13]
|
||||
- 3.9.18 [PyPy 7.3.15]
|
||||
- 3.10.13 [PyPy 7.3.15]
|
||||
|
||||
#### Python
|
||||
- 3.8.18
|
||||
- 3.9.18
|
||||
- 3.10.13
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.11.7
|
||||
- 3.12.1
|
||||
|
||||
#### Node.js
|
||||
- 16.20.2
|
||||
- 18.18.2
|
||||
- 20.9.0
|
||||
- 18.19.0
|
||||
- 20.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.10
|
||||
- 1.21.3
|
||||
- 1.20.13
|
||||
- 1.21.6
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Cargo 1.75.0
|
||||
- Rust 1.75.0
|
||||
- Rustdoc 1.75.0
|
||||
- Rustup 1.26.0
|
||||
|
||||
#### Packages
|
||||
- Bindgen 0.68.1
|
||||
- Cargo-audit 0.18.3
|
||||
- Cargo-outdated 0.13.1
|
||||
- Cbindgen 0.26.0
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.75
|
||||
- Rustfmt 1.7.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.15
|
||||
- PowerShell 7.4.1
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 10.4.1
|
||||
- Az: 11.2.0
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 (default) | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app |
|
||||
| 15.0.1 (default) | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
@@ -183,62 +178,74 @@
|
||||
| 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 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| visionOS 1.0 | xros1.0 | 15.2 |
|
||||
| Asset Runtime SDK for macOS hosts targeting watchOS 9.4 | assetruntime.host.macosx.target.watchos9.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting iOS 16.4 | assetruntime.host.macosx.target.iphoneos16.4 | 14.3.1 |
|
||||
| Asset Runtime SDK for macOS hosts targeting tvOS 16.4 | assetruntime.host.macosx.target.appletvos16.4 | 14.3.1 |
|
||||
| DriverKit 22.1 | driverkit22.1 | 14.1 |
|
||||
| DriverKit 22.2 | driverkit22.2 | 14.2 |
|
||||
| DriverKit 22.4 | driverkit22.4 | 14.3.1 |
|
||||
| DriverKit 23.0 | driverkit23.0 | 15.0.1 |
|
||||
| DriverKit 23.2 | driverkit23.2 | 15.1, 15.2 |
|
||||
|
||||
#### Installed Simulators
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.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 | 14.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 | 14.3.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 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | 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 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.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 | 14.1<br>14.2<br>14.3.1<br>15.0.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 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.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 Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ------------ | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.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 | 14.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 | 14.3.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 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| iOS 17.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 9.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| watchOS 10.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
| SDK Patch Applier v4 | 1 |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -249,3 +256,4 @@
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
| Announcements |
|
||||
|-|
|
||||
| [[all OSs] Nodejs 14.x will be removed from the images on November, 26](https://github.com/actions/runner-images/issues/8779) |
|
||||
| [Major Refactoring of GitHub Actions Runner Images Repository](https://github.com/actions/runner-images/issues/8706) |
|
||||
| [[All OS] Android NDK r23 will be removed from images on November 13](https://github.com/actions/runner-images/issues/8383) |
|
||||
| [[All OSes] Powershell Core will be updated to 7.4.x LTS on January, 28](https://github.com/actions/runner-images/issues/9115) |
|
||||
***
|
||||
# macOS 13
|
||||
- OS Version: macOS 13.6.1 (22G313)
|
||||
- OS Version: macOS 13.6.4 (22G513)
|
||||
- Kernel Version: Darwin 22.6.0
|
||||
- Image Version: 20231115.2
|
||||
- Image Version: 20240204.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.404, 8.0.100
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- Bash 3.2.57(1)-release
|
||||
- Clang/LLVM 14.0.3
|
||||
- Clang/LLVM 15.0.0
|
||||
- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang`
|
||||
- GCC 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
@@ -22,72 +20,72 @@
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.9.4
|
||||
- Kotlin 1.9.255-SNAPSHOT
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.18.2
|
||||
- Perl 5.38.0
|
||||
- R 4.3.2
|
||||
- Node.js 20.11.0
|
||||
- Perl 5.38.2
|
||||
- Ruby 3.0.6p216
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.4.22
|
||||
- Bundler 2.5.5
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.2
|
||||
- Homebrew 4.1.20
|
||||
- NPM 9.8.1
|
||||
- CocoaPods 1.15.0
|
||||
- Homebrew 4.2.6
|
||||
- NPM 10.2.4
|
||||
- NuGet 6.3.1.1
|
||||
- RubyGems 3.4.22
|
||||
- RubyGems 3.5.5
|
||||
- Yarn 1.22.19
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.5
|
||||
- Gradle 8.4
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.6
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.21.2
|
||||
- bazel 6.4.0
|
||||
- bazelisk 1.18.0
|
||||
- azcopy 10.23.0
|
||||
- bazel 7.0.2
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.1.2
|
||||
- Git 2.42.1
|
||||
- Git LFS 3.4.0
|
||||
- GitHub CLI 2.39.1
|
||||
- Curl 8.4.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.43.1
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7
|
||||
- gpg (GnuPG) 2.4.4
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.35.2
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.13.36
|
||||
- AWS SAM CLI 1.102.0
|
||||
- AWS Session Manager CLI 1.2.497.0
|
||||
- Azure CLI 2.54.0
|
||||
- AWS CLI 2.15.17
|
||||
- AWS SAM CLI 1.108.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.23.1
|
||||
- Cmake 3.27.7
|
||||
- CodeQL Action Bundle 2.15.2
|
||||
- Fastlane 2.217.0
|
||||
- SwiftFormat 0.52.9
|
||||
- Xcode Command Line Tools 15.0.0.0.1.1694021235
|
||||
- Bicep CLI 0.24.24
|
||||
- Cmake 3.28.2
|
||||
- CodeQL Action Bundle 2.16.1
|
||||
- Fastlane 2.219.0
|
||||
- SwiftFormat 0.53.1
|
||||
- Xcbeautify 1.4.0
|
||||
- Xcode Command Line Tools 15.1.0.0.1.1700200546
|
||||
- Xcodes 1.4.1
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 17.1 (18616.2.9.11.10)
|
||||
- SafariDriver 17.1 (18616.2.9.11.10)
|
||||
- Google Chrome 119.0.6045.159
|
||||
- Google Chrome for Testing 119.0.6045.105
|
||||
- ChromeDriver 119.0.6045.105
|
||||
- Selenium server 4.15.0
|
||||
- Safari 17.3 (18617.2.4.11.11)
|
||||
- SafariDriver 17.3 (18617.2.4.11.11)
|
||||
- Google Chrome 121.0.6167.139
|
||||
- Google Chrome for Testing 121.0.6167.85
|
||||
- ChromeDriver 121.0.6167.85
|
||||
- Selenium server 4.17.0
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
@@ -97,57 +95,56 @@
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| ------------------ | -------------------- |
|
||||
| 11.0.21+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.9+9 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.1+12.0 | JAVA_HOME_21_arm64 |
|
||||
| Version | Environment Variable |
|
||||
| ------------------- | -------------------- |
|
||||
| 11.0.22+7.1 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.10+7 (default) | JAVA_HOME_17_arm64 |
|
||||
| 21.0.2+13.0 | JAVA_HOME_21_arm64 |
|
||||
|
||||
### Cached Tools
|
||||
|
||||
#### Python
|
||||
- 3.11.6
|
||||
- 3.12.0
|
||||
- 3.11.7
|
||||
- 3.12.1
|
||||
|
||||
#### Node.js
|
||||
- 16.20.1
|
||||
- 18.18.2
|
||||
- 20.9.0
|
||||
- 18.19.0
|
||||
- 20.11.0
|
||||
|
||||
#### Go
|
||||
- 1.19.13
|
||||
- 1.20.11
|
||||
- 1.21.4
|
||||
- 1.20.13
|
||||
- 1.21.6
|
||||
|
||||
### Rust Tools
|
||||
- Cargo 1.73.0
|
||||
- Rust 1.73.0
|
||||
- Rustdoc 1.73.0
|
||||
- Cargo 1.75.0
|
||||
- Rust 1.75.0
|
||||
- Rustdoc 1.75.0
|
||||
- Rustup 1.26.0
|
||||
|
||||
#### Packages
|
||||
- Clippy 0.1.73
|
||||
- Rustfmt 1.6.0-stable
|
||||
- Clippy 0.1.75
|
||||
- Rustfmt 1.7.0-stable
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.16
|
||||
- PowerShell 7.4.1
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 11.0.0
|
||||
- Az: 11.2.0
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.0.1 | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 (default) | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app |
|
||||
| 15.0.1 (default) | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
| 14.2 | 14C18 | /Applications/Xcode_14.2.app |
|
||||
| 14.1 | 14B47b | /Applications/Xcode_14.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
@@ -155,26 +152,35 @@
|
||||
| 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 |
|
||||
@@ -182,34 +188,39 @@
|
||||
| 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 | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.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 | 14.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 | 14.3.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 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | 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 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.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 | 14.1<br>14.2<br>14.3.1<br>15.0.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 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.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 Series 9 (41mm)<br>Apple Watch Series 9 (45mm)<br>Apple Watch Ultra (49mm)<br>Apple Watch Ultra 2 (49mm) |
|
||||
| OS | Xcode Version | Simulators |
|
||||
| ------------ | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.1 | 14.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 | 14.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 | 14.3.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 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| iOS 17.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 16.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.1 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 9.4 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| watchOS 10.2 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.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 | 14.1<br>14.2<br>14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 32.1.15 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 33.0.3 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
|
||||
@@ -0,0 +1,201 @@
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.2.1 (23C71)
|
||||
- Kernel Version: Darwin 23.2.0
|
||||
- Image Version: 20240116.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- 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 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.2.0) - available by `gcc-13` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.10.0
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.19.0
|
||||
- Perl 5.38.2
|
||||
- PHP 8.3.1
|
||||
- Python3 3.11.7
|
||||
- R 4.3.2
|
||||
- Ruby 3.0.6p216
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.4
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.3
|
||||
- Composer 2.6.6
|
||||
- Homebrew 4.2.4
|
||||
- NPM 10.2.3
|
||||
- NuGet 6.3.1.1
|
||||
- Pip3 23.3.1 (python 3.11)
|
||||
- Pipx 1.4.2
|
||||
- RubyGems 3.5.4
|
||||
- Vcpkg 2024 (build from commit 91b17dd72)
|
||||
- Yarn 1.22.19
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.5
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.21.2
|
||||
- bazel 7.0.0
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.5.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.42.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.15.10
|
||||
- AWS SAM CLI 1.107.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.24.24
|
||||
- Cmake 3.28.1
|
||||
- CodeQL Action Bundle 2.15.5
|
||||
- Fastlane 2.219.0
|
||||
- SwiftFormat 0.53.0
|
||||
- Xcbeautify 1.4.0
|
||||
- Xcode Command Line Tools 15.1.0.0.1.1700200546
|
||||
- Xcodes 1.4.1
|
||||
|
||||
### Linters
|
||||
- SwiftLint 0.53.0
|
||||
|
||||
### Browsers
|
||||
- Safari 17.2.1 (19617.1.17.11.12)
|
||||
- SafariDriver 17.2.1 (19617.1.17.11.12)
|
||||
- Google Chrome 120.0.6099.234
|
||||
- Google Chrome for Testing 120.0.6099.109
|
||||
- ChromeDriver 120.0.6099.109
|
||||
- Microsoft Edge 120.0.2210.133
|
||||
- Microsoft Edge WebDriver 120.0.2210.133
|
||||
- Mozilla Firefox 121.0.1
|
||||
- geckodriver 0.34.0
|
||||
- Selenium server 4.16.1
|
||||
|
||||
#### 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.392+8 | JAVA_HOME_8_X64 |
|
||||
| 11.0.21+9 | JAVA_HOME_11_X64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_X64 |
|
||||
| 21.0.1+12.0 (default) | JAVA_HOME_21_X64 |
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.18
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 11.2.0
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app |
|
||||
| 15.0.1 (default) | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| 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.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.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.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.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.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.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 |
|
||||
| Simulator - visionOS 1.0 | xrsimulator1.0 | 15.2 |
|
||||
| visionOS 1.0 | xros1.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.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 | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.4 | 14.3.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 17.0 | 14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| iOS 17.2 | 14.3.1<br>15.0.1<br>15.1<br>15.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.4 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.4 | 14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| watchOS 10.2 | 14.3.1<br>15.0.1<br>15.1<br>15.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 | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
@@ -0,0 +1,190 @@
|
||||
# macOS 14
|
||||
- OS Version: macOS 14.2.1 (23C71)
|
||||
- Kernel Version: Darwin 23.2.0
|
||||
- Image Version: 20240116.1
|
||||
|
||||
## Installed Software
|
||||
|
||||
### Language and Runtime
|
||||
- .NET Core SDK: 7.0.102, 7.0.202, 7.0.306, 7.0.405, 8.0.101
|
||||
- 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 11 (Homebrew GCC 11.4.0) - available by `gcc-11` alias
|
||||
- GCC 12 (Homebrew GCC 12.3.0) - available by `gcc-12` alias
|
||||
- GCC 13 (Homebrew GCC 13.2.0) - available by `gcc-13` alias
|
||||
- GNU Fortran 11 (Homebrew GCC 11.4.0) - available by `gfortran-11` alias
|
||||
- GNU Fortran 12 (Homebrew GCC 12.3.0) - available by `gfortran-12` alias
|
||||
- GNU Fortran 13 (Homebrew GCC 13.2.0) - available by `gfortran-13` alias
|
||||
- Julia 1.10.0
|
||||
- Kotlin 1.9.22-release-704
|
||||
- Mono 6.12.0.188
|
||||
- Node.js 18.19.0
|
||||
- Perl 5.38.2
|
||||
- R 4.3.2
|
||||
- Ruby 3.0.6p216
|
||||
|
||||
### Package Management
|
||||
- Bundler 2.5.4
|
||||
- Carthage 0.39.1
|
||||
- CocoaPods 1.14.3
|
||||
- Homebrew 4.2.4
|
||||
- NPM 10.2.3
|
||||
- NuGet 6.3.1.1
|
||||
- RubyGems 3.5.4
|
||||
- Yarn 1.22.19
|
||||
|
||||
### Project Management
|
||||
- Apache Ant 1.10.14
|
||||
- Apache Maven 3.9.6
|
||||
- Gradle 8.5
|
||||
|
||||
### Utilities
|
||||
- 7-Zip 17.05
|
||||
- aria2 1.37.0
|
||||
- azcopy 10.21.2
|
||||
- bazel 7.0.0
|
||||
- bazelisk 1.19.0
|
||||
- bsdtar 3.5.3 - available by 'tar' alias
|
||||
- Curl 8.4.0
|
||||
- Git 2.43.0
|
||||
- Git LFS 3.4.1
|
||||
- GitHub CLI 2.42.0
|
||||
- GNU Tar 1.35 - available by 'gtar' alias
|
||||
- GNU Wget 1.21.4
|
||||
- gpg (GnuPG) 2.4.3
|
||||
- jq 1.7.1
|
||||
- OpenSSL 1.1.1w 11 Sep 2023
|
||||
- Packer 1.9.4
|
||||
- pkg-config 0.29.2
|
||||
- yq 4.40.5
|
||||
- zstd 1.5.5
|
||||
|
||||
### Tools
|
||||
- AWS CLI 2.15.10
|
||||
- AWS SAM CLI 1.107.0
|
||||
- AWS Session Manager CLI 1.2.553.0
|
||||
- Azure CLI 2.56.0
|
||||
- Azure CLI (azure-devops) 0.26.0
|
||||
- Bicep CLI 0.24.24
|
||||
- Cmake 3.28.1
|
||||
- CodeQL Action Bundle 2.15.5
|
||||
- Fastlane 2.219.0
|
||||
- SwiftFormat 0.53.0
|
||||
- Xcbeautify 1.4.0
|
||||
- Xcode Command Line Tools 15.1.0.0.1.1700200546
|
||||
- Xcodes 1.4.1
|
||||
|
||||
### Linters
|
||||
|
||||
### Browsers
|
||||
- Safari 17.2.1 (19617.1.17.11.12)
|
||||
- SafariDriver 17.2.1 (19617.1.17.11.12)
|
||||
- Google Chrome 120.0.6099.234
|
||||
- Google Chrome for Testing 120.0.6099.109
|
||||
- ChromeDriver 120.0.6099.109
|
||||
- Selenium server 4.16.1
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| --------------- | --------------------------------------- |
|
||||
| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-arm64 |
|
||||
| EDGEWEBDRIVER | |
|
||||
| GECKOWEBDRIVER | |
|
||||
|
||||
### Java
|
||||
| Version | Environment Variable |
|
||||
| --------------------- | -------------------- |
|
||||
| 11.0.21+9 | JAVA_HOME_11_arm64 |
|
||||
| 17.0.9+9 | JAVA_HOME_17_arm64 |
|
||||
| 21.0.1+12.0 (default) | JAVA_HOME_21_arm64 |
|
||||
|
||||
### PowerShell Tools
|
||||
- PowerShell 7.2.18
|
||||
|
||||
#### PowerShell Modules
|
||||
- Az: 11.2.0
|
||||
- Pester: 5.5.0
|
||||
- PSScriptAnalyzer: 1.21.0
|
||||
|
||||
### Xcode
|
||||
| Version | Build | Path |
|
||||
| ---------------- | ------- | ------------------------------ |
|
||||
| 15.2 | 15C500b | /Applications/Xcode_15.2.app |
|
||||
| 15.1 | 15C65 | /Applications/Xcode_15.1.app |
|
||||
| 15.0.1 (default) | 15A507 | /Applications/Xcode_15.0.1.app |
|
||||
| 14.3.1 | 14E300c | /Applications/Xcode_14.3.1.app |
|
||||
|
||||
#### Xcode Support Tools
|
||||
- xcpretty 0.3.0
|
||||
|
||||
#### Installed SDKs
|
||||
| SDK | SDK Name | Xcode Version |
|
||||
| ------------------------------------------------------- | --------------------------------------------- | ------------- |
|
||||
| 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.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.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.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.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.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.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.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 | Xcode Version | Simulators |
|
||||
| ------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| iOS 16.4 | 14.3.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 17.0 | 14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| iOS 17.2 | 14.3.1<br>15.0.1<br>15.1<br>15.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.4 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.0 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| tvOS 17.2 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple TV<br>Apple TV 4K (3rd generation)<br>Apple TV 4K (3rd generation) (at 1080p) |
|
||||
| watchOS 9.4 | 14.3.1<br>15.0.1<br>15.1<br>15.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 Ultra (49mm) |
|
||||
| watchOS 10.0 | 14.3.1<br>15.0.1<br>15.1<br>15.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) |
|
||||
| watchOS 10.2 | 14.3.1<br>15.0.1<br>15.1<br>15.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 | 14.3.1<br>15.0.1<br>15.1<br>15.2 | Apple Vision Pro |
|
||||
|
||||
### Android
|
||||
| Package Name | Version |
|
||||
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Android Command Line Tools | 11.0 |
|
||||
| Android Emulator | 33.1.24 |
|
||||
| Android SDK Build-tools | 34.0.0<br>33.0.2 |
|
||||
| Android SDK Platforms | android-34-ext8 (rev 1)<br>android-34-ext10 (rev 1)<br>android-34 (rev 2)<br>android-33-ext5 (rev 1)<br>android-33-ext4 (rev 1)<br>android-33 (rev 3) |
|
||||
| Android SDK Platform-Tools | 34.0.5 |
|
||||
| Android Support Repository | 47.0.0 |
|
||||
| CMake | 3.22.1 |
|
||||
| Google Play services | 49 |
|
||||
| Google Repository | 58 |
|
||||
| NDK | 24.0.8215888<br>25.2.9519653<br>26.1.10909125 (default) |
|
||||
|
||||
#### Environment variables
|
||||
| Name | Value |
|
||||
| ----------------------- | --------------------------------------------------- |
|
||||
| ANDROID_HOME | /Users/runner/Library/Android/sdk |
|
||||
| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/26.1.10909125 |
|
||||
| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk |
|
||||
@@ -21,7 +21,7 @@ $xcodeVersions | ForEach-Object -ThrottleLimit $threadCount -Parallel {
|
||||
Import-Module "$env:HOME/image-generation/helpers/Common.Helpers.psm1"
|
||||
Import-Module "$env:HOME/image-generation/helpers/Xcode.Installer.psm1" -DisableNameChecking
|
||||
|
||||
Install-XcodeVersion -Version $_.version -LinkTo $_.link
|
||||
Install-XcodeVersion -Version $_.version -LinkTo $_.link -Sha256Sum $_.sha256
|
||||
Confirm-XcodeIntegrity -Version $_.link
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@ $xcodeVersions | ForEach-Object {
|
||||
$xcodebuildPath = Get-XcodeToolPath -Version $_.link -ToolName 'xcodebuild'
|
||||
Invoke-ValidateCommand "sudo $xcodebuildPath -downloadPlatform $runtime" | Out-Null
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Invoke-XcodeRunFirstLaunch -Version $defaultXcode
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
################################################################################
|
||||
|
||||
echo "Enabling automatic GUI login for the '$USERNAME' user.."
|
||||
|
||||
python3 $HOME/bootstrap/kcpassword.py "$PASSWORD"
|
||||
|
||||
/usr/bin/defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser "$USERNAME"
|
||||
|
||||
: '
|
||||
|
||||
@@ -14,7 +14,7 @@ scutil --set LocalHostName $name
|
||||
scutil --set ComputerName "${name}.local"
|
||||
EOF
|
||||
|
||||
chmod +x "/usr/local/bin/change_hostname.sh"
|
||||
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"?>
|
||||
|
||||
@@ -22,7 +22,7 @@ if is_Veertu; then
|
||||
fi
|
||||
|
||||
# Change screen resolution to the maximum supported for 4Mb video memory
|
||||
if [ -d "/Library/Application Support/VMware Tools" ]; then
|
||||
if [[ -d "/Library/Application Support/VMware Tools" ]]; then
|
||||
sudo "/Library/Application Support/VMware Tools/vmware-resolutionSet" 1176 885
|
||||
fi
|
||||
|
||||
@@ -43,7 +43,6 @@ defaults write com.apple.VoiceOver4/default SCREnableAppleScript -bool YES
|
||||
|
||||
swiftc -suppress-warnings "${HOME}/image-generation/add-certificate.swift"
|
||||
|
||||
|
||||
certs=(
|
||||
AppleWWDRCAG3.cer
|
||||
DeveloperIDG2CA.cer
|
||||
@@ -52,9 +51,7 @@ for cert in ${certs[@]}; do
|
||||
echo "Adding ${cert} certificate"
|
||||
cert_path="${HOME}/${cert}"
|
||||
curl -fsSL "https://www.apple.com/certificateauthority/${cert}" --output ${cert_path}
|
||||
|
||||
sudo ./add-certificate ${cert_path}
|
||||
|
||||
rm ${cert_path}
|
||||
done
|
||||
|
||||
@@ -63,7 +60,7 @@ rm -f ./add-certificate
|
||||
# enable-automationmode-without-authentication
|
||||
if ! is_BigSur; then
|
||||
retry=10
|
||||
while [ $retry -gt 0 ]; do
|
||||
while [[ $retry -gt 0 ]]; do
|
||||
{
|
||||
osascript <<EOF
|
||||
tell application "Terminal"
|
||||
@@ -80,7 +77,7 @@ EOF
|
||||
} && break
|
||||
|
||||
retry=$((retry-1))
|
||||
if [ $retry -eq 0 ]; then
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
echo "No retry attempts left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -100,7 +97,7 @@ done
|
||||
fi
|
||||
|
||||
# Create symlink for tests running
|
||||
if [ ! -d "/usr/local/bin" ];then
|
||||
if [[ ! -d "/usr/local/bin" ]];then
|
||||
sudo mkdir -p -m 775 /usr/local/bin
|
||||
sudo chown $USER:admin /usr/local/bin
|
||||
fi
|
||||
|
||||
@@ -8,7 +8,7 @@ Launch_Daemons="/Library/LaunchDaemons"
|
||||
|
||||
# EOF in quotes to disable variable expansion
|
||||
echo "Creating limit.maxfiles.plist"
|
||||
cat > "${Launch_Daemons}/limit.maxfiles.plist" << EOF
|
||||
cat > ${Launch_Daemons}/limit.maxfiles.plist << EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
||||
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
@@ -28,18 +28,17 @@ EOF
|
||||
|
||||
# Creating script for applying workaround https://developer.apple.com/forums/thread/735798
|
||||
|
||||
cat > "/Users/runner/limit-maxfiles.sh" << EOF
|
||||
cat > /Users/runner/limit-maxfiles.sh << EOF
|
||||
#!/bin/bash
|
||||
sudo launchctl limit maxfiles 256 unlimited
|
||||
sudo launchctl limit maxfiles 65536 524288
|
||||
EOF
|
||||
|
||||
echo "limit.maxfiles.sh permissions changing"
|
||||
chmod +x "/Users/runner/limit-maxfiles.sh"
|
||||
chmod +x /Users/runner/limit-maxfiles.sh
|
||||
|
||||
echo "limit.maxfiles.plist permissions changing"
|
||||
chown root:wheel "${Launch_Daemons}/limit.maxfiles.plist"
|
||||
chmod 0644 "${Launch_Daemons}/limit.maxfiles.plist"
|
||||
|
||||
chmod 0644 ${Launch_Daemons}/limit.maxfiles.plist
|
||||
|
||||
echo "Done, limit.maxfiles has been updated"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
################################################################################
|
||||
|
||||
PLIST=/Library/LaunchDaemons/sonoma.detectnewhardware.plist
|
||||
cat <<EOF > "${PLIST}"
|
||||
cat <<EOF > ${PLIST}
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
@@ -27,9 +27,8 @@ EOF
|
||||
|
||||
# These should be already set as follows, but since they're required
|
||||
# in order to load properly, we set them explicitly.
|
||||
/bin/chmod 644 "${PLIST}"
|
||||
/usr/sbin/chown root:wheel "${PLIST}"
|
||||
|
||||
/bin/chmod 644 ${PLIST}
|
||||
/usr/sbin/chown root:wheel ${PLIST}
|
||||
|
||||
: '
|
||||
The MIT License (MIT)
|
||||
|
||||
@@ -15,5 +15,5 @@ server time.windows.com
|
||||
EOF
|
||||
|
||||
# Set the timezone to UTC.
|
||||
echo The Timezone setting to UTC...
|
||||
echo "The Timezone setting to UTC..."
|
||||
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
|
||||
|
||||
@@ -21,7 +21,7 @@ else
|
||||
fi
|
||||
release_label="macOS-${label_version}"
|
||||
|
||||
if is_VenturaX64 || is_SonomaX64; then
|
||||
if is_Ventura || is_Sonoma; then
|
||||
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}"
|
||||
else
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
################################################################################
|
||||
|
||||
# set screensaver idleTime to 0, to prevent turning screensaver on
|
||||
macUUID=`ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62`
|
||||
macUUID=$(ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62)
|
||||
|
||||
rm -rf /Users/$USERNAME/Library/Preferences/com.apple.screensaver.$macUUID.plist
|
||||
rm -rf /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.$macUUID.plist
|
||||
|
||||
@@ -22,7 +22,7 @@ systemValuesArray=(
|
||||
"'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',0,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"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
|
||||
"'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
|
||||
@@ -62,7 +62,7 @@ userValuesArray=(
|
||||
"'kTCCServiceAppleEvents','/usr/libexec/sshd-keygen-wrapper',1,2,3,1,X'fade0c000000003c0000000100000006000000020000001d636f6d2e6170706c652e737368642d6b657967656e2d7772617070657200000000000003',NULL,0,'com.apple.Terminal',X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',NULL,1650386089"
|
||||
"'kTCCServicePostEvent','/bin/bash',1,2,0,1,NULL,NULL,NULL,'UNUSED',NULL,0,1583997993"
|
||||
"'kTCCServiceAppleEvents','/usr/local/opt/runner/provisioner/provisioner',1,2,3,1,NULL,NULL,0,'com.apple.finder',X'fade0c000000002c00000001000000060000000200000010636f6d2e6170706c652e66696e64657200000003',NULL,1592919552"
|
||||
"'kTCCServiceScreenCapture','/usr/local/opt/runner/provisioner/provisioner',0,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"
|
||||
"'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
|
||||
|
||||
@@ -13,23 +13,22 @@ if is_Arm64; then
|
||||
fi
|
||||
|
||||
retry=10
|
||||
while [ $retry -gt 0 ]; do
|
||||
while [[ $retry -gt 0 ]]; do
|
||||
openwindows=$(osascript -e 'tell application "System Events" to get every window of (every process whose class of windows contains window)') && break
|
||||
|
||||
retry=$((retry-1))
|
||||
if [ $retry -eq 0 ]; then
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
echo "No retry attempts left"
|
||||
exit 1
|
||||
fi
|
||||
sleep 30
|
||||
done
|
||||
IFS=',' read -r -a windowslist <<< "$openwindows"
|
||||
IFS=',' read -r -a windowslist <<< $openwindows
|
||||
|
||||
if [ -n "${openwindows}" ]; then
|
||||
if [[ -n ${openwindows} ]]; then
|
||||
echo "Found opened window:"
|
||||
fi
|
||||
|
||||
for window in "${windowslist[@]}"; do
|
||||
for window in ${windowslist[@]}; do
|
||||
if [[ $window =~ "NotificationCenter" ]]; then
|
||||
echo "[Warning] $window"
|
||||
else
|
||||
@@ -38,6 +37,6 @@ for window in "${windowslist[@]}"; do
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${scripterror}" = true ]; then
|
||||
if [[ ${scripterror} = true ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: configure-xcode-symlinks.sh
|
||||
## Desc: Link the existing Xcodes into the correct location for provisionator.
|
||||
## This is maintained for backwards compatibility only. Do not add new xcodes here.
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
ln -sf /Applications/Xcode_8.app /Applications/Xcode8.app
|
||||
ln -sf /Applications/Xcode_8.1.app /Applications/Xcode81.app
|
||||
ln -sf /Applications/Xcode_9.app /Applications/Xcode9.app
|
||||
ln -sf /Applications/Xcode_9.1.app /Applications/Xcode91.app
|
||||
ln -sf /Applications/Xcode_9.2.app /Applications/Xcode92.app
|
||||
ln -sf /Applications/Xcode_9.3.app /Applications/Xcode93.app
|
||||
ln -sf /Applications/Xcode_9.3.app /Applications/Xcode_9.3_beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4-beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4_beta.app
|
||||
ln -sf /Applications/Xcode_9.4.app /Applications/Xcode_9.4_beta_2.app
|
||||
@@ -5,6 +5,7 @@
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
XCODE_LIST=($(get_toolset_value '.xcode.versions | reverse | .[].link'))
|
||||
DEFAULT_XCODE_VERSION=$(get_toolset_value '.xcode.default')
|
||||
|
||||
@@ -12,15 +13,14 @@ DEFAULT_XCODE_VERSION=$(get_toolset_value '.xcode.default')
|
||||
# Assets.xcassets : error : CoreData: error: (6922) I/O error for database
|
||||
# at $HOME/Library/Developer/Xcode/UserData/IB Support/Simulator Devices/{GUID}
|
||||
echo "Erase a device's contents and settings:"
|
||||
for XCODE_VERSION in "${XCODE_LIST[@]}"
|
||||
do
|
||||
for XCODE_VERSION in ${XCODE_LIST[@]}; do
|
||||
echo " Xcode Version: ${XCODE_VERSION}"
|
||||
launchctl remove com.apple.CoreSimulator.CoreSimulatorService || true
|
||||
#add sleep to let CoreSimulatorService to exit
|
||||
sleep 3
|
||||
|
||||
# Select xcode version by default
|
||||
sudo xcode-select -s "/Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer"
|
||||
sudo xcode-select -s /Applications/Xcode_${XCODE_VERSION}.app/Contents/Developer
|
||||
|
||||
# Erase a device's contents and settings
|
||||
xcrun simctl erase all
|
||||
@@ -31,4 +31,4 @@ done
|
||||
|
||||
# Select xcode version by default
|
||||
echo "Setting Xcode ${DEFAULT_XCODE_VERSION} as default"
|
||||
sudo xcode-select -s "/Applications/Xcode_${DEFAULT_XCODE_VERSION}.app/Contents/Developer"
|
||||
sudo xcode-select -s /Applications/Xcode_${DEFAULT_XCODE_VERSION}.app/Contents/Developer
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo "Check if ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE folder exist..."
|
||||
if [ ! -d $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE ]; then
|
||||
if [[ ! -d $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE ]]; then
|
||||
mkdir -p $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
fi
|
||||
|
||||
download_url=$(get_github_package_download_url "actions/action-versions" "contains(\"action-versions.tar.gz\")" "latest")
|
||||
download_url=$(resolve_github_release_asset_url "actions/action-versions" "contains(\"action-versions.tar.gz\")" "latest")
|
||||
echo "Downloading action-versions $download_url"
|
||||
archive_path=$(download_with_retry "$download_url")
|
||||
tar -xzf "$archive_path" -C "$ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE"
|
||||
archive_path=$(download_with_retry $download_url)
|
||||
tar -xzf $archive_path -C $ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE
|
||||
|
||||
invoke_tests "ActionArchiveCache"
|
||||
|
||||
@@ -6,39 +6,37 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
function filter_components_by_version {
|
||||
minimumVersion=$1
|
||||
add_filtered_instalaltion_components() {
|
||||
local minimum_version=$1
|
||||
shift
|
||||
toolsArr=("$@")
|
||||
local tools_array=("$@")
|
||||
|
||||
for item in ${toolsArr[@]}
|
||||
do
|
||||
for item in ${tools_array[@]}; do
|
||||
# take the last argument after spliting string by ';'' and '-''
|
||||
version=$(echo "${item##*[-;]}")
|
||||
if verlte $minimumVersion $version
|
||||
then
|
||||
if [[ "$(printf "${minimum_version}\n${version}\n" | sort -V | head -n1)" == "$minimum_version" ]]; then
|
||||
components+=($item)
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
function get_full_ndk_version {
|
||||
majorVersion=$1
|
||||
ndkVersion=$(${SDKMANAGER} --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
||||
get_full_ndk_version() {
|
||||
local majorVersion=$1
|
||||
|
||||
ndkVersion=$(${SDKMANAGER} --list | grep "ndk;${majorVersion}.*" | awk '{gsub("ndk;", ""); print $1}' | sort -V | tail -n1)
|
||||
echo "$ndkVersion"
|
||||
}
|
||||
|
||||
components=()
|
||||
|
||||
ANDROID_PLATFORM=$(get_toolset_value '.android.platform_min_version')
|
||||
ANDROID_BUILD_TOOL=$(get_toolset_value '.android.build_tools_min_version')
|
||||
ANDROID_EXTRA_LIST=($(get_toolset_value '.android."extras"[]'))
|
||||
ANDROID_ADDON_LIST=($(get_toolset_value '.android."addons"[]'))
|
||||
ANDROID_ADDITIONAL_TOOLS=($(get_toolset_value '.android."additional_tools"[]'))
|
||||
ANDROID_NDK_MAJOR_VERSIONS=($(get_toolset_value '.android.ndk."versions"[]'))
|
||||
ANDROID_NDK_MAJOR_DEFAULT=$(get_toolset_value '.android.ndk.default')
|
||||
ANDROID_NDK_MAJOR_LATEST=$(get_toolset_value '.android.ndk."versions"[-1]')
|
||||
android_platform=$(get_toolset_value '.android.platform_min_version')
|
||||
android_build_tool=$(get_toolset_value '.android.build_tools_min_version')
|
||||
android_extra_list=($(get_toolset_value '.android."extras"[]'))
|
||||
android_addon_list=($(get_toolset_value '.android."addons"[]'))
|
||||
android_additional_tools=($(get_toolset_value '.android."additional_tools"[]'))
|
||||
android_ndk_major_versions=($(get_toolset_value '.android.ndk."versions"[]'))
|
||||
android_ndk_major_default=$(get_toolset_value '.android.ndk.default')
|
||||
android_ndk_major_latest=$(get_toolset_value '.android.ndk."versions"[-1]')
|
||||
# Get the latest command line tools from https://developer.android.com/studio#cmdline-tools
|
||||
# Newer version(s) require Java 11 by default
|
||||
# See https://github.com/actions/runner-images/issues/6960
|
||||
@@ -81,15 +79,15 @@ echo "Installing latest tools & platform tools..."
|
||||
echo y | $SDKMANAGER "tools" "platform-tools"
|
||||
|
||||
echo "Installing latest ndk..."
|
||||
for ndk_version in "${ANDROID_NDK_MAJOR_VERSIONS[@]}"
|
||||
for ndk_version in "${android_ndk_major_versions[@]}"
|
||||
do
|
||||
ndk_full_version=$(get_full_ndk_version $ndk_version)
|
||||
echo y | $SDKMANAGER "ndk;$ndk_full_version"
|
||||
done
|
||||
|
||||
ndkDefault=$(get_full_ndk_version $ANDROID_NDK_MAJOR_DEFAULT)
|
||||
ndkDefault=$(get_full_ndk_version $android_ndk_major_default)
|
||||
ANDROID_NDK_HOME=$ANDROID_HOME/ndk/$ndkDefault
|
||||
ndkLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST)
|
||||
ndkLatest=$(get_full_ndk_version $android_ndk_major_latest)
|
||||
ANDROID_NDK_LATEST_HOME=$ANDROID_HOME/ndk/$ndkLatest
|
||||
# ANDROID_NDK, ANDROID_NDK_HOME, and ANDROID_NDK_ROOT variables should be set as many customer builds depend on them https://github.com/actions/runner-images/issues/5879
|
||||
echo "export ANDROID_NDK=$ANDROID_NDK_HOME" >> "${HOME}/.bashrc"
|
||||
@@ -98,27 +96,27 @@ echo "export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME" >> "${HOME}/.bashrc"
|
||||
echo "export ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" >> "${HOME}/.bashrc"
|
||||
|
||||
availablePlatforms=($($SDKMANAGER --list | grep "platforms;android-[0-9]" | cut -d"|" -f 1 | sort -u))
|
||||
filter_components_by_version $ANDROID_PLATFORM "${availablePlatforms[@]}"
|
||||
add_filtered_instalaltion_components $android_platform "${availablePlatforms[@]}"
|
||||
|
||||
allBuildTools=($($SDKMANAGER --list --include_obsolete | grep "build-tools;" | cut -d"|" -f 1 | sort -u))
|
||||
availableBuildTools=$(echo ${allBuildTools[@]//*rc[0-9]/})
|
||||
filter_components_by_version $ANDROID_BUILD_TOOL "${availableBuildTools[@]}"
|
||||
add_filtered_instalaltion_components $android_build_tool "${availableBuildTools[@]}"
|
||||
|
||||
echo "y" | $SDKMANAGER ${components[@]}
|
||||
|
||||
for extra_name in "${ANDROID_EXTRA_LIST[@]}"
|
||||
for extra_name in "${android_extra_list[@]}"
|
||||
do
|
||||
echo "Installing extra $extra_name ..."
|
||||
echo y | $SDKMANAGER "extras;$extra_name"
|
||||
done
|
||||
|
||||
for addon_name in "${ANDROID_ADDON_LIST[@]}"
|
||||
for addon_name in "${android_addon_list[@]}"
|
||||
do
|
||||
echo "Installing add-on $addon_name ..."
|
||||
echo y | $SDKMANAGER "add-ons;$addon_name"
|
||||
done
|
||||
|
||||
for tool_name in "${ANDROID_ADDITIONAL_TOOLS[@]}"
|
||||
for tool_name in "${android_additional_tools[@]}"
|
||||
do
|
||||
echo "Installing additional tool $tool_name ..."
|
||||
echo y | $SDKMANAGER "$tool_name"
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing aws...
|
||||
echo "Installing aws..."
|
||||
awscliv2_pkg_path=$(download_with_retry "https://awscli.amazonaws.com/AWSCLIV2.pkg")
|
||||
sudo installer -pkg "$awscliv2_pkg_path" -target /
|
||||
|
||||
echo Installing aws sam cli...
|
||||
echo "Installing aws sam cli..."
|
||||
brew tap aws/tap
|
||||
brew_smart_install aws-sam-cli
|
||||
|
||||
|
||||
@@ -5,18 +5,19 @@
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
arch=$(get_arch)
|
||||
|
||||
# Check MacOS architecture and if ARM install using brew
|
||||
if [ "$arch" == "arm64" ]; then
|
||||
brew_smart_install azcopy
|
||||
if is_Arm64; then
|
||||
url="https://aka.ms/downloadazcopy-v10-mac-arm64"
|
||||
else
|
||||
# Temporary pin 10.21.2 version of AzCopy until 10.22.0 is fixed
|
||||
archive_path=$(download_with_retry "https://azcopyvnext.azureedge.net/releases/release-10.21.2-20231106/azcopy_darwin_amd64_10.21.2.zip")
|
||||
unzip -qq "$archive_path" -d /tmp/azcopy
|
||||
extract_path=$(echo /tmp/azcopy/azcopy*)
|
||||
cp "$extract_path/azcopy" "/usr/local/bin/azcopy"
|
||||
chmod +x "/usr/local/bin/azcopy"
|
||||
url="https://aka.ms/downloadazcopy-v10-mac"
|
||||
fi
|
||||
|
||||
# Install AzCopy
|
||||
archive_path=$(download_with_retry ${url})
|
||||
unzip -qq $archive_path -d /tmp/azcopy
|
||||
extract_path=$(echo /tmp/azcopy/azcopy*)
|
||||
cp $extract_path/azcopy /usr/local/bin/azcopy
|
||||
chmod +x /usr/local/bin/azcopy
|
||||
|
||||
|
||||
invoke_tests "Common" "AzCopy"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing bicep cli...
|
||||
echo "Installing bicep cli..."
|
||||
brew tap azure/bicep
|
||||
brew_smart_install bicep
|
||||
|
||||
|
||||
@@ -11,40 +11,40 @@ echo "Installing Google Chrome..."
|
||||
brew install --cask google-chrome
|
||||
|
||||
# Parse Google Chrome version
|
||||
FULL_CHROME_VERSION=$("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version)
|
||||
FULL_CHROME_VERSION=${FULL_CHROME_VERSION#Google Chrome }
|
||||
CHROME_VERSION=${FULL_CHROME_VERSION%.*}
|
||||
echo "Google Chrome version is $FULL_CHROME_VERSION"
|
||||
full_chrome_version=$("/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version)
|
||||
full_chrome_version=${full_chrome_version#Google Chrome }
|
||||
chrome_version=${full_chrome_version%.*}
|
||||
echo "Google Chrome version is $full_chrome_version"
|
||||
|
||||
# Get Google Chrome versions information
|
||||
CHROME_PLATFORM="mac-$arch"
|
||||
chrome_platform="mac-$arch"
|
||||
CHROME_VERSIONS_URL="https://googlechromelabs.github.io/chrome-for-testing/latest-patch-versions-per-build-with-downloads.json"
|
||||
CHROME_VERSIONS_JSON="$(cat "$(download_with_retry "$CHROME_VERSIONS_URL")")"
|
||||
chrome_versions_json="$(cat $(download_with_retry "$CHROME_VERSIONS_URL"))"
|
||||
|
||||
# Download and unpack the latest release of Chrome Driver
|
||||
CHROMEDRIVER_VERSION=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].version')
|
||||
echo "Installing Chrome Driver version $CHROMEDRIVER_VERSION"
|
||||
chromedriver_version=$(echo $chrome_versions_json | jq -r '.builds["'"$chrome_version"'"].version')
|
||||
echo "Installing Chrome Driver version $chromedriver_version"
|
||||
|
||||
CHROMEDRIVER_URL=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].downloads.chromedriver[] | select(.platform=="'"${CHROME_PLATFORM}"'").url')
|
||||
CHROMEDRIVER_DIR="/usr/local/share/chromedriver-${CHROME_PLATFORM}"
|
||||
CHROMEDRIVER_BIN="$CHROMEDRIVER_DIR/chromedriver"
|
||||
chromedriver_url=$(echo $chrome_versions_json | jq -r '.builds["'"$chrome_version"'"].downloads.chromedriver[] | select(.platform=="'"${chrome_platform}"'").url')
|
||||
chromedriver_dir="/usr/local/share/chromedriver-$chrome_platform"
|
||||
chromedriver_bin="$chromedriver_dir/chromedriver"
|
||||
|
||||
CHROMEDRIVER_ARCHIVE_PATH=$(download_with_retry "$CHROMEDRIVER_URL")
|
||||
unzip -qq "$CHROMEDRIVER_ARCHIVE_PATH" -d /tmp/
|
||||
sudo mv "/tmp/chromedriver-${CHROME_PLATFORM}" "$CHROMEDRIVER_DIR"
|
||||
ln -s "$CHROMEDRIVER_BIN" /usr/local/bin/chromedriver
|
||||
echo "export CHROMEWEBDRIVER=$CHROMEDRIVER_DIR" >> "${HOME}/.bashrc"
|
||||
chromedriver_archive_path=$(download_with_retry $chromedriver_url)
|
||||
unzip -qq $chromedriver_archive_path -d /tmp/
|
||||
sudo mv /tmp/chromedriver-$chrome_platform $chromedriver_dir
|
||||
ln -s $chromedriver_bin /usr/local/bin/chromedriver
|
||||
echo "export CHROMEWEBDRIVER=$chromedriver_dir" >> ${HOME}/.bashrc
|
||||
|
||||
# Download and unpack the latest release of Google Chrome for Testing
|
||||
CHROME_FOR_TESTING_VERSION=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].version')
|
||||
echo "Installing Google Chrome for Testing version $CHROME_FOR_TESTING_VERSION"
|
||||
chrome_for_testing_version=$(echo $chrome_versions_json | jq -r '.builds["'"$chrome_version"'"].version')
|
||||
echo "Installing Google Chrome for Testing version $chrome_for_testing_version"
|
||||
|
||||
CHROME_FOR_TESTING_URL=$(echo "${CHROME_VERSIONS_JSON}" | jq -r '.builds["'"$CHROME_VERSION"'"].downloads.chrome[] | select(.platform=="'"${CHROME_PLATFORM}"'").url')
|
||||
CHROME_FOR_TESTING_APP="Google Chrome for Testing.app"
|
||||
chrome_for_testing_url=$(echo $chrome_versions_json | jq -r '.builds["'"$chrome_version"'"].downloads.chrome[] | select(.platform=="'"${chrome_platform}"'").url')
|
||||
chrome_for_testing_app="Google Chrome for Testing.app"
|
||||
|
||||
CHROME_FOR_TESTING_ARCHIVE_PATH=$(download_with_retry "$CHROME_FOR_TESTING_URL")
|
||||
unzip -qq "$CHROME_FOR_TESTING_ARCHIVE_PATH" -d /tmp/
|
||||
mv "/tmp/chrome-${CHROME_PLATFORM}/${CHROME_FOR_TESTING_APP}" "/Applications/${CHROME_FOR_TESTING_APP}"
|
||||
chrome_for_testing_archive_path=$(download_with_retry $chrome_for_testing_url)
|
||||
unzip -qq $chrome_for_testing_archive_path -d /tmp/
|
||||
mv "/tmp/chrome-$chrome_platform/$chrome_for_testing_app" "/Applications/$chrome_for_testing_app"
|
||||
|
||||
echo "Installing Selenium"
|
||||
brew_smart_install "selenium-server"
|
||||
|
||||
@@ -8,7 +8,7 @@ source ~/utils/utils.sh
|
||||
|
||||
# Retrieve the CLI version of the latest CodeQL bundle.
|
||||
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_version=$(jq -r '.cliVersion' $defaults_json_path)
|
||||
bundle_tag_name="codeql-bundle-v$bundle_version"
|
||||
|
||||
echo "Downloading CodeQL bundle $bundle_version..."
|
||||
@@ -16,17 +16,17 @@ echo "Downloading CodeQL bundle $bundle_version..."
|
||||
# different operating systems within containers.
|
||||
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"
|
||||
codeql_toolcache_path=$AGENT_TOOLSDIRECTORY/CodeQL/$bundle_version/x64
|
||||
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"
|
||||
|
||||
@@ -28,9 +28,9 @@ for package in $cask_packages; do
|
||||
# Do not update VirtualBox on macOS 12 due to the issue with VMs in gurumediation state which blocks Vagrant on macOS: https://github.com/actions/runner-images/issues/8730
|
||||
# macOS host: Dropped all kernel extensions. VirtualBox relies fully on the hypervisor and vmnet frameworks provided by Apple now.
|
||||
virtualbox_cask_path=$(download_with_retry "https://raw.githubusercontent.com/Homebrew/homebrew-cask/aa3c55951fc9d687acce43e5c0338f42c1ddff7b/Casks/virtualbox.rb")
|
||||
brew install "$virtualbox_cask_path"
|
||||
brew install $virtualbox_cask_path
|
||||
else
|
||||
brew install --cask "$package"
|
||||
brew install --cask $package
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -51,7 +51,7 @@ if is_Monterey; then
|
||||
osascript $HOME/utils/confirm-identified-developers.scpt $USER_PASSWORD
|
||||
} && break
|
||||
|
||||
if [ "$retry" -eq 0 ]; then
|
||||
if [[ $retry -eq 0 ]]; then
|
||||
echo "Executing AppleScript failed. No retries left"
|
||||
exit 1
|
||||
fi
|
||||
@@ -75,23 +75,20 @@ if is_Monterey; then
|
||||
dbQuery="SELECT * FROM kext_policy WHERE bundle_id LIKE 'com.parallels.kext.%';"
|
||||
kext=$(sudo sqlite3 $dbName "$dbQuery")
|
||||
|
||||
if [ -z "$kext" ]; then
|
||||
if [[ -z $kext ]]; then
|
||||
echo "Parallels International GmbH not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create env variable
|
||||
url=$(brew info --json=v2 --installed | jq -r '.casks[] | select(.name[] == "Parallels Desktop").url')
|
||||
if [ -z "$url" ]; then
|
||||
if [[ -z $url ]]; then
|
||||
echo "Unable to parse url for Parallels Desktop cask"
|
||||
exit 1
|
||||
fi
|
||||
echo "export PARALLELS_DMG_URL=$url" >> "${HOME}/.bashrc"
|
||||
echo "export PARALLELS_DMG_URL=$url" >> ${HOME}/.bashrc
|
||||
fi
|
||||
|
||||
# Invoke bazel to download bazel version via bazelisk
|
||||
bazel
|
||||
|
||||
# Install Azure DevOps extension for Azure Command Line Interface
|
||||
az extension add -n azure-devops
|
||||
|
||||
|
||||
@@ -13,32 +13,32 @@ arch=$(get_arch)
|
||||
# Download installer from dot.net and keep it locally
|
||||
DOTNET_INSTALL_SCRIPT="https://dot.net/v1/dotnet-install.sh"
|
||||
install_script_path=$(download_with_retry $DOTNET_INSTALL_SCRIPT)
|
||||
chmod +x "$install_script_path"
|
||||
chmod +x $install_script_path
|
||||
|
||||
ARGS_LIST=()
|
||||
args_list=()
|
||||
echo "Parsing dotnet SDK (except rc and preview versions) from .json..."
|
||||
|
||||
DOTNET_VERSIONS=($(get_toolset_value ".dotnet.arch[\"$arch\"].versions | .[]"))
|
||||
dotnet_versions=($(get_toolset_value ".dotnet.arch[\"$arch\"].versions | .[]"))
|
||||
|
||||
for DOTNET_VERSION in "${DOTNET_VERSIONS[@]}"; do
|
||||
RELEASE_URL="https://raw.githubusercontent.com/dotnet/core/main/release-notes/${DOTNET_VERSION}/releases.json"
|
||||
releases_json_file=$(download_with_retry "$RELEASE_URL")
|
||||
for dotnet_version in ${dotnet_versions[@]}; do
|
||||
release_url="https://raw.githubusercontent.com/dotnet/core/main/release-notes/${dotnet_version}/releases.json"
|
||||
releases_json_file=$(download_with_retry "$release_url")
|
||||
|
||||
if [[ $DOTNET_VERSION == "6.0" ]]; then
|
||||
ARGS_LIST+=(
|
||||
$(cat "$releases_json_file" | jq -r 'first(.releases[].sdks[]?.version | select(contains("preview") or contains("rc") | not))')
|
||||
if [[ $dotnet_version == "6.0" ]]; then
|
||||
args_list+=(
|
||||
$(cat $releases_json_file | jq -r 'first(.releases[].sdks[]?.version | select(contains("preview") or contains("rc") | not))')
|
||||
)
|
||||
else
|
||||
ARGS_LIST+=(
|
||||
$(cat "$releases_json_file" | \
|
||||
args_list+=(
|
||||
$(cat $releases_json_file | \
|
||||
jq -r '.releases[].sdk."version"' | grep -v -E '\-(preview|rc)\d*' | \
|
||||
sort -r | rev | uniq -s 2 | rev)
|
||||
)
|
||||
fi
|
||||
done
|
||||
|
||||
for ARGS in "${ARGS_LIST[@]}"; do
|
||||
"$install_script_path" --version $ARGS -NoPath --arch $arch
|
||||
for ARGS in ${args_list[@]}; do
|
||||
$install_script_path --version $ARGS -NoPath --arch $arch
|
||||
done
|
||||
|
||||
# dotnet installer doesn't create symlink to executable in /user/local/bin
|
||||
@@ -46,12 +46,12 @@ done
|
||||
ln -s ~/.dotnet/dotnet /usr/local/bin/dotnet
|
||||
|
||||
# Validate installation
|
||||
if [ $(dotnet --list-sdks | wc -l) -lt "1" ]; then
|
||||
if [[ $(dotnet --list-sdks | wc -l) -lt "1" ]]; then
|
||||
echo "The .NET Core SDK is not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> "$HOME/.bashrc"
|
||||
echo 'export PATH="$PATH:$HOME/.dotnet/tools"' >> $HOME/.bashrc
|
||||
echo "Dotnet operations have been completed successfully..."
|
||||
|
||||
invoke_tests "Common" ".NET"
|
||||
|
||||
@@ -10,30 +10,30 @@ echo "Installing Microsoft Edge..."
|
||||
brew install --cask microsoft-edge
|
||||
|
||||
EDGE_INSTALLATION_PATH="/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
|
||||
EDGE_VERSION=$("$EDGE_INSTALLATION_PATH" --version | cut -d' ' -f 3)
|
||||
EDGE_VERSION_MAJOR=$(echo $EDGE_VERSION | cut -d'.' -f 1)
|
||||
edge_version=$("$EDGE_INSTALLATION_PATH" --version | cut -d' ' -f 3)
|
||||
edge_version_major=$(echo $edge_version | cut -d'.' -f 1)
|
||||
|
||||
echo "Version of Microsoft Edge: ${EDGE_VERSION}"
|
||||
echo "Version of Microsoft Edge: ${edge_version}"
|
||||
|
||||
echo "Installing Microsoft Edge WebDriver..."
|
||||
|
||||
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')
|
||||
EDGE_DRIVER_URL="https://msedgedriver.azureedge.net/${EDGE_DRIVER_LATEST_VERSION}/edgedriver_mac64.zip"
|
||||
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')
|
||||
edge_driver_url="https://msedgedriver.azureedge.net/${edge_driver_latest_version}/edgedriver_mac64.zip"
|
||||
|
||||
echo "Compatible version of WebDriver: ${EDGE_DRIVER_LATEST_VERSION}"
|
||||
echo "Compatible version of WebDriver: ${edge_driver_latest_version}"
|
||||
|
||||
EDGE_DRIVER_ARCHIVE_PATH=$(download_with_retry "$EDGE_DRIVER_URL")
|
||||
edge_driver_archive_path=$(download_with_retry "$edge_driver_url")
|
||||
|
||||
# Move webdriver to the separate directory to be consistent with the docs
|
||||
# https://docs.microsoft.com/en-us/azure/devops/pipelines/test/continuous-test-selenium?view=azure-devops#decide-how-you-will-deploy-and-test-your-app
|
||||
|
||||
EDGE_DRIVER_DIR="/usr/local/share/edge_driver"
|
||||
mkdir -p $EDGE_DRIVER_DIR
|
||||
unzip -qq "$EDGE_DRIVER_ARCHIVE_PATH" -d "$EDGE_DRIVER_DIR"
|
||||
ln -s "$EDGE_DRIVER_DIR/msedgedriver" "/usr/local/bin/msedgedriver"
|
||||
unzip -qq $edge_driver_archive_path -d $EDGE_DRIVER_DIR
|
||||
ln -s $EDGE_DRIVER_DIR/msedgedriver /usr/local/bin/msedgedriver
|
||||
|
||||
echo "export EDGEWEBDRIVER=${EDGE_DRIVER_DIR}" >> "${HOME}/.bashrc"
|
||||
echo "export EDGEWEBDRIVER=${EDGE_DRIVER_DIR}" >> ${HOME}/.bashrc
|
||||
|
||||
# Configure Edge Updater to prevent auto update
|
||||
# https://learn.microsoft.com/en-us/deployedge/edge-learnmore-edgeupdater-for-macos
|
||||
|
||||
@@ -14,6 +14,6 @@ brew_smart_install "geckodriver"
|
||||
geckoPath="$(brew --prefix geckodriver)/bin"
|
||||
|
||||
echo "Add GECKOWEBDRIVER to bashrc..."
|
||||
echo "export GECKOWEBDRIVER=${geckoPath}" >> "${HOME}/.bashrc"
|
||||
echo "export GECKOWEBDRIVER=${geckoPath}" >> ${HOME}/.bashrc
|
||||
|
||||
invoke_tests "Browsers" "Firefox"
|
||||
|
||||
@@ -14,7 +14,7 @@ done
|
||||
|
||||
# Delete default gfortran link if it exists https://github.com/actions/runner-images/issues/1280
|
||||
gfortranPath=$(which gfortran) || true
|
||||
if [ $gfortranPath ]; then
|
||||
if [[ $gfortranPath ]]; then
|
||||
rm $gfortranPath
|
||||
fi
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing Git...
|
||||
echo "Installing Git..."
|
||||
brew_smart_install "git"
|
||||
|
||||
git config --global --add safe.directory "*"
|
||||
|
||||
echo Installing Git LFS
|
||||
echo "Installing Git LFS"
|
||||
brew_smart_install "git-lfs"
|
||||
|
||||
# Update global git config
|
||||
@@ -19,7 +19,7 @@ git lfs install
|
||||
# Update system git config
|
||||
sudo git lfs install --system
|
||||
|
||||
echo Disable all the Git help messages...
|
||||
echo "Disable all the Git help messages..."
|
||||
git config --global advice.pushUpdateRejected false
|
||||
git config --global advice.pushNonFFCurrent false
|
||||
git config --global advice.pushNonFFMatching false
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
DEFAULT_GO_VERSION=$(get_toolset_value '.go.default')
|
||||
default_go_version=$(get_toolset_value '.go.default')
|
||||
echo "Installing Go..."
|
||||
brew_smart_install "go@${DEFAULT_GO_VERSION}"
|
||||
brew_smart_install "go@${default_go_version}"
|
||||
|
||||
# Create symlinks to preserve backward compatibility. Symlinks are not created when non-latest go is being installed
|
||||
ln -sf $(brew --prefix go@${DEFAULT_GO_VERSION})/bin/* /usr/local/bin/
|
||||
ln -sf $(brew --prefix go@${default_go_version})/bin/* /usr/local/bin/
|
||||
|
||||
invoke_tests "Common" "Go"
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
curl --proto '=https' --tlsv1.2 -fsSL https://get-ghcup.haskell.org | sh
|
||||
curl --proto '=https' --tlsv1.2 -fsSL https://get-ghcup.haskell.org | bash
|
||||
export PATH="$HOME/.ghcup/bin:$PATH"
|
||||
echo 'export PATH="$PATH:$HOME/.ghcup/bin"' >> "$HOME/.bashrc"
|
||||
echo 'export PATH="$PATH:$HOME/.ghcup/bin"' >> $HOME/.bashrc
|
||||
|
||||
# ghcup output looks like this "ghc 8.6.4 base-4.12.0.0 hls-powered", need to take all the first versions only(8.6.4 in that case) and avoid pre-release ones
|
||||
availableVersions=$(ghcup list -t ghc -r | grep -v "prerelease" | awk '{print $2}')
|
||||
|
||||
@@ -10,7 +10,7 @@ arch=$(get_arch)
|
||||
|
||||
echo "Installing Homebrew..."
|
||||
homebrew_installer_path=$(download_with_retry "https://raw.githubusercontent.com/Homebrew/install/master/install.sh")
|
||||
/bin/bash "$homebrew_installer_path"
|
||||
/bin/bash $homebrew_installer_path
|
||||
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
/opt/homebrew/bin/brew update
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
source ~/utils/utils.sh
|
||||
|
||||
miniconda_installer_path=$(download_with_retry "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh")
|
||||
chmod +x "$miniconda_installer_path"
|
||||
sudo "$miniconda_installer_path" -b -p /usr/local/miniconda
|
||||
chmod +x $miniconda_installer_path
|
||||
sudo $miniconda_installer_path -b -p /usr/local/miniconda
|
||||
|
||||
# Chmod with full permissions recursively to avoid permissions restrictions
|
||||
sudo chmod -R 777 /usr/local/miniconda
|
||||
|
||||
sudo ln -s /usr/local/miniconda/bin/conda /usr/local/bin/conda
|
||||
|
||||
if [ -d "$HOME/.conda" ]; then
|
||||
sudo chown -R $USER "$HOME/.conda"
|
||||
if [[ -d $HOME/.conda ]]; then
|
||||
sudo chown -R $USER $HOME/.conda
|
||||
fi
|
||||
|
||||
echo "export CONDA=/usr/local/miniconda" >> $HOME/.bashrc
|
||||
|
||||
@@ -14,10 +14,10 @@ toolsetVersion=$(get_toolset_value '.mongodb.version')
|
||||
brew tap mongodb/brew
|
||||
versionToInstall=$(brew search --formulae /mongodb-community@$toolsetVersion/ | awk -F'/' '{print $3}' | tail -1)
|
||||
echo "Installing mongodb $versionToInstall"
|
||||
brew_smart_install "$versionToInstall"
|
||||
brew_smart_install $versionToInstall
|
||||
|
||||
if ! which mongo ; then
|
||||
brew link "$versionToInstall"
|
||||
brew link $versionToInstall
|
||||
fi
|
||||
|
||||
invoke_tests "Databases" "MongoDB"
|
||||
|
||||
@@ -4,45 +4,48 @@
|
||||
## Desc: Install Mono Framework
|
||||
################################################################################
|
||||
|
||||
# Source utility functions
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Install Mono Framework
|
||||
MONO_VERSION_FULL=$(get_toolset_value '.mono.framework.version')
|
||||
MONO_VERSION=$(echo "$MONO_VERSION_FULL" | cut -d. -f 1,2,3)
|
||||
MONO_VERSION_SHORT=$(echo $MONO_VERSION_FULL | cut -d. -f 1,2)
|
||||
MONO_PKG_URL="https://download.mono-project.com/archive/${MONO_VERSION}/macos-10-universal/MonoFramework-MDK-${MONO_VERSION_FULL}.macos10.xamarin.universal.pkg"
|
||||
mono_version_full=$(get_toolset_value '.mono.framework.version')
|
||||
mono_pkg_sha256=$(get_toolset_value '.mono.framework.sha256')
|
||||
mono_version=$(echo $mono_version_full | cut -d. -f 1,2,3)
|
||||
mono_version_short=$(echo $mono_version_full | cut -d. -f 1,2)
|
||||
mono_pkg_url="https://download.mono-project.com/archive/${mono_version}/macos-10-universal/MonoFramework-MDK-${mono_version_full}.macos10.xamarin.universal.pkg"
|
||||
MONO_VERSIONS_PATH='/Library/Frameworks/Mono.framework/Versions'
|
||||
|
||||
MONO_PKG_PATH=$(download_with_retry "$MONO_PKG_URL")
|
||||
echo "Installing Mono Framework ${MONO_VERSION_FULL}..."
|
||||
sudo installer -pkg "$MONO_PKG_PATH" -target /
|
||||
mono_pkg_path=$(download_with_retry $mono_pkg_url)
|
||||
use_checksum_comparison $mono_pkg_path $mono_pkg_sha256
|
||||
echo "Installing Mono Framework ${mono_version_full}..."
|
||||
sudo installer -pkg $mono_pkg_path -target /
|
||||
|
||||
# Download and install NUnit console
|
||||
NUNIT_VERSION=$(get_toolset_value '.mono.nunit.version')
|
||||
NUNIT_ARCHIVE_URL="https://github.com/nunit/nunit-console/releases/download/${NUNIT_VERSION}/NUnit.Console-${NUNIT_VERSION}.zip"
|
||||
nunit_version=$(get_toolset_value '.mono.nunit.version')
|
||||
nunit_archive_url="https://github.com/nunit/nunit-console/releases/download/${nunit_version}/NUnit.Console-${nunit_version}.zip"
|
||||
nunit_archive_sha256=$(get_toolset_value '.mono.nunit.sha256')
|
||||
NUNIT_PATH="/Library/Developer/nunit"
|
||||
NUNIT_VERSION_PATH="$NUNIT_PATH/$NUNIT_VERSION"
|
||||
nunit_version_path=$NUNIT_PATH/$nunit_version
|
||||
|
||||
NUNIT_ARCHIVE_PATH=$(download_with_retry "$NUNIT_ARCHIVE_URL")
|
||||
echo "Installing NUnit ${NUNIT_VERSION}..."
|
||||
sudo mkdir -p "$NUNIT_VERSION_PATH"
|
||||
sudo unzip -q "$NUNIT_ARCHIVE_PATH" -d "$NUNIT_VERSION_PATH"
|
||||
nunit_archive_path=$(download_with_retry $nunit_archive_url)
|
||||
use_checksum_comparison $nunit_archive_path $nunit_archive_sha256
|
||||
echo "Installing NUnit ${nunit_version}..."
|
||||
sudo mkdir -p $nunit_version_path
|
||||
sudo unzip -q $nunit_archive_path -d $nunit_version_path
|
||||
|
||||
# Create a wrapper script for nunit3-console
|
||||
echo "Creating nunit3-console wrapper..."
|
||||
NUNIT3_CONSOLE_WRAPPER=$(mktemp)
|
||||
cat <<EOF > "$NUNIT3_CONSOLE_WRAPPER"
|
||||
nunit3_console_wrapper=$(mktemp)
|
||||
cat <<EOF > "$nunit3_console_wrapper"
|
||||
#!/bin/bash -e -o pipefail
|
||||
exec ${MONO_VERSIONS_PATH}/${MONO_VERSION}/bin/mono --debug \$MONO_OPTIONS $NUNIT_VERSION_PATH/nunit3-console.exe "\$@"
|
||||
exec ${MONO_VERSIONS_PATH}/${mono_version}/bin/mono --debug \$MONO_OPTIONS $nunit_version_path/nunit3-console.exe "\$@"
|
||||
EOF
|
||||
cat "$NUNIT3_CONSOLE_WRAPPER"
|
||||
sudo chmod +x "$NUNIT3_CONSOLE_WRAPPER"
|
||||
sudo mv "$NUNIT3_CONSOLE_WRAPPER" "${MONO_VERSIONS_PATH}/${MONO_VERSION}/Commands/nunit3-console"
|
||||
cat $nunit3_console_wrapper
|
||||
sudo chmod +x $nunit3_console_wrapper
|
||||
sudo mv $nunit3_console_wrapper "${MONO_VERSIONS_PATH}/${mono_version}/Commands/nunit3-console"
|
||||
|
||||
# Create a symlink for the short version of Mono (e.g., 6.12)
|
||||
echo "Creating short symlink '${MONO_VERSION_SHORT}'..."
|
||||
sudo ln -s "${MONO_VERSIONS_PATH}/${MONO_VERSION}" "${MONO_VERSIONS_PATH}/${MONO_VERSION_SHORT}"
|
||||
echo "Creating short symlink '${mono_version_short}'..."
|
||||
sudo ln -s ${MONO_VERSIONS_PATH}/${mono_version} ${MONO_VERSIONS_PATH}/${mono_version_short}
|
||||
|
||||
# Invoke tests for Xamarin and Mono
|
||||
invoke_tests "Xamarin" "Mono"
|
||||
|
||||
@@ -14,7 +14,7 @@ brew link node@$defaultVersion --force --overwrite
|
||||
|
||||
echo Installing yarn...
|
||||
yarn_installer_path=$(download_with_retry "https://yarnpkg.com/install.sh")
|
||||
bash "$yarn_installer_path"
|
||||
bash $yarn_installer_path
|
||||
|
||||
if is_BigSur || is_Monterey; then
|
||||
npm_global_packages=$(get_toolset_value '.npm.global_packages[].name')
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
|
||||
[[ -n $API_PAT ]] && authString=(-H "Authorization: token ${API_PAT}")
|
||||
nvm_version=$(curl "${authString[@]}" -fsSL https://api.github.com/repos/nvm-sh/nvm/releases/latest | jq -r '.tag_name')
|
||||
nvm_installer_path=$(download_with_retry "https://raw.githubusercontent.com/nvm-sh/nvm/$nvm_version/install.sh")
|
||||
|
||||
if bash "$nvm_installer_path"; then
|
||||
. ~/.bashrc
|
||||
if bash $nvm_installer_path; then
|
||||
source ~/.bashrc
|
||||
nvm --version
|
||||
for version in $(get_toolset_value '.node.nvm_versions[]'); do
|
||||
nvm install "v${version}"
|
||||
@@ -19,7 +19,6 @@ if bash "$nvm_installer_path"; then
|
||||
|
||||
# set system node as default
|
||||
nvm alias default system
|
||||
|
||||
echo "Node version manager has been installed successfully"
|
||||
else
|
||||
echo "Node version manager installation failed"
|
||||
|
||||
@@ -18,15 +18,15 @@ createEnvironmentVariable() {
|
||||
|
||||
if [[ ${DEFAULT} == "True" ]]; then
|
||||
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
|
||||
echo "export JAVA_HOME=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
|
||||
echo "export JAVA_HOME=${INSTALL_PATH_PATTERN}" >> ${HOME}/.bashrc
|
||||
fi
|
||||
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
echo "Setting up JAVA_HOME_${JAVA_VERSION}_arm64 variable to ${INSTALL_PATH_PATTERN}"
|
||||
echo "export JAVA_HOME_${JAVA_VERSION}_arm64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
|
||||
echo "export JAVA_HOME_${JAVA_VERSION}_arm64=${INSTALL_PATH_PATTERN}" >> ${HOME}/.bashrc
|
||||
else
|
||||
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
|
||||
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
|
||||
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> ${HOME}/.bashrc
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -58,12 +58,12 @@ installOpenJDK() {
|
||||
fi
|
||||
|
||||
# Download and extract Java binaries
|
||||
archive_path=$(download_with_retry "$archive_url")
|
||||
archive_path=$(download_with_retry $archive_url)
|
||||
|
||||
echo "Creating ${javaToolcacheVersionArchPath} directory"
|
||||
mkdir -p ${javaToolcacheVersionArchPath}
|
||||
|
||||
tar -xf "$archive_path" -C ${javaToolcacheVersionArchPath} --strip-components=1
|
||||
tar -xf $archive_path -C ${javaToolcacheVersionArchPath} --strip-components=1
|
||||
|
||||
# Create complete file
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
|
||||
@@ -8,19 +8,11 @@ source ~/utils/utils.sh
|
||||
|
||||
export PATH="$PATH:/opt/pipx_bin"
|
||||
|
||||
toolset=$(get_toolset_path)
|
||||
pipx_packages=$(jq -r ".pipx[] .package" $toolset)
|
||||
pipx_packages=$(get_toolset_value '.pipx[].package')
|
||||
|
||||
for package in $pipx_packages; do
|
||||
python_version=$(jq -r ".pipx[] | select(.package == \"$package\") .python" $toolset)
|
||||
if [ "$python_version" != "null" ]; then
|
||||
python_path="$HOME/hostedtoolcache/Python/$python_version*/x64/bin/python$python_version"
|
||||
echo "Install $package into python $python_path"
|
||||
pipx install $package --python $python_path
|
||||
else
|
||||
echo "Install $package into default python"
|
||||
pipx install $package
|
||||
fi
|
||||
echo "Install $package into default python"
|
||||
pipx install $package
|
||||
done
|
||||
|
||||
invoke_tests "PipxPackages"
|
||||
|
||||
@@ -20,11 +20,11 @@ brew services start $postgreService
|
||||
echo "Check PostgreSQL service is running"
|
||||
i=10
|
||||
COMMAND='pg_isready'
|
||||
while [ $i -gt 0 ]; do
|
||||
while [[ $i -gt 0 ]]; do
|
||||
echo "Check PostgreSQL service status"
|
||||
eval $COMMAND && break
|
||||
((i--))
|
||||
if [ $i == 0 ]; then
|
||||
if [[ $i == 0 ]]; then
|
||||
echo "PostgreSQL service not ready, all attempts exhausted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -10,21 +10,29 @@ echo Installing PowerShell...
|
||||
arch=$(get_arch)
|
||||
|
||||
metadata_json_path=$(download_with_retry "https://raw.githubusercontent.com/PowerShell/PowerShell/master/tools/metadata.json")
|
||||
version=$(jq -r '.LTSReleaseTag[0]' "$metadata_json_path")
|
||||
download_url=$(get_github_package_download_url "PowerShell/PowerShell" "contains(\"osx-$arch.pkg\")" "$version" "$API_PAT")
|
||||
pkg_path=$(download_with_retry "$download_url")
|
||||
pwshVersionToolset=$(get_toolset_value '.pwsh.version')
|
||||
pwshVersions=$(jq -r '.LTSReleaseTag[]' $metadata_json_path)
|
||||
|
||||
for version in ${pwshVersions[@]}; do
|
||||
if [[ "$version" =~ "$pwshVersionToolset" ]]; then
|
||||
download_url=$(resolve_github_release_asset_url "PowerShell/PowerShell" "contains(\"osx-$arch.pkg\")" "$version" "$API_PAT")
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
pkg_path=$(download_with_retry $download_url)
|
||||
|
||||
# Work around the issue on macOS Big Sur 11.5 or higher for possible error message ("can't be opened because Apple cannot check it for malicious software") when installing the package
|
||||
sudo xattr -rd com.apple.quarantine "$pkg_path"
|
||||
sudo xattr -rd com.apple.quarantine $pkg_path
|
||||
|
||||
sudo installer -pkg "$pkg_path" -target /
|
||||
sudo installer -pkg $pkg_path -target /
|
||||
|
||||
# Install PowerShell modules
|
||||
psModules=$(get_toolset_value '.powershellModules[].name')
|
||||
for module in ${psModules[@]}; do
|
||||
echo "Installing $module module"
|
||||
moduleVersions="$(get_toolset_value ".powershellModules[] | select(.name==\"$module\") | .versions[]?")"
|
||||
if [[ -z "$moduleVersions" ]];then
|
||||
if [[ -z $moduleVersions ]];then
|
||||
# Check MacOS architecture and sudo on Arm64
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
sudo pwsh -command "& {Install-Module $module -Force -Scope AllUsers}"
|
||||
|
||||
@@ -6,23 +6,22 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
function InstallPyPy
|
||||
{
|
||||
PACKAGE_URL=$1
|
||||
InstallPyPy() {
|
||||
local package_url=$1
|
||||
|
||||
PACKAGE_TAR_NAME=$(basename "$PACKAGE_URL")
|
||||
PACKAGE_TAR_NAME=$(basename $package_url)
|
||||
echo "Downloading tar archive '$PACKAGE_TAR_NAME'"
|
||||
archive_path=$(download_with_retry "$PACKAGE_URL")
|
||||
archive_path=$(download_with_retry $package_url)
|
||||
|
||||
echo "Expand '$PACKAGE_TAR_NAME' to the /tmp folder"
|
||||
tar xf "$archive_path" -C /tmp
|
||||
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
|
||||
if [[ $MAJOR_VERSION != 2 ]]; then
|
||||
PYPY_MAJOR="pypy$MAJOR_VERSION"
|
||||
else
|
||||
PYPY_MAJOR="pypy"
|
||||
@@ -40,14 +39,14 @@ function InstallPyPy
|
||||
PYPY_TOOLCACHE_VERSION_ARCH_PATH=$PYPY_TOOLCACHE_VERSION_PATH/x64
|
||||
|
||||
echo "Check if PyPy hostedtoolcache folder exist..."
|
||||
if [ ! -d $PYPY_TOOLCACHE_PATH ]; then
|
||||
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"
|
||||
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)"
|
||||
@@ -58,8 +57,8 @@ function InstallPyPy
|
||||
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
|
||||
[[ -f ./$PYTHON_MAJOR ]] || ln -s $PYPY_MAJOR $PYTHON_MAJOR
|
||||
[[ -f ./python ]] || ln -s $PYTHON_MAJOR python
|
||||
|
||||
chmod +x ./python ./$PYTHON_MAJOR
|
||||
|
||||
@@ -76,12 +75,12 @@ versions_json_path=$(download_with_retry "https://downloads.python.org/pypy/vers
|
||||
toolsetVersions=$(get_toolset_value '.toolcache[] | select(.name | contains("PyPy")) | .arch.'$arch'.versions[]')
|
||||
|
||||
for toolsetVersion in $toolsetVersions; do
|
||||
latestMajorPyPyVersion=$(cat "$versions_json_path" |
|
||||
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'"
|
||||
if [[ -z $latestMajorPyPyVersion ]]; then
|
||||
echo "Failed to get PyPy version $toolsetVersion"
|
||||
exit 1
|
||||
fi
|
||||
InstallPyPy $latestMajorPyPyVersion
|
||||
|
||||
@@ -11,18 +11,20 @@ echo "Installing Python Tooling"
|
||||
if is_Monterey || is_BigSur; then
|
||||
echo "Install latest Python 2"
|
||||
python2_pkg=$(download_with_retry "https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg")
|
||||
python2_pkg_sha256="c570f38b05dd8b112ad21b418cdf51a9816d62f9f44746452739d421be24d50c"
|
||||
use_checksum_comparison $python2_pkg $python2_pkg_sha256
|
||||
|
||||
choice_changes_xml=$(mktemp /tmp/python2_choice_changes.xml.XXXXXX)
|
||||
sudo installer -showChoiceChangesXML -pkg "$python2_pkg" -target / | tee "$choice_changes_xml" > /dev/null
|
||||
sudo installer -showChoiceChangesXML -pkg $python2_pkg -target / | tee $choice_changes_xml > /dev/null
|
||||
|
||||
# To avoid symlink conflicts, remove tools installation in /usr/local/bin using installer choices
|
||||
xmllint --shell "$choice_changes_xml" <<EOF
|
||||
xmllint --shell $choice_changes_xml <<EOF
|
||||
cd //array/dict[string[text()='org.python.Python.PythonUnixTools-2.7']]/integer
|
||||
set 0
|
||||
save
|
||||
EOF
|
||||
|
||||
sudo installer -applyChoiceChangesXML "$choice_changes_xml" -pkg "$python2_pkg" -target /
|
||||
sudo installer -applyChoiceChangesXML $choice_changes_xml -pkg $python2_pkg -target /
|
||||
|
||||
pip install --upgrade pip
|
||||
|
||||
@@ -44,8 +46,8 @@ export PIPX_HOME=/usr/local/opt/pipx
|
||||
|
||||
brew_smart_install "pipx"
|
||||
|
||||
echo "export PIPX_BIN_DIR=${PIPX_BIN_DIR}" >> "${HOME}/.bashrc"
|
||||
echo "export PIPX_HOME=${PIPX_HOME}" >> "${HOME}/.bashrc"
|
||||
echo 'export PATH="$PIPX_BIN_DIR:$PATH"' >> "${HOME}/.bashrc"
|
||||
echo "export PIPX_BIN_DIR=${PIPX_BIN_DIR}" >> ${HOME}/.bashrc
|
||||
echo "export PIPX_HOME=${PIPX_HOME}" >> ${HOME}/.bashrc
|
||||
echo 'export PATH="$PIPX_BIN_DIR:$PATH"' >> ${HOME}/.bashrc
|
||||
|
||||
invoke_tests "Python"
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
## Desc: Install Rosetta
|
||||
################################################################################
|
||||
|
||||
echo 'Installing Rosetta'
|
||||
echo "Installing Rosetta"
|
||||
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
|
||||
|
||||
@@ -8,7 +8,7 @@ source ~/utils/utils.sh
|
||||
|
||||
arch=$(get_arch)
|
||||
DEFAULT_RUBY_VERSION=$(get_toolset_value '.ruby.default')
|
||||
echo Installing Ruby...
|
||||
echo "Installing Ruby..."
|
||||
brew_smart_install "ruby@${DEFAULT_RUBY_VERSION}"
|
||||
if [[ $arch == "arm64" ]]; then
|
||||
export PATH=/opt/homebrew/opt/ruby@${DEFAULT_RUBY_VERSION}/bin:$PATH
|
||||
@@ -16,12 +16,12 @@ else
|
||||
export PATH=/usr/local/opt/ruby@${DEFAULT_RUBY_VERSION}/bin:$PATH
|
||||
fi
|
||||
|
||||
GEM_PATH=`gem env|awk '/EXECUTABLE DIRECTORY/ {print $4}'`
|
||||
echo "GEM_PATH=$GEM_PATH" >> "$HOME/.bashrc"
|
||||
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"
|
||||
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"
|
||||
echo 'export PATH="$GEM_PATH:/usr/local/opt/ruby@'${DEFAULT_RUBY_VERSION}'/bin:$PATH"' >> $HOME/.bashrc
|
||||
fi
|
||||
|
||||
if ! is_Arm64; then
|
||||
@@ -29,13 +29,13 @@ if ! is_Arm64; then
|
||||
[ -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"
|
||||
RUBY_PATH=$AGENT_TOOLSDIRECTORY/Ruby
|
||||
|
||||
echo "Check if Ruby hostedtoolcache folder exists..."
|
||||
if [ ! -d $RUBY_PATH ]; then
|
||||
if [[ ! -d $RUBY_PATH ]]; then
|
||||
mkdir -p $RUBY_PATH
|
||||
fi
|
||||
|
||||
echo "ruby path - $RUBY_PATH "
|
||||
for TOOLSET_VERSION in ${TOOLSET_VERSIONS[@]}; do
|
||||
PACKAGE_TAR_NAME=$(echo "$PACKAGE_TAR_NAMES" | grep "^ruby-${TOOLSET_VERSION}-macos-latest.tar.gz$" | egrep -v "rc|preview" | sort -V | tail -1)
|
||||
RUBY_VERSION=$(echo "$PACKAGE_TAR_NAME" | cut -d'-' -f 2)
|
||||
@@ -47,10 +47,10 @@ if ! is_Arm64; then
|
||||
echo "Downloading tar archive $PACKAGE_TAR_NAME"
|
||||
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
|
||||
COMPLETE_FILE_PATH="$RUBY_VERSION_PATH/x64.complete"
|
||||
if [ ! -f $COMPLETE_FILE_PATH ]; then
|
||||
echo "Expand $PACKAGE_TAR_NAME to the $RUBY_VERSION_PATH folder"
|
||||
tar xf $ARCHIVE_PATH -C $RUBY_VERSION_PATH
|
||||
COMPLETE_FILE_PATH=$RUBY_VERSION_PATH/x64.complete
|
||||
if [[ ! -f $COMPLETE_FILE_PATH ]]; then
|
||||
echo "Create complete file"
|
||||
touch $COMPLETE_FILE_PATH
|
||||
fi
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Updating RubyGems...
|
||||
echo "Updating RubyGems..."
|
||||
gem update --system
|
||||
|
||||
# Temporarily install activesupport 7.0.8 due to compatibility issues with cocoapods https://github.com/CocoaPods/CocoaPods/issues/12081
|
||||
gem install activesupport -v 7.0.8
|
||||
|
||||
gemsToInstall=$(get_toolset_value '.ruby.rubygems | .[]')
|
||||
if [ -n "$gemsToInstall" ]; then
|
||||
if [[ -n $gemsToInstall ]]; then
|
||||
for gem in $gemsToInstall; do
|
||||
echo "Installing gem $gem"
|
||||
gem install $gem
|
||||
|
||||
@@ -6,23 +6,23 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing Rustup...
|
||||
echo "Installing Rustup..."
|
||||
brew_smart_install "rustup-init"
|
||||
|
||||
echo Installing Rust language...
|
||||
echo "Installing Rust language..."
|
||||
rustup-init -y --no-modify-path --default-toolchain=stable --profile=minimal
|
||||
|
||||
echo Initialize environment variables...
|
||||
echo "Initialize environment variables..."
|
||||
CARGO_HOME=$HOME/.cargo
|
||||
|
||||
echo Install common tools...
|
||||
echo "Install common tools..."
|
||||
rustup component add rustfmt clippy
|
||||
|
||||
if is_BigSur || is_Monterey; then
|
||||
cargo install --locked bindgen-cli cbindgen cargo-audit cargo-outdated
|
||||
fi
|
||||
|
||||
echo Cleanup Cargo registry cached data...
|
||||
echo "Cleanup Cargo registry cached data..."
|
||||
rm -rf $CARGO_HOME/registry/*
|
||||
|
||||
invoke_tests "Rust"
|
||||
|
||||
@@ -13,7 +13,7 @@ sudo safaridriver --enable
|
||||
echo "Enabling the 'Allow Remote Automation' option in Safari's Develop menu"
|
||||
mkdir -p $HOME/Library/WebDriver
|
||||
safari_plist="$HOME/Library/WebDriver/com.apple.Safari.plist"
|
||||
# "|| true" is needed to suppress exit code 1 in case if property or file doesn't exist
|
||||
# "|| true" is needed to suppress exit code 1 in case if property or file doesn't exist
|
||||
/usr/libexec/PlistBuddy -c 'delete AllowRemoteAutomation' $safari_plist || true
|
||||
/usr/libexec/PlistBuddy -c 'add AllowRemoteAutomation bool true' $safari_plist
|
||||
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
echo Installing Swiftlint...
|
||||
echo "Installing Swiftlint..."
|
||||
if is_BigSur; then
|
||||
# SwiftLint now requires Swift 5.6 or higher to build, and macOS 12 or higher to run https://github.com/realm/SwiftLint/releases/tag/0.49.0
|
||||
COMMIT=d1d5743344227fe6e3c37cfba19f0cfe15a9448a
|
||||
FORMULA_URL="https://raw.githubusercontent.com/Homebrew/homebrew-core/$COMMIT/Formula/swiftlint.rb"
|
||||
|
||||
curl -fsSL "$FORMULA_URL" > $(find $(brew --repository) -name swiftlint.rb)
|
||||
curl -fsSL $FORMULA_URL > $(find $(brew --repository) -name swiftlint.rb)
|
||||
HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_FROM_API=1 brew install swiftlint
|
||||
else
|
||||
brew_smart_install "swiftlint"
|
||||
|
||||
@@ -8,45 +8,45 @@ source ~/utils/utils.sh
|
||||
source ~/utils/xamarin-utils.sh
|
||||
|
||||
install_vsmac() {
|
||||
local VSMAC_VERSION=$1
|
||||
local VSMAC_DEFAULT=$2
|
||||
if [ $VSMAC_VERSION == "2019" ]; then
|
||||
VSMAC_DOWNLOAD_URL=$(curl -fsSL "https://aka.ms/manifest/stable" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
elif [ $VSMAC_VERSION == "2022" ]; then
|
||||
VSMAC_DOWNLOAD_URL=$(curl -fsSL "https://aka.ms/manifest/stable-2022" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
elif [ $VSMAC_VERSION == "preview" ]; then
|
||||
VSMAC_DOWNLOAD_URL=$(curl -fsSL "https://aka.ms/manifest/preview" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
local vsmac_version=$1
|
||||
local vsmac_default=$2
|
||||
if [[ $vsmac_version == "2019" ]]; then
|
||||
vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/stable" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
elif [[ $vsmac_version == "2022" ]]; then
|
||||
vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/stable-2022" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
elif [[ $vsmac_version == "preview" ]]; then
|
||||
vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/preview" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url')
|
||||
else
|
||||
VSMAC_DOWNLOAD_URL=$(buildVSMacDownloadUrl $VSMAC_VERSION)
|
||||
vsmac_download_url=$(buildVSMacDownloadUrl $vsmac_version)
|
||||
fi
|
||||
|
||||
echo "Installing Visual Studio ${VSMAC_VERSION} for Mac"
|
||||
echo "Installing Visual Studio ${vsmac_version} for Mac"
|
||||
TMPMOUNT=$(/usr/bin/mktemp -d /tmp/visualstudio.XXXX)
|
||||
mkdir -p "$TMPMOUNT/downloads"
|
||||
|
||||
VSMAC_INSTALLER=$(download_with_retry "$VSMAC_DOWNLOAD_URL" "$TMPMOUNT/downloads/${VSMAC_DOWNLOAD_URL##*/}")
|
||||
vsmac_installer=$(download_with_retry $vsmac_download_url "$TMPMOUNT/downloads/${vsmac_download_url##*/}")
|
||||
|
||||
echo "Mounting Visual Studio..."
|
||||
hdiutil attach "$VSMAC_INSTALLER" -mountpoint "$TMPMOUNT"
|
||||
hdiutil attach $vsmac_installer -mountpoint $TMPMOUNT
|
||||
|
||||
echo "Moving Visual Studio to /Applications/..."
|
||||
pushd "$TMPMOUNT"
|
||||
pushd $TMPMOUNT
|
||||
tar cf - "./Visual Studio.app" | tar xf - -C /Applications/
|
||||
|
||||
if [ $VSMAC_VERSION != $VSMAC_DEFAULT ]; then
|
||||
mv "/Applications/Visual Studio.app" "/Applications/Visual Studio ${VSMAC_VERSION}.app"
|
||||
if [[ $vsmac_version != $vsmac_default ]]; then
|
||||
mv "/Applications/Visual Studio.app" "/Applications/Visual Studio ${vsmac_version}.app"
|
||||
fi
|
||||
|
||||
popd
|
||||
sudo hdiutil detach "$TMPMOUNT"
|
||||
sudo rm -rf "$TMPMOUNT"
|
||||
sudo hdiutil detach $TMPMOUNT
|
||||
sudo rm -rf $TMPMOUNT
|
||||
}
|
||||
|
||||
VSMAC_VERSIONS=($(get_toolset_value '.xamarin.vsmac.versions[]'))
|
||||
DEFAULT_VSMAC_VERSION=$(get_toolset_value '.xamarin.vsmac.default')
|
||||
vsmac_versions=($(get_toolset_value '.xamarin.vsmac.versions[]'))
|
||||
default_vsmac_version=$(get_toolset_value '.xamarin.vsmac.default')
|
||||
|
||||
for VERSION in "${VSMAC_VERSIONS[@]}"; do
|
||||
install_vsmac $VERSION $DEFAULT_VSMAC_VERSION
|
||||
for version in ${vsmac_versions[@]}; do
|
||||
install_vsmac $version $default_vsmac_version
|
||||
done
|
||||
|
||||
invoke_tests "Common" "VSMac"
|
||||
|
||||
@@ -7,25 +7,25 @@
|
||||
source ~/utils/utils.sh
|
||||
source ~/utils/xamarin-utils.sh
|
||||
|
||||
MONO_VERSIONS=($(get_toolset_value '.xamarin."mono_versions" | reverse | .[]'))
|
||||
XAMARIN_IOS_VERSIONS=($(get_toolset_value '.xamarin."ios_versions" | reverse | .[]'))
|
||||
XAMARIN_MAC_VERSIONS=($(get_toolset_value '.xamarin."mac_versions" | reverse | .[]'))
|
||||
XAMARIN_ANDROID_VERSIONS=($(get_toolset_value '.xamarin."android_versions" | reverse | .[]'))
|
||||
LATEST_SDK_SYMLINK=$(get_toolset_value '.xamarin.bundles[0].symlink')
|
||||
CURRENT_SDK_SYMLINK=$(get_toolset_value '.xamarin."bundle_default"')
|
||||
DEFAULT_XCODE_VERSION=$(get_toolset_value '.xcode.default')
|
||||
mono_versions=($(get_toolset_value '.xamarin."mono_versions" | reverse | .[]'))
|
||||
xamarin_ios_versions=($(get_toolset_value '.xamarin."ios_versions" | reverse | .[]'))
|
||||
xamarin_mac_versions=($(get_toolset_value '.xamarin."mac_versions" | reverse | .[]'))
|
||||
xamarin_android_versions=($(get_toolset_value '.xamarin."android_versions" | reverse | .[]'))
|
||||
latest_sdk_symlink=$(get_toolset_value '.xamarin.bundles[0].symlink')
|
||||
current_sdk_symlink=$(get_toolset_value '.xamarin."bundle_default"')
|
||||
default_xcode_version=$(get_toolset_value '.xcode.default')
|
||||
|
||||
if [ "$CURRENT_SDK_SYMLINK" == "latest" ]; then
|
||||
CURRENT_SDK_SYMLINK=$LATEST_SDK_SYMLINK
|
||||
if [[ $current_sdk_symlink == "latest" ]]; then
|
||||
current_sdk_symlink=$latest_sdk_symlink
|
||||
fi
|
||||
|
||||
MONO_VERSIONS_PATH='/Library/Frameworks/Mono.framework/Versions'
|
||||
IOS_VERSIONS_PATH='/Library/Frameworks/Xamarin.iOS.framework/Versions'
|
||||
ANDROID_VERSIONS_PATH='/Library/Frameworks/Xamarin.Android.framework/Versions'
|
||||
MAC_VERSIONS_PATH='/Library/Frameworks/Xamarin.Mac.framework/Versions'
|
||||
MONO_VERSIONS_PATH="/Library/Frameworks/Mono.framework/Versions"
|
||||
IOS_VERSIONS_PATH="/Library/Frameworks/Xamarin.iOS.framework/Versions"
|
||||
ANDROID_VERSIONS_PATH="/Library/Frameworks/Xamarin.Android.framework/Versions"
|
||||
MAC_VERSIONS_PATH="/Library/Frameworks/Xamarin.Mac.framework/Versions"
|
||||
|
||||
TMPMOUNT=`/usr/bin/mktemp -d /tmp/visualstudio.XXXX`
|
||||
TMPMOUNT_FRAMEWORKS="$TMPMOUNT/frameworks"
|
||||
TMPMOUNT=$(/usr/bin/mktemp -d /tmp/visualstudio.XXXX)
|
||||
TMPMOUNT_FRAMEWORKS=$TMPMOUNT/frameworks
|
||||
createBackupFolders
|
||||
|
||||
pushd $TMPMOUNT
|
||||
@@ -34,36 +34,36 @@ pushd $TMPMOUNT
|
||||
downloadNUnitConsole
|
||||
|
||||
# Install Mono sdks
|
||||
for VERSION in "${MONO_VERSIONS[@]}"; do installMono $VERSION; done
|
||||
for version in ${mono_versions[@]}; do installMono $version; done
|
||||
sudo mv -v $TMPMOUNT_FRAMEWORKS/mono/* $MONO_VERSIONS_PATH/
|
||||
|
||||
# Install Xamarin.iOS sdks
|
||||
for VERSION in "${XAMARIN_IOS_VERSIONS[@]}"; do installXamarinIOS $VERSION; done
|
||||
for version in ${xamarin_ios_versions[@]}; do installXamarinIOS $version; done
|
||||
sudo mv -v $TMPMOUNT_FRAMEWORKS/ios/* $IOS_VERSIONS_PATH/
|
||||
|
||||
# Install Xamarin.Mac sdks
|
||||
for VERSION in "${XAMARIN_MAC_VERSIONS[@]}"; do installXamarinMac $VERSION; done
|
||||
for version in ${xamarin_mac_versions[@]}; do installXamarinMac $version; done
|
||||
sudo mv -v $TMPMOUNT_FRAMEWORKS/mac/* $MAC_VERSIONS_PATH/
|
||||
|
||||
# Install Xamarin.Android sdks
|
||||
for VERSION in "${XAMARIN_ANDROID_VERSIONS[@]}"; do installXamarinAndroid $VERSION; done
|
||||
for version in ${xamarin_android_versions[@]}; do installXamarinAndroid $version; done
|
||||
sudo mv -v $TMPMOUNT_FRAMEWORKS/android/* $ANDROID_VERSIONS_PATH/
|
||||
|
||||
|
||||
# Create bundles
|
||||
BUNDLES_COUNT=$(get_toolset_value '.xamarin.bundles | length')
|
||||
for ((BUNDLE_INDEX=0; BUNDLE_INDEX<BUNDLES_COUNT; BUNDLE_INDEX++)); do
|
||||
SYMLINK=$(get_toolset_value ".xamarin.bundles[$BUNDLE_INDEX].symlink")
|
||||
MONO=$(get_toolset_value ".xamarin.bundles[$BUNDLE_INDEX].mono")
|
||||
IOS=$(get_toolset_value ".xamarin.bundles[$BUNDLE_INDEX].ios")
|
||||
MAC=$(get_toolset_value ".xamarin.bundles[$BUNDLE_INDEX].mac")
|
||||
ANDROID=$(get_toolset_value ".xamarin.bundles[$BUNDLE_INDEX].android")
|
||||
createBundle $SYMLINK $MONO $IOS $MAC $ANDROID
|
||||
bundles_count=$(get_toolset_value '.xamarin.bundles | length')
|
||||
for ((bundle_index=0; bundle_index<bundles_count; bundle_index++)); do
|
||||
symlink=$(get_toolset_value ".xamarin.bundles[$bundle_index].symlink")
|
||||
mono=$(get_toolset_value ".xamarin.bundles[$bundle_index].mono")
|
||||
ios=$(get_toolset_value ".xamarin.bundles[$bundle_index].ios")
|
||||
mac=$(get_toolset_value ".xamarin.bundles[$bundle_index].mac")
|
||||
android=$(get_toolset_value ".xamarin.bundles[$bundle_index].android")
|
||||
createBundle $symlink $mono $ios $mac $android
|
||||
done
|
||||
|
||||
# Symlinks for the latest Xamarin bundle
|
||||
createBundleLink $LATEST_SDK_SYMLINK "Latest"
|
||||
createBundleLink $CURRENT_SDK_SYMLINK "Current"
|
||||
createBundleLink $latest_sdk_symlink "Latest"
|
||||
createBundleLink $current_sdk_symlink "Current"
|
||||
|
||||
#
|
||||
# Fix nuget in some mono versions because of known bugs
|
||||
@@ -75,15 +75,18 @@ createUWPShim
|
||||
popd
|
||||
|
||||
echo "Clean up packages..."
|
||||
sudo rm -rf "$TMPMOUNT"
|
||||
sudo rm -rf $TMPMOUNT
|
||||
|
||||
# Fix Xamarin issue with Xcode symlink: https://github.com/xamarin/xamarin-macios/issues/9960
|
||||
PREFERENCES_XAMARIN_DIR="${HOME}/Library/Preferences/Xamarin"
|
||||
mkdir -p $PREFERENCES_XAMARIN_DIR
|
||||
/usr/libexec/PlistBuddy -c "add :AppleSdkRoot string /Applications/Xcode_${DEFAULT_XCODE_VERSION}.app" $PREFERENCES_XAMARIN_DIR/Settings.plist
|
||||
/usr/libexec/PlistBuddy -c "add :AppleSdkRoot string /Applications/Xcode_${default_xcode_version}.app" $PREFERENCES_XAMARIN_DIR/Settings.plist
|
||||
|
||||
# Temporary workaround to recreate nuget.config file with a correct feed https://github.com/actions/runner-images/issues/5768
|
||||
rm -rf $HOME/.config/NuGet/NuGet.Config
|
||||
nuget config
|
||||
|
||||
# Temporary workaround to point Mono to the proper NUnit console
|
||||
sudo sed -Ei '' 's/3.6.0/3.6.1/' /Library/Frameworks/Mono.framework/Versions/Current/Commands/nunit3-console
|
||||
|
||||
invoke_tests "Xamarin"
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
source ~/utils/utils.sh
|
||||
|
||||
is_clt_installed() {
|
||||
clt_path=`xcode-select -p 2>&1`
|
||||
[[ -d "$clt_path" ]]
|
||||
clt_path=$(xcode-select -p 2>&1)
|
||||
[[ -d $clt_path ]]
|
||||
}
|
||||
|
||||
install_clt() {
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/bin/bash -e -o pipefail
|
||||
################################################################################
|
||||
## File: install-xcode-simulators.sh
|
||||
## Desc: Install Xcode simulators
|
||||
################################################################################
|
||||
|
||||
source ~/utils/utils.sh
|
||||
|
||||
# Downloading and installing simulators
|
||||
SIMS_TO_INSTALL=(
|
||||
"8.4"
|
||||
"9.0"
|
||||
"9.1"
|
||||
"9.2"
|
||||
"9.3"
|
||||
"10.0"
|
||||
"10.1"
|
||||
"10.2"
|
||||
"10.3"
|
||||
)
|
||||
|
||||
for SIM_VERSION in ${SIMS_TO_INSTALL[@]}
|
||||
do
|
||||
echo "Installing iOS $SIM_VERSION ..."
|
||||
sudo xcversion simulators --install="iOS ${SIM_VERSION}"
|
||||
echo "Successfuly installed iOS $SIM_VERSION ..."
|
||||
done
|
||||
|
||||
echo "Done installing simulator runtimes."
|
||||
@@ -38,7 +38,9 @@ $languageAndRuntime.AddToolVersion("Bash", $(Get-BashVersion))
|
||||
$languageAndRuntime.AddNodes($(Get-ClangLLVMVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-GccVersions))
|
||||
$languageAndRuntime.AddNodes($(Get-FortranVersions))
|
||||
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion))
|
||||
@@ -51,7 +53,7 @@ if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersionsListInline("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+')
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
if ((-not $os.IsBigSur) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
|
||||
}
|
||||
|
||||
@@ -62,7 +64,9 @@ if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("R", $(Get-RVersion))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$languageAndRuntime.AddToolVersion("R", $(Get-RVersion))
|
||||
}
|
||||
$languageAndRuntime.AddToolVersion("Ruby", $(Get-RubyVersion))
|
||||
|
||||
# Package Management
|
||||
@@ -70,7 +74,7 @@ $packageManagement = $installedSoftware.AddHeader("Package Management")
|
||||
$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion))
|
||||
$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion))
|
||||
$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion))
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
if ((-not $os.IsBigSur) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
|
||||
}
|
||||
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
|
||||
@@ -124,7 +128,7 @@ $utilities.AddToolVersion("gpg (GnuPG)", $(Get-GPGVersion))
|
||||
if ($os.IsBigSur) {
|
||||
$utilities.AddToolVersion("helm", $(Get-HelmVersion))
|
||||
}
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
if ((-not $os.IsBigSur) -and (-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion))
|
||||
}
|
||||
$utilities.AddToolVersion("jq", $(Get-JqVersion))
|
||||
@@ -212,27 +216,26 @@ $java = $installedSoftware.AddHeader("Java")
|
||||
$java.AddTable($(Get-JavaVersions))
|
||||
|
||||
# Toolcache
|
||||
if (-not $os.IsSonoma) {
|
||||
$toolcache = $installedSoftware.AddHeader("Cached Tools")
|
||||
$toolcache.AddNodes($(Build-ToolcacheSection))
|
||||
|
||||
# Rust
|
||||
$rust = $installedSoftware.AddHeader("Rust Tools")
|
||||
$rust.AddToolVersion("Cargo", $(Get-RustCargoVersion))
|
||||
$rust.AddToolVersion("Rust", $(Get-RustVersion))
|
||||
$rust.AddToolVersion("Rustdoc", $(Get-RustdocVersion))
|
||||
$rust.AddToolVersion("Rustup", $(Get-RustupVersion))
|
||||
$toolcache = $installedSoftware.AddHeader("Cached Tools")
|
||||
$toolcache.AddNodes($(Build-ToolcacheSection))
|
||||
|
||||
$rustPackages = $rust.AddHeader("Packages")
|
||||
if (-not $os.IsVentura) {
|
||||
$rustPackages.AddToolVersion("Bindgen", $(Get-Bindgen))
|
||||
$rustPackages.AddToolVersion("Cargo-audit", $(Get-Cargoaudit))
|
||||
$rustPackages.AddToolVersion("Cargo-outdated", $(Get-Cargooutdated))
|
||||
$rustPackages.AddToolVersion("Cbindgen", $(Get-Cbindgen))
|
||||
}
|
||||
$rustPackages.AddToolVersion("Clippy", $(Get-RustClippyVersion))
|
||||
$rustPackages.AddToolVersion("Rustfmt", $(Get-RustfmtVersion))
|
||||
# Rust
|
||||
$rust = $installedSoftware.AddHeader("Rust Tools")
|
||||
$rust.AddToolVersion("Cargo", $(Get-RustCargoVersion))
|
||||
$rust.AddToolVersion("Rust", $(Get-RustVersion))
|
||||
$rust.AddToolVersion("Rustdoc", $(Get-RustdocVersion))
|
||||
$rust.AddToolVersion("Rustup", $(Get-RustupVersion))
|
||||
|
||||
$rustPackages = $rust.AddHeader("Packages")
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$rustPackages.AddToolVersion("Bindgen", $(Get-Bindgen))
|
||||
$rustPackages.AddToolVersion("Cargo-audit", $(Get-Cargoaudit))
|
||||
$rustPackages.AddToolVersion("Cargo-outdated", $(Get-Cargooutdated))
|
||||
$rustPackages.AddToolVersion("Cbindgen", $(Get-Cbindgen))
|
||||
}
|
||||
$rustPackages.AddToolVersion("Clippy", $(Get-RustClippyVersion))
|
||||
$rustPackages.AddToolVersion("Rustfmt", $(Get-RustfmtVersion))
|
||||
|
||||
# PowerShell
|
||||
$powerShell = $installedSoftware.AddHeader("PowerShell Tools")
|
||||
@@ -275,9 +278,10 @@ Get-XcodeInfoList | Out-Null
|
||||
|
||||
$xcodeInfo = Get-XcodeInfoList
|
||||
$xcode.AddTable($(Build-XcodeTable $xcodeInfo))
|
||||
|
||||
$xcodeTools = $xcode.AddHeader("Xcode Support Tools")
|
||||
$xcodeTools.AddNodes($(Build-XcodeSupportToolsSection))
|
||||
if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
|
||||
$xcodeTools = $xcode.AddHeader("Xcode Support Tools")
|
||||
$xcodeTools.AddNodes($(Build-XcodeSupportToolsSection))
|
||||
}
|
||||
|
||||
$installedSdks = $xcode.AddHeader("Installed SDKs")
|
||||
$installedSdks.AddTable($(Build-XcodeSDKTable $xcodeInfo))
|
||||
|
||||
@@ -154,7 +154,7 @@ function Build-OSInfoSection {
|
||||
)
|
||||
|
||||
$fieldsToInclude = @("System Version:", "Kernel Version:")
|
||||
$rawSystemInfo = Invoke-Expression "system_profiler SPSoftwareDataType"
|
||||
$rawSystemInfo = Run-Command "system_profiler SPSoftwareDataType"
|
||||
$parsedSystemInfo = $rawSystemInfo | Where-Object { -not ($_ | Select-String -NotMatch $fieldsToInclude) } | ForEach-Object { $_.Trim() }
|
||||
$parsedSystemInfo[0] -match "System Version: macOS (?<version>\d+)" | Out-Null
|
||||
$version = $Matches.Version
|
||||
@@ -169,12 +169,12 @@ function Build-OSInfoSection {
|
||||
}
|
||||
|
||||
function Get-MonoVersion {
|
||||
$monoVersion = mono --version | Out-String | Take-Part -Part 4
|
||||
$monoVersion = Run-Command "mono --version" | Out-String | Take-Part -Part 4
|
||||
return $monoVersion
|
||||
}
|
||||
|
||||
function Get-MSBuildVersion {
|
||||
$msbuildVersion = msbuild -version | Select-Object -Last 1
|
||||
$msbuildVersion = Run-Command "msbuild -version" | Select-Object -Last 1
|
||||
$monoVersion = Get-MonoVersion
|
||||
return "$msbuildVersion (Mono $monoVersion)"
|
||||
}
|
||||
@@ -250,7 +250,7 @@ function Get-NuGetVersion {
|
||||
}
|
||||
|
||||
function Get-CondaVersion {
|
||||
$condaVersion = Invoke-Expression "conda --version"
|
||||
$condaVersion = Run-Command "conda --version"
|
||||
return ($condaVersion -replace "^conda").Trim()
|
||||
}
|
||||
|
||||
@@ -312,7 +312,7 @@ function Get-SVNVersion {
|
||||
|
||||
function Get-PackerVersion {
|
||||
# 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 -Command "packer --version"
|
||||
$result = Run-Command "packer --version"
|
||||
$packerVersion = [regex]::matches($result, "(\d+.){2}\d+").Value
|
||||
return $packerVersion
|
||||
}
|
||||
@@ -538,22 +538,22 @@ function Get-JazzyVersion {
|
||||
}
|
||||
|
||||
function Get-ZlibVersion {
|
||||
$zlibVersion = brew info --json zlib | jq -r '.[].installed[].version'
|
||||
$zlibVersion = (Run-Command "brew info --json zlib" | ConvertFrom-Json).installed.version
|
||||
return $zlibVersion
|
||||
}
|
||||
|
||||
function Get-LibXftVersion {
|
||||
$libXftVersion = brew info --json libxft | jq -r '.[].installed[].version'
|
||||
$libXftVersion = (Run-Command "brew info --json libxft" | ConvertFrom-Json).installed.version
|
||||
return $libXftVersion
|
||||
}
|
||||
|
||||
function Get-LibXextVersion {
|
||||
$libXextVersion = brew info --json libxext | jq -r '.[].installed[].version'
|
||||
$libXextVersion = (Run-Command "brew info --json libxext" | ConvertFrom-Json).installed.version
|
||||
return $libXextVersion
|
||||
}
|
||||
|
||||
function Get-TclTkVersion {
|
||||
$tcltkVersion = brew info --json tcl-tk | jq -r '.[].installed[].version'
|
||||
$tcltkVersion = (Run-Command "brew info --json tcl-tk" | ConvertFrom-Json).installed.version
|
||||
return $tcltkVersion
|
||||
}
|
||||
|
||||
|
||||
@@ -37,10 +37,14 @@ function Build-ToolcacheSection {
|
||||
|
||||
$nodes = @()
|
||||
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) {
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")
|
||||
)
|
||||
}
|
||||
if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
|
||||
$nodes += @(
|
||||
[ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List"),
|
||||
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")
|
||||
[ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List")
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -40,9 +40,17 @@ function Get-OSVersion {
|
||||
}
|
||||
}
|
||||
|
||||
# Get the value of the toolset
|
||||
function Get-ToolsetContent {
|
||||
$toolsetPath = Join-Path $env:HOME "image-generation" "toolset.json"
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Retrieves the content of the toolset.json file.
|
||||
|
||||
.DESCRIPTION
|
||||
This function reads the toolset.json in path provided by IMAGE_FOLDER
|
||||
environment variable and returns the content as a PowerShell object.
|
||||
#>
|
||||
|
||||
$toolsetPath = Join-Path $env:IMAGE_FOLDER "toolset.json"
|
||||
$toolsetJson = Get-Content -Path $toolsetPath -Raw
|
||||
ConvertFrom-Json -InputObject $toolsetJson
|
||||
}
|
||||
|
||||
@@ -6,7 +6,9 @@ function Install-XcodeVersion {
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Version,
|
||||
[Parameter(Mandatory)]
|
||||
[string] $LinkTo
|
||||
[string] $LinkTo,
|
||||
[Parameter(Mandatory)]
|
||||
[string] $Sha256Sum
|
||||
)
|
||||
|
||||
$xcodeDownloadDirectory = "$env:HOME/Library/Caches/XcodeInstall"
|
||||
@@ -28,7 +30,14 @@ function Invoke-DownloadXcodeArchive {
|
||||
$tempXipDirectory = New-Item -Path $DownloadDirectory -Name "Xcode$Version" -ItemType "Directory"
|
||||
$xcodeFileName = 'Xcode-{0}.xip' -f $Version
|
||||
$xcodeUri = '{0}{1}?{2}'-f ${env:XCODE_INSTALL_STORAGE_URL}, $xcodeFileName, ${env:XCODE_INSTALL_SAS}
|
||||
Invoke-DownloadWithRetry -Url $xcodeUri -Path (Join-Path $tempXipDirectory.FullName $xcodeFileName) | Out-Null
|
||||
$xcodeFullPath = Join-Path $tempXipDirectory.FullName $xcodeFileName
|
||||
Invoke-DownloadWithRetry -Url $xcodeUri -Path $xcodeFullPath | Out-Null
|
||||
|
||||
# Validating checksum
|
||||
$xcodeSha256 = Get-FileHash -Path $xcodeFullPath -Algorithm SHA256 | Select-Object -ExpandProperty Hash
|
||||
if ($xcodeSha256 -ne $Sha256Sum) {
|
||||
throw "Xcode $Version checksum mismatch. Expected: $Sha256Sum, Actual: $xcodeSha256"
|
||||
}
|
||||
|
||||
return $tempXipDirectory
|
||||
}
|
||||
@@ -56,6 +65,7 @@ function Get-AvailableXcodeVersions {
|
||||
$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'
|
||||
|
||||
@@ -78,51 +78,15 @@ is_BigSur() {
|
||||
}
|
||||
|
||||
is_Veertu() {
|
||||
[ -d "/Library/Application Support/Veertu" ]
|
||||
}
|
||||
|
||||
get_toolset_path() {
|
||||
echo "$HOME/image-generation/toolset.json"
|
||||
[[ -d "/Library/Application Support/Veertu" ]]
|
||||
}
|
||||
|
||||
get_toolset_value() {
|
||||
local toolset_path=$(get_toolset_path)
|
||||
local toolset_path=$(echo "$IMAGE_FOLDER/toolset.json")
|
||||
local query=$1
|
||||
echo "$(jq -r "$query" $toolset_path)"
|
||||
}
|
||||
|
||||
verlte() {
|
||||
sortedVersion=$(echo -e "$1\n$2" | sort -V | head -n1)
|
||||
[ "$1" = "$sortedVersion" ]
|
||||
}
|
||||
|
||||
brew_cask_install_ignoring_sha256() {
|
||||
local TOOL_NAME=$1
|
||||
|
||||
CASK_DIR="$(brew --repo homebrew/cask)/Casks"
|
||||
chmod a+w "$CASK_DIR/$TOOL_NAME.rb"
|
||||
SHA=$(grep "sha256" "$CASK_DIR/$TOOL_NAME.rb" | awk '{print $2}')
|
||||
sed -i '' "s/$SHA/:no_check/" "$CASK_DIR/$TOOL_NAME.rb"
|
||||
brew install --cask $TOOL_NAME
|
||||
pushd $CASK_DIR
|
||||
git checkout HEAD -- "$TOOL_NAME.rb"
|
||||
popd
|
||||
}
|
||||
|
||||
get_brew_os_keyword() {
|
||||
if is_BigSur; then
|
||||
echo "big_sur"
|
||||
elif is_Monterey; then
|
||||
echo "monterey"
|
||||
elif is_Ventura; then
|
||||
echo "ventura"
|
||||
elif is_Sonoma; then
|
||||
echo "sonoma"
|
||||
else
|
||||
echo "null"
|
||||
fi
|
||||
}
|
||||
|
||||
# brew provides package bottles for different macOS versions
|
||||
# The 'brew install' command will fail if a package bottle does not exist
|
||||
# Use the '--build-from-source' option to build from source in this case
|
||||
@@ -172,7 +136,6 @@ brew_smart_install() {
|
||||
|
||||
configure_system_tccdb () {
|
||||
local values=$1
|
||||
|
||||
local dbPath="/Library/Application Support/com.apple.TCC/TCC.db"
|
||||
local sqlQuery="INSERT OR IGNORE INTO access VALUES($values);"
|
||||
sudo sqlite3 "$dbPath" "$sqlQuery"
|
||||
@@ -180,46 +143,38 @@ configure_system_tccdb () {
|
||||
|
||||
configure_user_tccdb () {
|
||||
local values=$1
|
||||
|
||||
local dbPath="$HOME/Library/Application Support/com.apple.TCC/TCC.db"
|
||||
local sqlQuery="INSERT OR IGNORE INTO access VALUES($values);"
|
||||
sqlite3 "$dbPath" "$sqlQuery"
|
||||
}
|
||||
|
||||
get_github_package_download_url() {
|
||||
local REPO_ORG=$1
|
||||
local FILTER=$2
|
||||
local VERSION=$3
|
||||
local API_PAT=$4
|
||||
local SEARCH_IN_COUNT="100"
|
||||
resolve_github_release_asset_url() {
|
||||
local repo=$1
|
||||
local filter=$2
|
||||
local version=${3:-"*"}
|
||||
local api_pat=$4
|
||||
|
||||
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
|
||||
page_size="100"
|
||||
|
||||
failed=true
|
||||
for i in {1..10}; do
|
||||
curl "${authString[@]}" -fsSL "https://api.github.com/repos/${REPO_ORG}/releases?per_page=${SEARCH_IN_COUNT}" >/tmp/get_github_package_download_url.json && failed=false || sleep 60
|
||||
[ "$failed" = false ] && break
|
||||
done
|
||||
[ -n "$api_pat" ] && authString=(-H "Authorization: token ${api_pat}")
|
||||
|
||||
if [ "$failed" = true ]; then
|
||||
echo "Failed: get_github_package_download_url"
|
||||
exit 1;
|
||||
fi
|
||||
json=$(curl "${authString[@]}" -fsSL "https://api.github.com/repos/${repo}/releases?per_page=${page_size}")
|
||||
|
||||
json=$(cat /tmp/get_github_package_download_url.json)
|
||||
|
||||
if [[ "$VERSION" == "latest" ]]; then
|
||||
tagName=$(echo $json | jq -r '.[] | select((.prerelease==false) and (.assets | length > 0)).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]" | tail -1)
|
||||
if [[ $version == "latest" ]]; then
|
||||
tag_name=$(echo $json | jq -r '.[].tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]|beta" | tail -n 1)
|
||||
elif [[ $version == *"*"* ]]; then
|
||||
tag_name=$(echo $json | jq -r '.[].tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]|beta" | egrep "${version}" | tail -n 1)
|
||||
else
|
||||
tagName=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]" | egrep "\w*${VERSION}" | tail -1)
|
||||
tag_name=$(echo $json | jq -r '.[].tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]|beta" | egrep "${version}")
|
||||
fi
|
||||
|
||||
downloadUrl=$(echo $json | jq -r ".[] | select(.tag_name==\"${tagName}\").assets[].browser_download_url | select(${FILTER})" | head -n 1)
|
||||
if [ -z "$downloadUrl" ]; then
|
||||
echo "Failed to parse a download url for the '${tagName}' tag using '${FILTER}' filter"
|
||||
download_url=$(echo $json | jq -r ".[] | select(.tag_name==\"${tag_name}\").assets[].browser_download_url | select(${filter})" | head -n 1)
|
||||
if [ -z "$download_url" ]; then
|
||||
echo "Failed to parse a download url for the '${tag_name}' tag using '${filter}' filter"
|
||||
exit 1
|
||||
fi
|
||||
echo $downloadUrl
|
||||
|
||||
echo $download_url
|
||||
}
|
||||
|
||||
# Close all finder windows because they can interfere with UI tests
|
||||
@@ -235,3 +190,25 @@ get_arch() {
|
||||
echo "x64"
|
||||
fi
|
||||
}
|
||||
|
||||
use_checksum_comparison() {
|
||||
local file_path=$1
|
||||
local checksum=$2
|
||||
local sha_type=${3:-"256"}
|
||||
|
||||
echo "Performing checksum verification"
|
||||
|
||||
if [[ ! -f "$file_path" ]]; then
|
||||
echo "File not found: $file_path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
local_file_hash=$(shasum --algorithm "$sha_type" "$file_path" | awk '{print $1}')
|
||||
|
||||
if [[ "$local_file_hash" != "$checksum" ]]; then
|
||||
echo "Checksum verification failed. Expected hash: $checksum; Actual hash: $local_file_hash."
|
||||
exit 1
|
||||
else
|
||||
echo "Checksum verification passed"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ installNunitConsole() {
|
||||
#!/bin/bash -e -o pipefail
|
||||
exec /Library/Frameworks/Mono.framework/Versions/${MONO_VERSION}/bin/mono --debug \$MONO_OPTIONS $NUNIT3_PATH/nunit3-console.exe "\$@"
|
||||
EOF
|
||||
sudo chmod +x "$TMP_WRAPPER_PATH"
|
||||
sudo chmod +x $TMP_WRAPPER_PATH
|
||||
sudo mv "$TMP_WRAPPER_PATH" "${MONO_VERSIONS_PATH}/${MONO_VERSION}/Commands/nunit3-console"
|
||||
}
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ Describe "Aliyun CLI" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsSonoma)
|
||||
}
|
||||
}
|
||||
|
||||
Describe "Julia" {
|
||||
Describe "Julia" -Skip:($os.IsVentura -or $os.IsSonoma) {
|
||||
It "Julia" {
|
||||
"julia --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
@@ -159,7 +159,7 @@ Describe "virtualbox" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsSonoma) {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "R" {
|
||||
Describe "R" -Skip:($os.IsVentura -or $os.IsSonoma) {
|
||||
It "R" {
|
||||
"R --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
@@ -191,7 +191,7 @@ Describe "yq" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "imagemagick" -Skip:($os.IsVentura -or $os.IsSonoma) {
|
||||
Describe "imagemagick" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsSonoma) {
|
||||
It "imagemagick" {
|
||||
"magick -version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
$os = Get-OSVersion
|
||||
|
||||
Describe "PHP" {
|
||||
Context "PHP" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
Context "PHP" -Skip:($os.IsBigSur -or $os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
It "PHP Path" {
|
||||
Get-ToolPath "php" | Should -Not -BeLike "/usr/bin/php*"
|
||||
}
|
||||
@@ -14,7 +14,7 @@ Describe "PHP" {
|
||||
}
|
||||
}
|
||||
|
||||
Context "Composer" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
Context "Composer" -Skip:($os.IsBigSur -or $os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
It "Composer" {
|
||||
"composer --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
Describe "Rosetta" -Skip:(-not $os.IsArm64) {
|
||||
It "Rosetta is available" {
|
||||
$commandResult = Get-CommandResult "/usr/bin/pgrep oahd"
|
||||
$commandResult.Output | Should -Match "\d+"
|
||||
$commandResult.ExitCode | Should -Be 0
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@ Describe "Fastlane" {
|
||||
}
|
||||
}
|
||||
|
||||
Describe "xcpretty" {
|
||||
Describe "xcpretty" -Skip:($os.IsVentura -or $os.IsSonoma) {
|
||||
It "xcpretty" {
|
||||
"xcpretty --version" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ Describe "Toolcache" {
|
||||
}
|
||||
}
|
||||
}
|
||||
Context "PyPy" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
Context "PyPy" -Skip:($os.IsVenturaArm64 -or $os.IsSonoma) {
|
||||
$pypyDirectory = Join-Path $toolcacheDirectory "PyPy"
|
||||
$pypyPackage = $packages | Where-Object { $_.ToolName -eq "pypy" } | Select-Object -First 1
|
||||
$testCase = @{ PypyDirectory = $pypyDirectory }
|
||||
|
||||
@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
|
||||
|
||||
$os = Get-OSVersion
|
||||
|
||||
Describe "Apache" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
|
||||
Describe "Apache" -Skip:($os.IsVentura -or $os.IsSonoma) {
|
||||
It "Apache CLI" {
|
||||
"httpd -v" | Should -ReturnZeroExitCode
|
||||
}
|
||||
|
||||
@@ -1,262 +0,0 @@
|
||||
{
|
||||
"variables": {
|
||||
"vcenter_server": null,
|
||||
"vcenter_username": null,
|
||||
"vcenter_password": null,
|
||||
"vcenter_datacenter": null,
|
||||
"cluster_or_esxi_host": null,
|
||||
"esxi_datastore": null,
|
||||
"build_id": null,
|
||||
"baseimage_name": null,
|
||||
"output_folder": null,
|
||||
"vm_username": null,
|
||||
"vm_password": null,
|
||||
"github_api_pat": null,
|
||||
"xcode_install_storage_url": null,
|
||||
"xcode_install_sas": null,
|
||||
"image_os": "macos11"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "vsphere-clone",
|
||||
"vcenter_server": "{{user `vcenter_server`}}",
|
||||
"username": "{{user `vcenter_username`}}",
|
||||
"password": "{{user `vcenter_password`}}",
|
||||
"insecure_connection": true,
|
||||
"datacenter": "{{ user `vcenter_datacenter` }}",
|
||||
"template": "{{ user `baseimage_name` }}",
|
||||
"folder": "{{user `output_folder` }}",
|
||||
"host": "{{user `cluster_or_esxi_host`}}",
|
||||
"datastore": "{{user `esxi_datastore`}}",
|
||||
"vm_name": "{{user `build_id`}}",
|
||||
"ssh_username": "{{user `vm_username`}}",
|
||||
"ssh_password": "{{user `vm_password`}}",
|
||||
"CPUs": "5",
|
||||
"cpu_cores": "5",
|
||||
"RAM": "24576",
|
||||
"NestedHV": "true",
|
||||
"shutdown_timeout": "15m"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": "mkdir ~/image-generation"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"sources": [
|
||||
"./assets/xamarin-selector",
|
||||
"./scripts/tests",
|
||||
"./scripts/docs-gen",
|
||||
"./scripts/helpers"
|
||||
],
|
||||
"destination": "~/image-generation/"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "../../helpers/software-report-base",
|
||||
"destination": "~/image-generation/docs-gen/"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/add-certificate.swift",
|
||||
"destination": "~/image-generation/add-certificate.swift"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bashrc",
|
||||
"destination": "~/.bashrc"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bashprofile",
|
||||
"destination": "~/.bash_profile"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bootstrap-provisioner",
|
||||
"destination": "~/bootstrap"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./toolsets/toolset-11.json",
|
||||
"destination": "~/image-generation/toolset.json"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mv ~/image-generation/docs-gen ~/image-generation/software-report",
|
||||
"mv ~/image-generation/xamarin-selector ~/image-generation/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ~/image-generation/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/utils.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/xamarin-utils.sh ~/utils"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/install-homebrew.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/configure-network-interface-detection.sh",
|
||||
"./scripts/build/configure-autologin.sh",
|
||||
"./scripts/build/configure-auto-updates.sh",
|
||||
"./scripts/build/configure-screensaver.sh",
|
||||
"./scripts/build/configure-ntpconf.sh",
|
||||
"./scripts/build/configure-max-files-limitation.sh",
|
||||
"./scripts/build/configure-shell.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"PASSWORD={{user `vm_password`}}",
|
||||
"USERNAME={{user `vm_username`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-preimagedata.sh",
|
||||
"./scripts/build/configure-ssh.sh",
|
||||
"./scripts/build/configure-machine.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"IMAGE_VERSION={{user `build_id`}}",
|
||||
"IMAGE_OS={{user `image_os`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "sudo {{ .Vars }} {{ .Path }}",
|
||||
"inline": [
|
||||
"echo 'Reboot VM'",
|
||||
"shutdown -r now"
|
||||
],
|
||||
"expect_disconnect": true
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"pause_before": "30s",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-windows.sh",
|
||||
"./scripts/build/install-powershell.sh",
|
||||
"./scripts/build/install-dotnet.sh",
|
||||
"./scripts/build/install-python.sh",
|
||||
"./scripts/build/install-azcopy.sh",
|
||||
"./scripts/build/install-openssl.sh",
|
||||
"./scripts/build/install-ruby.sh",
|
||||
"./scripts/build/install-rubygems.sh",
|
||||
"./scripts/build/install-git.sh",
|
||||
"./scripts/build/install-mongodb.sh",
|
||||
"./scripts/build/install-node.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"API_PAT={{user `github_api_pat`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}",
|
||||
"script": "./scripts/build/Install-Xcode.ps1",
|
||||
"environment_vars": [
|
||||
"XCODE_INSTALL_STORAGE_URL={{user `xcode_install_storage_url`}}",
|
||||
"XCODE_INSTALL_SAS={{user `xcode_install_sas`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "sudo {{ .Vars }} {{ .Path }}",
|
||||
"inline": [
|
||||
"echo 'Reboot VM'",
|
||||
"shutdown -r now"
|
||||
],
|
||||
"expect_disconnect": true
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/install-actions-cache.sh",
|
||||
"./scripts/build/install-common-utils.sh",
|
||||
"./scripts/build/install-llvm.sh",
|
||||
"./scripts/build/install-golang.sh",
|
||||
"./scripts/build/install-swiftlint.sh",
|
||||
"./scripts/build/install-openjdk.sh",
|
||||
"./scripts/build/install-php.sh",
|
||||
"./scripts/build/install-aws-tools.sh",
|
||||
"./scripts/build/install-rust.sh",
|
||||
"./scripts/build/install-gcc.sh",
|
||||
"./scripts/build/install-haskell.sh",
|
||||
"./scripts/build/install-cocoapods.sh",
|
||||
"./scripts/build/install-android-sdk.sh",
|
||||
"./scripts/build/install-xamarin.sh",
|
||||
"./scripts/build/install-visualstudio.sh",
|
||||
"./scripts/build/install-nvm.sh",
|
||||
"./scripts/build/install-apache.sh",
|
||||
"./scripts/build/install-nginx.sh",
|
||||
"./scripts/build/install-postgresql.sh",
|
||||
"./scripts/build/install-audiodevice.sh",
|
||||
"./scripts/build/install-vcpkg.sh",
|
||||
"./scripts/build/install-miniconda.sh",
|
||||
"./scripts/build/install-safari.sh",
|
||||
"./scripts/build/install-chrome.sh",
|
||||
"./scripts/build/install-edge.sh",
|
||||
"./scripts/build/install-firefox.sh",
|
||||
"./scripts/build/install-pypy.sh",
|
||||
"./scripts/build/install-pipx-packages.sh",
|
||||
"./scripts/build/install-bicep.sh",
|
||||
"./scripts/build/install-codeql-bundle.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"API_PAT={{user `github_api_pat`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/Install-Toolset.ps1",
|
||||
"./scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "ruby {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-xcode-simulators.rb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName {{user `build_id`}}",
|
||||
"pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"direction": "download",
|
||||
"source": "~/image-generation/output/*",
|
||||
"destination": "../image-output/"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-hostname.sh",
|
||||
"./scripts/build/configure-system.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,308 @@
|
||||
packer {
|
||||
required_plugins {
|
||||
vsphere = {
|
||||
source = "github.com/hashicorp/vsphere"
|
||||
version = "~> 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "baseimage_name" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "build_id" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "cluster_or_esxi_host" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "esxi_datastore" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
default = ""
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos11"
|
||||
}
|
||||
|
||||
variable "output_folder" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_datacenter" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcenter_server" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_username" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
source "vsphere-clone" "template" {
|
||||
CPUs = "5"
|
||||
NestedHV = "true"
|
||||
RAM = "24576"
|
||||
cpu_cores = "5"
|
||||
datacenter = "${var.vcenter_datacenter}"
|
||||
datastore = "${var.esxi_datastore}"
|
||||
folder = "${var.output_folder}"
|
||||
host = "${var.cluster_or_esxi_host}"
|
||||
insecure_connection = true
|
||||
password = "${var.vcenter_password}"
|
||||
shutdown_timeout = "15m"
|
||||
ssh_password = "${var.vm_password}"
|
||||
ssh_username = "${var.vm_username}"
|
||||
template = "${var.baseimage_name}"
|
||||
username = "${var.vcenter_username}"
|
||||
vcenter_server = "${var.vcenter_server}"
|
||||
vm_name = "${var.build_id}"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.vsphere-clone.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"${path.root}/../assets/xamarin-selector",
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/.bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/.bash_profile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [ "mkdir ~/bootstrap" ]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/bootstrap"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-11.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/configure-network-interface-detection.sh",
|
||||
"${path.root}/../scripts/build/configure-autologin.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-screensaver.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-max-files-limitation.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-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-mongodb.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-golang.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-haskell.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-xamarin.sh",
|
||||
"${path.root}/../scripts/build/install-visualstudio.sh",
|
||||
"${path.root}/../scripts/build/install-nvm.sh",
|
||||
"${path.root}/../scripts/build/install-apache.sh",
|
||||
"${path.root}/../scripts/build/install-nginx.sh",
|
||||
"${path.root}/../scripts/build/install-postgresql.sh",
|
||||
"${path.root}/../scripts/build/install-audiodevice.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-miniconda.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-pipx-packages.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "ruby {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/configure-xcode-simulators.rb"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/*"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,15 @@ packer {
|
||||
required_plugins {
|
||||
veertu-anka = {
|
||||
version = ">= v3.2.0"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "source_vm_name" {
|
||||
type = string
|
||||
}
|
||||
@@ -20,259 +24,262 @@ variable "build_id" {
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcpu_count" {
|
||||
type = string
|
||||
type = string
|
||||
default = "6"
|
||||
}
|
||||
|
||||
variable "ram_size" {
|
||||
type = string
|
||||
type = string
|
||||
default = "24G"
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
type = string
|
||||
default = "macos12"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
vm_name = "${var.build_id}"
|
||||
vm_name = "${var.build_id}"
|
||||
source_vm_name = "${var.source_vm_name}"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = [
|
||||
"source.veertu-anka-vm-clone.template"
|
||||
]
|
||||
sources = ["source.veertu-anka-vm-clone.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/image-generation"
|
||||
]
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/"
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"./assets/xamarin-selector",
|
||||
"./scripts/tests",
|
||||
"./scripts/docs-gen",
|
||||
"./scripts/helpers"
|
||||
"${path.root}/../assets/xamarin-selector",
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/docs-gen/"
|
||||
source = "../../helpers/software-report-base"
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/add-certificate.swift"
|
||||
source = "./assets/add-certificate.swift"
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bashrc"
|
||||
source = "./assets/bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bash_profile"
|
||||
source = "./assets/bashprofile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/bootstrap"
|
||||
]
|
||||
inline = [ "mkdir ~/bootstrap" ]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "bootstrap"
|
||||
source = "./assets/bootstrap-provisioner/"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/toolset.json"
|
||||
source = "./toolsets/toolset-12.json"
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-12.json"
|
||||
}
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ~/image-generation/docs-gen ~/image-generation/software-report",
|
||||
"mv ~/image-generation/xamarin-selector ~/image-generation/assets",
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ~/image-generation/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/utils.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/xamarin-utils.sh ~/utils"
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/install-homebrew.sh"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-tccdb-macos.sh",
|
||||
"./scripts/build/configure-network-interface-detection.sh",
|
||||
"./scripts/build/configure-autologin.sh",
|
||||
"./scripts/build/configure-auto-updates.sh",
|
||||
"./scripts/build/configure-screensaver.sh",
|
||||
"./scripts/build/configure-ntpconf.sh",
|
||||
"./scripts/build/configure-max-files-limitation.sh",
|
||||
"./scripts/build/configure-shell.sh"
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-tccdb-macos.sh",
|
||||
"${path.root}/../scripts/build/configure-network-interface-detection.sh",
|
||||
"${path.root}/../scripts/build/configure-autologin.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-screensaver.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-max-files-limitation.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"PASSWORD=${var.vm_password}",
|
||||
"USERNAME=${var.vm_username}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-preimagedata.sh",
|
||||
"./scripts/build/configure-ssh.sh",
|
||||
"./scripts/build/configure-machine.sh"
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"IMAGE_VERSION=${var.build_id}",
|
||||
"IMAGE_OS=${var.image_os}",
|
||||
"PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"./scripts/build/configure-windows.sh",
|
||||
"./scripts/build/install-powershell.sh",
|
||||
"./scripts/build/install-dotnet.sh",
|
||||
"./scripts/build/install-python.sh",
|
||||
"./scripts/build/install-azcopy.sh",
|
||||
"./scripts/build/install-openssl.sh",
|
||||
"./scripts/build/install-ruby.sh",
|
||||
"./scripts/build/install-rubygems.sh",
|
||||
"./scripts/build/install-git.sh",
|
||||
"./scripts/build/install-mongodb.sh",
|
||||
"./scripts/build/install-node.sh",
|
||||
"./scripts/build/install-common-utils.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-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-mongodb.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}",
|
||||
"USER_PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/Install-Xcode.ps1"
|
||||
environment_vars = [
|
||||
"XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}",
|
||||
"XCODE_INSTALL_SAS=${var.xcode_install_sas}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-actions-cache.sh",
|
||||
"./scripts/build/install-llvm.sh",
|
||||
"./scripts/build/install-golang.sh",
|
||||
"./scripts/build/install-swiftlint.sh",
|
||||
"./scripts/build/install-openjdk.sh",
|
||||
"./scripts/build/install-php.sh",
|
||||
"./scripts/build/install-aws-tools.sh",
|
||||
"./scripts/build/install-rust.sh",
|
||||
"./scripts/build/install-gcc.sh",
|
||||
"./scripts/build/install-haskell.sh",
|
||||
"./scripts/build/install-cocoapods.sh",
|
||||
"./scripts/build/install-android-sdk.sh",
|
||||
"./scripts/build/install-xamarin.sh",
|
||||
"./scripts/build/install-visualstudio.sh",
|
||||
"./scripts/build/install-nvm.sh",
|
||||
"./scripts/build/install-apache.sh",
|
||||
"./scripts/build/install-nginx.sh",
|
||||
"./scripts/build/install-postgresql.sh",
|
||||
"./scripts/build/install-audiodevice.sh",
|
||||
"./scripts/build/install-vcpkg.sh",
|
||||
"./scripts/build/install-miniconda.sh",
|
||||
"./scripts/build/install-safari.sh",
|
||||
"./scripts/build/install-chrome.sh",
|
||||
"./scripts/build/install-edge.sh",
|
||||
"./scripts/build/install-firefox.sh",
|
||||
"./scripts/build/install-pypy.sh",
|
||||
"./scripts/build/install-pipx-packages.sh",
|
||||
"./scripts/build/install-bicep.sh",
|
||||
"./scripts/build/install-codeql-bundle.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-golang.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-haskell.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-xamarin.sh",
|
||||
"${path.root}/../scripts/build/install-visualstudio.sh",
|
||||
"${path.root}/../scripts/build/install-nvm.sh",
|
||||
"${path.root}/../scripts/build/install-apache.sh",
|
||||
"${path.root}/../scripts/build/install-nginx.sh",
|
||||
"${path.root}/../scripts/build/install-postgresql.sh",
|
||||
"${path.root}/../scripts/build/install-audiodevice.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-miniconda.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-pipx-packages.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/Install-Toolset.ps1",
|
||||
"./scripts/build/Configure-Toolset.ps1"
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/configure-xcode-simulators.rb"
|
||||
execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/configure-xcode-simulators.rb"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/Update-XcodeSimulators.ps1"
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Update-XcodeSimulators.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\""
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "../image-output/"
|
||||
direction = "download"
|
||||
source = "./image-generation/output/"
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-hostname.sh",
|
||||
"./scripts/build/configure-system.sh"
|
||||
]
|
||||
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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,268 +0,0 @@
|
||||
{
|
||||
"variables": {
|
||||
"vcenter_server": null,
|
||||
"vcenter_username": null,
|
||||
"vcenter_password": null,
|
||||
"vcenter_datacenter": null,
|
||||
"cluster_or_esxi_host": null,
|
||||
"esxi_datastore": null,
|
||||
"build_id": null,
|
||||
"baseimage_name": null,
|
||||
"output_folder": null,
|
||||
"vm_username": null,
|
||||
"vm_password": null,
|
||||
"github_api_pat": null,
|
||||
"xcode_install_storage_url": null,
|
||||
"xcode_install_sas": null,
|
||||
"image_os": "macos12"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "vsphere-clone",
|
||||
"vcenter_server": "{{user `vcenter_server`}}",
|
||||
"username": "{{user `vcenter_username`}}",
|
||||
"password": "{{user `vcenter_password`}}",
|
||||
"insecure_connection": true,
|
||||
"datacenter": "{{ user `vcenter_datacenter` }}",
|
||||
"template": "{{ user `baseimage_name` }}",
|
||||
"folder": "{{user `output_folder` }}",
|
||||
"host": "{{user `cluster_or_esxi_host`}}",
|
||||
"datastore": "{{user `esxi_datastore`}}",
|
||||
"vm_name": "{{user `build_id`}}",
|
||||
"ssh_username": "{{user `vm_username`}}",
|
||||
"ssh_password": "{{user `vm_password`}}",
|
||||
"CPUs": "5",
|
||||
"cpu_cores": "5",
|
||||
"RAM": "24576",
|
||||
"NestedHV": "true",
|
||||
"shutdown_timeout": "15m"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": "mkdir ~/image-generation"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"sources": [
|
||||
"./assets/xamarin-selector",
|
||||
"./scripts/tests",
|
||||
"./scripts/docs-gen",
|
||||
"./scripts/helpers"
|
||||
],
|
||||
"destination": "~/image-generation/"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "../../helpers/software-report-base",
|
||||
"destination": "~/image-generation/docs-gen/"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/add-certificate.swift",
|
||||
"destination": "~/image-generation/add-certificate.swift"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bashrc",
|
||||
"destination": "~/.bashrc"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bashprofile",
|
||||
"destination": "~/.bash_profile"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./assets/bootstrap-provisioner",
|
||||
"destination": "~/bootstrap"
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"source": "./toolsets/toolset-12.json",
|
||||
"destination": "~/image-generation/toolset.json"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"mv ~/image-generation/docs-gen ~/image-generation/software-report",
|
||||
"mv ~/image-generation/xamarin-selector ~/image-generation/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ~/image-generation/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/utils.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/xamarin-utils.sh ~/utils"
|
||||
],
|
||||
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/install-homebrew.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-network-interface-detection.sh",
|
||||
"./scripts/build/configure-autologin.sh",
|
||||
"./scripts/build/configure-auto-updates.sh",
|
||||
"./scripts/build/configure-screensaver.sh",
|
||||
"./scripts/build/configure-ntpconf.sh",
|
||||
"./scripts/build/configure-max-files-limitation.sh",
|
||||
"./scripts/build/configure-shell.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"PASSWORD={{user `vm_password`}}",
|
||||
"USERNAME={{user `vm_username`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-preimagedata.sh",
|
||||
"./scripts/build/configure-ssh.sh",
|
||||
"./scripts/build/configure-machine.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"IMAGE_VERSION={{user `build_id`}}",
|
||||
"IMAGE_OS={{user `image_os`}}",
|
||||
"PASSWORD={{user `vm_password`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "sudo {{ .Vars }} {{ .Path }}",
|
||||
"inline": [
|
||||
"echo 'Reboot VM'",
|
||||
"shutdown -r now"
|
||||
],
|
||||
"expect_disconnect": true
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"pause_before": "30s",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-windows.sh",
|
||||
"./scripts/build/install-powershell.sh",
|
||||
"./scripts/build/install-dotnet.sh",
|
||||
"./scripts/build/install-python.sh",
|
||||
"./scripts/build/install-azcopy.sh",
|
||||
"./scripts/build/install-openssl.sh",
|
||||
"./scripts/build/install-ruby.sh",
|
||||
"./scripts/build/install-rubygems.sh",
|
||||
"./scripts/build/install-git.sh",
|
||||
"./scripts/build/install-mongodb.sh",
|
||||
"./scripts/build/install-node.sh",
|
||||
"./scripts/build/install-common-utils.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"API_PAT={{user `github_api_pat`}}",
|
||||
"USER_PASSWORD={{user `vm_password`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}",
|
||||
"script": "./scripts/build/Install-Xcode.ps1",
|
||||
"environment_vars": [
|
||||
"XCODE_INSTALL_STORAGE_URL={{user `xcode_install_storage_url`}}",
|
||||
"XCODE_INSTALL_SAS={{user `xcode_install_sas`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "sudo {{ .Vars }} {{ .Path }}",
|
||||
"inline": [
|
||||
"echo 'Reboot VM'",
|
||||
"shutdown -r now"
|
||||
],
|
||||
"expect_disconnect": true
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/install-actions-cache.sh",
|
||||
"./scripts/build/install-llvm.sh",
|
||||
"./scripts/build/install-golang.sh",
|
||||
"./scripts/build/install-swiftlint.sh",
|
||||
"./scripts/build/install-openjdk.sh",
|
||||
"./scripts/build/install-php.sh",
|
||||
"./scripts/build/install-aws-tools.sh",
|
||||
"./scripts/build/install-rust.sh",
|
||||
"./scripts/build/install-gcc.sh",
|
||||
"./scripts/build/install-haskell.sh",
|
||||
"./scripts/build/install-cocoapods.sh",
|
||||
"./scripts/build/install-android-sdk.sh",
|
||||
"./scripts/build/install-xamarin.sh",
|
||||
"./scripts/build/install-visualstudio.sh",
|
||||
"./scripts/build/install-nvm.sh",
|
||||
"./scripts/build/install-apache.sh",
|
||||
"./scripts/build/install-nginx.sh",
|
||||
"./scripts/build/install-postgresql.sh",
|
||||
"./scripts/build/install-audiodevice.sh",
|
||||
"./scripts/build/install-vcpkg.sh",
|
||||
"./scripts/build/install-miniconda.sh",
|
||||
"./scripts/build/install-safari.sh",
|
||||
"./scripts/build/install-chrome.sh",
|
||||
"./scripts/build/install-edge.sh",
|
||||
"./scripts/build/install-firefox.sh",
|
||||
"./scripts/build/install-pypy.sh",
|
||||
"./scripts/build/install-pipx-packages.sh",
|
||||
"./scripts/build/install-bicep.sh",
|
||||
"./scripts/build/install-codeql-bundle.sh"
|
||||
],
|
||||
"environment_vars": [
|
||||
"API_PAT={{user `github_api_pat`}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/Install-Toolset.ps1",
|
||||
"./scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "ruby {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-xcode-simulators.rb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}",
|
||||
"script": "./scripts/build/Update-XcodeSimulators.ps1"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName {{user `build_id`}}",
|
||||
"pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "file",
|
||||
"direction": "download",
|
||||
"source": "~/image-generation/output/*",
|
||||
"destination": "../image-output/"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
|
||||
"scripts": [
|
||||
"./scripts/build/configure-hostname.sh",
|
||||
"./scripts/build/configure-system.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,313 @@
|
||||
packer {
|
||||
required_plugins {
|
||||
vsphere = {
|
||||
source = "github.com/hashicorp/vsphere"
|
||||
version = "~> 1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "baseimage_name" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "build_id" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "cluster_or_esxi_host" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "esxi_datastore" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
default = ""
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
default = "macos12"
|
||||
}
|
||||
|
||||
variable "output_folder" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_datacenter" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcenter_server" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "vcenter_username" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
source "vsphere-clone" "template" {
|
||||
CPUs = "5"
|
||||
NestedHV = "true"
|
||||
RAM = "24576"
|
||||
cpu_cores = "5"
|
||||
datacenter = "${var.vcenter_datacenter}"
|
||||
datastore = "${var.esxi_datastore}"
|
||||
folder = "${var.output_folder}"
|
||||
host = "${var.cluster_or_esxi_host}"
|
||||
insecure_connection = true
|
||||
password = "${var.vcenter_password}"
|
||||
shutdown_timeout = "15m"
|
||||
ssh_password = "${var.vm_password}"
|
||||
ssh_username = "${var.vm_username}"
|
||||
template = "${var.baseimage_name}"
|
||||
username = "${var.vcenter_username}"
|
||||
vcenter_server = "${var.vcenter_server}"
|
||||
vm_name = "${var.build_id}"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = ["source.vsphere-clone.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"${path.root}/../assets/xamarin-selector",
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/.bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/.bash_profile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [ "mkdir ~/bootstrap" ]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "~/bootstrap"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-12.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-network-interface-detection.sh",
|
||||
"${path.root}/../scripts/build/configure-autologin.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-screensaver.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-max-files-limitation.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-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-mongodb.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-golang.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-haskell.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-xamarin.sh",
|
||||
"${path.root}/../scripts/build/install-visualstudio.sh",
|
||||
"${path.root}/../scripts/build/install-nvm.sh",
|
||||
"${path.root}/../scripts/build/install-apache.sh",
|
||||
"${path.root}/../scripts/build/install-nginx.sh",
|
||||
"${path.root}/../scripts/build/install-postgresql.sh",
|
||||
"${path.root}/../scripts/build/install-audiodevice.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-miniconda.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-pipx-packages.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "ruby {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/configure-xcode-simulators.rb"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Update-XcodeSimulators.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/*"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-hostname.sh",
|
||||
"${path.root}/../scripts/build/configure-system.sh"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,15 @@ packer {
|
||||
required_plugins {
|
||||
veertu-anka = {
|
||||
version = ">= v3.2.0"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "source_vm_name" {
|
||||
type = string
|
||||
}
|
||||
@@ -20,246 +24,248 @@ variable "build_id" {
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcpu_count" {
|
||||
type = string
|
||||
type = string
|
||||
default = "6"
|
||||
}
|
||||
|
||||
variable "ram_size" {
|
||||
type = string
|
||||
type = string
|
||||
default = "24G"
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
type = string
|
||||
default = "macos13"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
vm_name = "${var.build_id}"
|
||||
vm_name = "${var.build_id}"
|
||||
source_vm_name = "${var.source_vm_name}"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = [
|
||||
"source.veertu-anka-vm-clone.template"
|
||||
]
|
||||
sources = ["source.veertu-anka-vm-clone.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/image-generation"
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"${path.root}/../assets/xamarin-selector",
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/"
|
||||
sources = [
|
||||
"./assets/xamarin-selector",
|
||||
"./scripts/tests",
|
||||
"./scripts/docs-gen",
|
||||
"./scripts/helpers"
|
||||
]
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/docs-gen/"
|
||||
source = "../../helpers/software-report-base"
|
||||
}
|
||||
provisioner "file" {
|
||||
destination = "image-generation/add-certificate.swift"
|
||||
source = "./assets/add-certificate.swift"
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bashrc"
|
||||
source = "./assets/bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bash_profile"
|
||||
source = "./assets/bashprofile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/bootstrap"
|
||||
]
|
||||
inline = ["mkdir ~/bootstrap"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "bootstrap"
|
||||
source = "./assets/bootstrap-provisioner/"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/toolset.json"
|
||||
source = "./toolsets/toolset-13.json"
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ~/image-generation/docs-gen ~/image-generation/software-report",
|
||||
"mv ~/image-generation/xamarin-selector ~/image-generation/assets",
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ~/image-generation/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/utils.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/xamarin-utils.sh ~/utils"
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/install-homebrew.sh"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-tccdb-macos.sh",
|
||||
"./scripts/build/configure-auto-updates.sh",
|
||||
"./scripts/build/configure-ntpconf.sh",
|
||||
"./scripts/build/configure-shell.sh"
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-tccdb-macos.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"PASSWORD=${var.vm_password}",
|
||||
"USERNAME=${var.vm_username}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-preimagedata.sh",
|
||||
"./scripts/build/configure-ssh.sh",
|
||||
"./scripts/build/configure-machine.sh"
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"IMAGE_VERSION=${var.build_id}",
|
||||
"IMAGE_OS=${var.image_os}",
|
||||
"PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"./scripts/build/configure-windows.sh",
|
||||
"./scripts/build/install-powershell.sh",
|
||||
"./scripts/build/install-mono.sh",
|
||||
"./scripts/build/install-dotnet.sh",
|
||||
"./scripts/build/install-python.sh",
|
||||
"./scripts/build/install-azcopy.sh",
|
||||
"./scripts/build/install-openssl.sh",
|
||||
"./scripts/build/install-ruby.sh",
|
||||
"./scripts/build/install-rubygems.sh",
|
||||
"./scripts/build/install-git.sh",
|
||||
"./scripts/build/install-node.sh",
|
||||
"./scripts/build/install-common-utils.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-windows.sh",
|
||||
"${path.root}/../scripts/build/install-powershell.sh",
|
||||
"${path.root}/../scripts/build/install-mono.sh",
|
||||
"${path.root}/../scripts/build/install-dotnet.sh",
|
||||
"${path.root}/../scripts/build/install-python.sh",
|
||||
"${path.root}/../scripts/build/install-azcopy.sh",
|
||||
"${path.root}/../scripts/build/install-openssl.sh",
|
||||
"${path.root}/../scripts/build/install-ruby.sh",
|
||||
"${path.root}/../scripts/build/install-rubygems.sh",
|
||||
"${path.root}/../scripts/build/install-git.sh",
|
||||
"${path.root}/../scripts/build/install-node.sh",
|
||||
"${path.root}/../scripts/build/install-common-utils.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}",
|
||||
"USER_PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/Install-Xcode.ps1"
|
||||
environment_vars = [
|
||||
"XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}",
|
||||
"XCODE_INSTALL_SAS=${var.xcode_install_sas}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-actions-cache.sh",
|
||||
"./scripts/build/install-llvm.sh",
|
||||
"./scripts/build/install-swiftlint.sh",
|
||||
"./scripts/build/install-openjdk.sh",
|
||||
"./scripts/build/install-php.sh",
|
||||
"./scripts/build/install-aws-tools.sh",
|
||||
"./scripts/build/install-rust.sh",
|
||||
"./scripts/build/install-gcc.sh",
|
||||
"./scripts/build/install-cocoapods.sh",
|
||||
"./scripts/build/install-android-sdk.sh",
|
||||
"./scripts/build/install-apache.sh",
|
||||
"./scripts/build/install-vcpkg.sh",
|
||||
"./scripts/build/install-safari.sh",
|
||||
"./scripts/build/install-chrome.sh",
|
||||
"./scripts/build/install-edge.sh",
|
||||
"./scripts/build/install-firefox.sh",
|
||||
"./scripts/build/install-pypy.sh",
|
||||
"./scripts/build/install-bicep.sh",
|
||||
"./scripts/build/install-codeql-bundle.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-swiftlint.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-php.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-vcpkg.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-edge.sh",
|
||||
"${path.root}/../scripts/build/install-firefox.sh",
|
||||
"${path.root}/../scripts/build/install-pypy.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/Install-Toolset.ps1",
|
||||
"./scripts/build/Configure-Toolset.ps1"
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/configure-xcode-simulators.rb"
|
||||
execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/configure-xcode-simulators.rb"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\""
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "../image-output/"
|
||||
direction = "download"
|
||||
source = "./image-generation/output/"
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"rm -rf \"$(brew --cache)\""
|
||||
]
|
||||
inline = ["rm -rf \"$(brew --cache)\""]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-hostname.sh",
|
||||
"./scripts/build/configure-system.sh"
|
||||
]
|
||||
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"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,15 @@ packer {
|
||||
required_plugins {
|
||||
veertu-anka = {
|
||||
version = ">= v3.2.0"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
source = "github.com/veertuinc/veertu-anka"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
locals {
|
||||
image_folder = "/Users/${var.vm_username}/image-generation"
|
||||
}
|
||||
|
||||
variable "source_vm_name" {
|
||||
type = string
|
||||
}
|
||||
@@ -20,234 +24,236 @@ variable "build_id" {
|
||||
}
|
||||
|
||||
variable "vm_username" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vm_password" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "github_api_pat" {
|
||||
type = string
|
||||
type = string
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "xcode_install_storage_url" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "xcode_install_sas" {
|
||||
type = string
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "vcpu_count" {
|
||||
type = string
|
||||
type = string
|
||||
default = "6"
|
||||
}
|
||||
|
||||
variable "ram_size" {
|
||||
type = string
|
||||
type = string
|
||||
default = "8G"
|
||||
}
|
||||
|
||||
variable "image_os" {
|
||||
type = string
|
||||
type = string
|
||||
default = "macos13"
|
||||
}
|
||||
|
||||
source "veertu-anka-vm-clone" "template" {
|
||||
vm_name = "${var.build_id}"
|
||||
vm_name = "${var.build_id}"
|
||||
source_vm_name = "${var.source_vm_name}"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
log_level = "debug"
|
||||
source_vm_tag = "${var.source_vm_tag}"
|
||||
vcpu_count = "${var.vcpu_count}"
|
||||
ram_size = "${var.ram_size}"
|
||||
stop_vm = "true"
|
||||
log_level = "debug"
|
||||
}
|
||||
|
||||
build {
|
||||
sources = [
|
||||
"source.veertu-anka-vm-clone.template"
|
||||
]
|
||||
sources = ["source.veertu-anka-vm-clone.template"]
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/image-generation"
|
||||
inline = ["mkdir ${local.image_folder}"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "${local.image_folder}/"
|
||||
sources = [
|
||||
"${path.root}/../assets/xamarin-selector",
|
||||
"${path.root}/../scripts/tests",
|
||||
"${path.root}/../scripts/docs-gen",
|
||||
"${path.root}/../scripts/helpers"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/"
|
||||
sources = [
|
||||
"./assets/xamarin-selector",
|
||||
"./scripts/tests",
|
||||
"./scripts/docs-gen",
|
||||
"./scripts/helpers"
|
||||
]
|
||||
destination = "${local.image_folder}/docs-gen/"
|
||||
source = "${path.root}/../../../helpers/software-report-base"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/docs-gen/"
|
||||
source = "../../helpers/software-report-base"
|
||||
}
|
||||
provisioner "file" {
|
||||
destination = "image-generation/add-certificate.swift"
|
||||
source = "./assets/add-certificate.swift"
|
||||
destination = "${local.image_folder}/add-certificate.swift"
|
||||
source = "${path.root}/../assets/add-certificate.swift"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bashrc"
|
||||
source = "./assets/bashrc"
|
||||
source = "${path.root}/../assets/bashrc"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = ".bash_profile"
|
||||
source = "./assets/bashprofile"
|
||||
source = "${path.root}/../assets/bashprofile"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"mkdir ~/bootstrap"
|
||||
]
|
||||
inline = ["mkdir ~/bootstrap"]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "bootstrap"
|
||||
source = "./assets/bootstrap-provisioner/"
|
||||
source = "${path.root}/../assets/bootstrap-provisioner/"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "image-generation/toolset.json"
|
||||
source = "./toolsets/toolset-13.json"
|
||||
destination = "${local.image_folder}/toolset.json"
|
||||
source = "${path.root}/../toolsets/toolset-13.json"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'"
|
||||
inline = [
|
||||
"mv ~/image-generation/docs-gen ~/image-generation/software-report",
|
||||
"mv ~/image-generation/xamarin-selector ~/image-generation/assets",
|
||||
"mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report",
|
||||
"mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets",
|
||||
"mkdir ~/utils",
|
||||
"mv ~/image-generation/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ~/image-generation/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/utils.sh ~/utils",
|
||||
"mv ~/image-generation/helpers/xamarin-utils.sh ~/utils"
|
||||
"mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils",
|
||||
"mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/utils.sh ~/utils",
|
||||
"mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-xcode-clt.sh",
|
||||
"./scripts/build/install-homebrew.sh",
|
||||
"./scripts/build/install-rosetta.sh"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-xcode-clt.sh",
|
||||
"${path.root}/../scripts/build/install-homebrew.sh"
|
||||
]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-tccdb-macos.sh",
|
||||
"./scripts/build/configure-auto-updates.sh",
|
||||
"./scripts/build/configure-ntpconf.sh",
|
||||
"./scripts/build/configure-shell.sh"
|
||||
environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-tccdb-macos.sh",
|
||||
"${path.root}/../scripts/build/configure-auto-updates.sh",
|
||||
"${path.root}/../scripts/build/configure-ntpconf.sh",
|
||||
"${path.root}/../scripts/build/configure-shell.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"PASSWORD=${var.vm_password}",
|
||||
"USERNAME=${var.vm_username}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-preimagedata.sh",
|
||||
"./scripts/build/configure-ssh.sh",
|
||||
"./scripts/build/configure-machine.sh"
|
||||
environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/configure-preimagedata.sh",
|
||||
"${path.root}/../scripts/build/configure-ssh.sh",
|
||||
"${path.root}/../scripts/build/configure-machine.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"IMAGE_VERSION=${var.build_id}",
|
||||
"IMAGE_OS=${var.image_os}",
|
||||
"PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"./scripts/build/configure-windows.sh",
|
||||
"./scripts/build/install-powershell.sh",
|
||||
"./scripts/build/install-mono.sh",
|
||||
"./scripts/build/install-dotnet.sh",
|
||||
"./scripts/build/install-azcopy.sh",
|
||||
"./scripts/build/install-openssl.sh",
|
||||
"./scripts/build/install-ruby.sh",
|
||||
"./scripts/build/install-rubygems.sh",
|
||||
"./scripts/build/install-git.sh",
|
||||
"./scripts/build/install-node.sh",
|
||||
"./scripts/build/install-common-utils.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
pause_before = "30s"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/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-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"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}",
|
||||
"USER_PASSWORD=${var.vm_password}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/Install-Xcode.ps1"
|
||||
environment_vars = [
|
||||
"XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}",
|
||||
"XCODE_INSTALL_SAS=${var.xcode_install_sas}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/Install-Xcode.ps1"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
|
||||
expect_disconnect = true
|
||||
inline = ["echo 'Reboot VM'", "shutdown -r now"]
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/install-actions-cache.sh",
|
||||
"./scripts/build/install-llvm.sh",
|
||||
"./scripts/build/install-openjdk.sh",
|
||||
"./scripts/build/install-aws-tools.sh",
|
||||
"./scripts/build/install-rust.sh",
|
||||
"./scripts/build/install-gcc.sh",
|
||||
"./scripts/build/install-cocoapods.sh",
|
||||
"./scripts/build/install-android-sdk.sh",
|
||||
"./scripts/build/install-safari.sh",
|
||||
"./scripts/build/install-chrome.sh",
|
||||
"./scripts/build/install-bicep.sh",
|
||||
"./scripts/build/install-codeql-bundle.sh"
|
||||
environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/install-actions-cache.sh",
|
||||
"${path.root}/../scripts/build/install-llvm.sh",
|
||||
"${path.root}/../scripts/build/install-openjdk.sh",
|
||||
"${path.root}/../scripts/build/install-aws-tools.sh",
|
||||
"${path.root}/../scripts/build/install-rust.sh",
|
||||
"${path.root}/../scripts/build/install-gcc.sh",
|
||||
"${path.root}/../scripts/build/install-cocoapods.sh",
|
||||
"${path.root}/../scripts/build/install-android-sdk.sh",
|
||||
"${path.root}/../scripts/build/install-safari.sh",
|
||||
"${path.root}/../scripts/build/install-chrome.sh",
|
||||
"${path.root}/../scripts/build/install-bicep.sh",
|
||||
"${path.root}/../scripts/build/install-codeql-bundle.sh"
|
||||
]
|
||||
environment_vars = [
|
||||
"API_PAT=${var.github_api_pat}"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/Install-Toolset.ps1",
|
||||
"./scripts/build/Configure-Toolset.ps1"
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
scripts = [
|
||||
"${path.root}/../scripts/build/Install-Toolset.ps1",
|
||||
"${path.root}/../scripts/build/Configure-Toolset.ps1"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
script = "./scripts/build/configure-xcode-simulators.rb"
|
||||
execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}"
|
||||
script = "${path.root}/../scripts/build/configure-xcode-simulators.rb"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"pwsh -File \"$HOME/image-generation/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"$HOME/image-generation/tests/RunAll-Tests.ps1\""
|
||||
environment_vars = ["IMAGE_FOLDER=${local.image_folder}"]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
inline = [
|
||||
"pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}",
|
||||
"pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\""
|
||||
]
|
||||
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
destination = "../image-output/"
|
||||
direction = "download"
|
||||
source = "./image-generation/output/"
|
||||
destination = "${path.root}/../../image-output/"
|
||||
direction = "download"
|
||||
source = "${local.image_folder}/output/"
|
||||
}
|
||||
|
||||
provisioner "shell" {
|
||||
scripts = [
|
||||
"./scripts/build/configure-hostname.sh"
|
||||
]
|
||||
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
|
||||
scripts = ["${path.root}/../scripts/build/configure-hostname.sh"]
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user