Compare commits

...
16 Commits
Author SHA1 Message Date
Fedor Korotkov 2e6e2dfb6e Removed redundant xcodes version command in provisioner 2025-11-12 20:23:10 -05:00
Fedor Korotkov 0652373c8c Updated simulator 2025-11-12 20:21:25 -05:00
Fedor Korotkov 082799eb6f Fixed Xcodes installation (#304)
* Fixed Xcodes installation

* Removed redundant execution lock from Cirrus runner configuration
2025-11-12 19:14:44 -05:00
Fedor Korotkov 3b47c8dfc6 Revert GitHub Actions Runner compatibility provisioner changes 2025-11-12 19:00:34 -05:00
Fedor Korotkov 69ed3fe0fa Xcode 26.1.1 (#302)
* Xcode 26.1.1

* Proper literal

* Install prebuilt binary for xcodes

* split

* Revert "split"

This reverts commit 8a0363fe31.

* Fix xcodes installation and update file ownership logic

* echo path

* Use full path

* revert chmod
2025-11-12 18:18:51 -05:00
Fedor Korotkov 256b8cc1c8 Restart VM while building Xcode variant (#301)
* Restart VM while building Xcode variant

In an attempt to make https://github.com/actions/runner-images/issues/12948 less flaky. Xcode Release Notes at some point mentioend a first boot for another issue so let's make the VM boot twoce and do caching population just to be extra cautios.

* just `xcrun simctl list -v`

* support sonoma
2025-11-11 18:10:42 -05:00
Fedor KorotkovandChristoph Aldrian d7752dd971 Xcode 26.1 Release and 26.2 Beta (#298)
* Xcode 26.1 Release and 26.2 Beta

Plus installed tvOS 17.5 on Sequoia runner

* Update .ci/cirrus.runner.yml

Co-authored-by: Christoph Aldrian <caldrian@users.noreply.github.com>

* Updated expected runtimes

* Bump disk for Tahoe

* install `otel-cli`

---------

Co-authored-by: Christoph Aldrian <caldrian@users.noreply.github.com>
2025-11-08 09:26:25 -05:00
Fedor Korotkov 64b8b7407b macOS Tahoe 26.1 2025-11-04 08:44:11 -05:00
Fedor Korotkov 91c8fbf624 Do not auto-update Ventura 2025-11-01 12:01:55 -04:00
Fedor Korotkov aec76f172d Ruby 3.3.10 2025-11-01 12:00:49 -04:00
Fedor Korotkov a2b4e1ebfe Xcode 26.1-rc (#297)
* Xcode 26.1-rc

* Updated simulators
2025-11-01 10:41:03 -04:00
Fedor Korotkov 1f481f72c7 Xcode 26 Beta 3 (#296)
* Xcode 26 Beta 3

* Updated expected runtimes

* Removed iOS 26 due to

> iOS 26 is not available for download.

Seems only 26.0.1 is available.
2025-10-25 10:57:45 -04:00
Fedor Korotkov 463004bc84 Xcode 26 Beta 2 (#291)
* Xcode 26 Beta 2

* Updated expected runtimes

* new line
2025-10-10 12:27:20 -04:00
Fedor Korotkov 6755f3d245 Removed update (#293) 2025-10-10 20:25:46 +04:00
Nikolay Edigaryev aa8af495d1 README.md: update image descriptions (#289)
* README.md: update image descriptions

* Proper Xcode spelling
2025-09-29 15:57:11 +04:00
Fedor Korotkov 4232c64336 Remove asdf installation from base image (#290) 2025-09-29 07:44:04 -04:00
11 changed files with 72 additions and 39 deletions
-3
View File
@@ -2,9 +2,6 @@ task:
name: "Update Base Images ($MACOS_VERSION)"
alias: update-base
matrix:
- env:
MACOS_VERSION: ventura
DISABLE_SIP_TEMPLATE: disable-sip.pkr.hcl
- env:
MACOS_VERSION: sonoma
DISABLE_SIP_TEMPLATE: disable-sip.pkr.hcl
+4 -3
View File
@@ -1,6 +1,5 @@
task:
name: "Update Runner Image ($MACOS_VERSION)"
execution_lock: runner-image-update
env:
matrix:
- MACOS_VERSION: sonoma
@@ -9,12 +8,13 @@ task:
- MACOS_VERSION: sequoia
XCODE_VERSIONS: "\"26.0.1\",16.4,16.3,16.2,16.1,16"
ADDITIONAL_IOS_BUILDS: "18.5,18.4,18.2,17.5"
ADDITIONAL_TVOS_BUILDS: "17.5"
XCODE_COMPONENTS: "\"MetalToolchain\""
DISK_SIZE: 400
- MACOS_VERSION: tahoe
XCODE_VERSIONS: "\"26.0.1\",\"26.1-beta\""
XCODE_VERSIONS: "\"26.1.1\",\"26.0.1\",\"26.2-beta\""
XCODE_COMPONENTS: "\"MetalToolchain\""
DISK_SIZE: 240
DISK_SIZE: 280
<<: *defaults
pull_base_script:
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
@@ -25,6 +25,7 @@ task:
-var macos_version="$MACOS_VERSION" \
-var xcode_version="[$XCODE_VERSIONS]" \
-var additional_ios_builds="[$ADDITIONAL_IOS_BUILDS]" \
-var additional_tvos_builds="[$ADDITIONAL_TVOS_BUILDS]" \
-var xcode_components="[$XCODE_COMPONENTS]" \
-var expected_runtimes_file="data/expected.$MACOS_VERSION.runtimes.txt" \
templates/xcode.pkr.hcl
-1
View File
@@ -9,7 +9,6 @@ task:
- MACOS_VERSION: tahoe
- MACOS_VERSION: sequoia
- MACOS_VERSION: sonoma
- MACOS_VERSION: ventura
- MACOS_VERSION: monterey
only_if: $CIRRUS_BRANCH == $CIRRUS_DEFAULT_BRANCH && changesInclude("templates/vanilla-$MACOS_VERSION.pkr.hcl")
<<: *defaults
+4 -4
View File
@@ -4,9 +4,12 @@ task:
env:
matrix:
- MACOS_VERSION: tahoe
XCODE_VERSION: "26.0.1"
XCODE_VERSION: "26.1.1"
XCODE_COMPONENTS: "MetalToolchain"
LATEST: true
- MACOS_VERSION: tahoe
XCODE_VERSION: "26.0.1"
XCODE_COMPONENTS: "MetalToolchain"
- MACOS_VERSION: sequoia
XCODE_VERSION: 16.4
LATEST: true
@@ -25,9 +28,6 @@ task:
XCODE_VERSION: 16
- MACOS_VERSION: sonoma
XCODE_VERSION: 15.4
- MACOS_VERSION: ventura
XCODE_VERSION: 15.4
LATEST: true
<<: *defaults
pull_base_script:
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
-3
View File
@@ -13,9 +13,6 @@ env:
defaults: &defaults
timeout_in: 3h
update_script:
- brew update || true
- brew upgrade || true
info_script:
- tart --version
- packer --version
+4 -3
View File
@@ -5,9 +5,10 @@ Repository with Packer templates to build macOS [Tart](https://tart.run/) virtua
The following image variants are currently available:
* `macos-{tahoe,sequoia,sonoma}-base` image has only `brew` pre-installed and the latest version of `macOS` available
* `macos-{tahoe,sequoia,sonoma}-xcode:N` image is based on `macos-{tahoe,sequoia,sonoma}-base` image and has `Xcode N` with [`Flutter`](https://flutter.dev/) pre-installed
* `macos-runner:{tahoe,sequoia,sonoma}` image is a variant of `xcode:N` with several versions of `Xcode` pre-installed and [`xcodes` tool](https://github.com/XcodesOrg/xcodes) to switch between them.
* `macos-{tahoe,sequoia,sonoma}-vanilla` — a vanilla macOS installation with helpful tweaks such as auto-login, but no additional software preinstalled
* `macos-{tahoe,sequoia,sonoma}-base` — based on `macos-{tahoe,sequoia,sonoma}-vanilla` image, it comes with `brew` and [other useful software](https://github.com/cirruslabs/macos-image-templates/blob/main/templates/base.pkr.hcl) pre-installed, but without Xcode
* `macos-{tahoe,sequoia,sonoma}-xcode:N` — based on `macos-{tahoe,sequoia,sonoma}-base` image and has `Xcode N` with [`Flutter`](https://flutter.dev/) pre-installed
* `macos-runner:{tahoe,sequoia,sonoma}` — a variant of `xcode:N` with several versions of `Xcode` pre-installed and [`xcodes` tool](https://github.com/XcodesOrg/xcodes) to switch between them.
See a full list of VMs available [here](https://github.com/orgs/cirruslabs/packages?tab=packages&q=macos-).
+2 -1
View File
@@ -7,7 +7,8 @@ iOS 18.3 (18.3.1 - 22D8075) - com.apple.CoreSimulator.SimRuntime.iOS-18-3
iOS 18.4 (18.4 - 22E238) - com.apple.CoreSimulator.SimRuntime.iOS-18-4
iOS 18.5 (18.5 - 22F77) - com.apple.CoreSimulator.SimRuntime.iOS-18-5
iOS 18.6 (18.6 - 22G86) - com.apple.CoreSimulator.SimRuntime.iOS-18-6
iOS 26.0 (26.0 - 23A343) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
iOS 26.0 (26.0.1 - 23A8464) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
tvOS 17.5 (17.5 - 21L569) - com.apple.CoreSimulator.SimRuntime.tvOS-17-5
tvOS 18.4 (18.4 - 22L254) - com.apple.CoreSimulator.SimRuntime.tvOS-18-4
tvOS 18.5 (18.5 - 22L572) - com.apple.CoreSimulator.SimRuntime.tvOS-18-5
tvOS 26.0 (26.0 - 23J352) - com.apple.CoreSimulator.SimRuntime.tvOS-26-0
+9 -5
View File
@@ -1,9 +1,13 @@
== Runtimes ==
iOS 26.0 (26.0 - 23A343) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
iOS 26.1 (26.1 - 23B5044k) - com.apple.CoreSimulator.SimRuntime.iOS-26-1
iOS 26.0 (26.0.1 - 23A8464) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
iOS 26.1 (26.1 - 23B86) - com.apple.CoreSimulator.SimRuntime.iOS-26-1
iOS 26.2 (26.2 - 23C5027f) - com.apple.CoreSimulator.SimRuntime.iOS-26-2
tvOS 26.0 (26.0 - 23J352) - com.apple.CoreSimulator.SimRuntime.tvOS-26-0
tvOS 26.1 (26.1 - 23J5543j) - com.apple.CoreSimulator.SimRuntime.tvOS-26-1
tvOS 26.1 (26.1 - 23J579) - com.apple.CoreSimulator.SimRuntime.tvOS-26-1
tvOS 26.2 (26.2 - 23K5029e) - com.apple.CoreSimulator.SimRuntime.tvOS-26-2
watchOS 26.0 (26.0 - 23R353) - com.apple.CoreSimulator.SimRuntime.watchOS-26-0
watchOS 26.1 (26.1 - 23S5002i) - com.apple.CoreSimulator.SimRuntime.watchOS-26-1
watchOS 26.1 (26.1 - 23S36) - com.apple.CoreSimulator.SimRuntime.watchOS-26-1
watchOS 26.2 (26.2 - 23S5280e) - com.apple.CoreSimulator.SimRuntime.watchOS-26-2
visionOS 26.0 (26.0 - 23M336) - com.apple.CoreSimulator.SimRuntime.xrOS-26-0
visionOS 26.1 (26.1 - 23N5013j) - com.apple.CoreSimulator.SimRuntime.xrOS-26-1
visionOS 26.1 (26.1 - 23N47) - com.apple.CoreSimulator.SimRuntime.xrOS-26-1
visionOS 26.2 (26.2 - 23N5279e) - com.apple.CoreSimulator.SimRuntime.xrOS-26-2
+1 -2
View File
@@ -65,6 +65,7 @@ build {
"brew --version",
"brew update",
"brew install wget unzip zip ca-certificates cmake gcc git-lfs jq yq gh gitlab-runner",
"brew install equinix-labs/otel-cli/otel-cli",
"brew install curl || true", // doesn't work on Monterey
"brew install --cask git-credential-manager",
"git lfs install",
@@ -105,8 +106,6 @@ build {
"brew install libyaml", # https://github.com/rbenv/ruby-build/discussions/2118
"brew install rbenv",
"echo 'if which rbenv > /dev/null; then eval \"$(rbenv init -)\"; fi' >> ~/.zprofile",
"brew install asdf",
"echo 'export PATH=\"$${ASDF_DATA_DIR:-$HOME/.asdf}/shims:$PATH\"' >> ~/.zprofile",
"brew install mise",
"source ~/.zprofile",
"rbenv install 2.7.8", // latest 2.x.x before EOL
+1 -1
View File
@@ -12,7 +12,7 @@ packer {
}
source "tart-cli" "tart" {
from_ipsw = "https://updates.cdn-apple.com/2025FallFCS/fullrestores/093-37622/CE01FAB2-7F26-48EE-AEE4-5E57A7F6D8BB/UniversalMac_26.0_25A354_Restore.ipsw"
from_ipsw = "https://updates.cdn-apple.com/2025FallFCS/fullrestores/089-04148/791B6F00-A30B-4EB0-B2E3-257167F7715B/UniversalMac_26.1_25B78_Restore.ipsw"
vm_name = "tahoe-vanilla"
cpu_count = 4
memory_gb = 8
+47 -13
View File
@@ -20,6 +20,11 @@ variable "additional_ios_builds" {
default = []
}
variable "additional_tvos_builds" {
type = list(string)
default = []
}
variable "xcode_components" {
type = list(string)
default = []
@@ -132,7 +137,7 @@ build {
provisioner "shell" {
inline = [
"source ~/.zprofile",
"brew install xcodesorg/made/xcodes",
"brew install xcodes",
"xcodes version",
]
}
@@ -200,6 +205,15 @@ build {
)
}
provisioner "shell" {
inline = concat(
["source ~/.zprofile"],
[
for runtime in var.additional_tvos_builds : "xcodebuild -downloadPlatform tvOS -buildVersion ${runtime}"
]
)
}
provisioner "shell" {
inline = concat(
["source ~/.zprofile"],
@@ -215,7 +229,7 @@ build {
"brew install libimobiledevice ideviceinstaller ios-deploy carthage",
"brew install xcbeautify swiftformat swiftlint swiftgen licenseplist",
"brew install mint tuist/tuist/tuist",
"rbenv global 3.3.9", # fastlane conflicts with 3.4.0+ https://github.com/fastlane/fastlane/issues/29527
"rbenv global 3.3.10", # fastlane conflicts with 3.4.0+ https://github.com/fastlane/fastlane/issues/29527
"gem update",
"gem install fastlane",
"gem install cocoapods",
@@ -322,6 +336,37 @@ build {
]
}
# Wait for the "update_dyld_sim_shared_cache" process[1][2] to finish
# to avoid wasting CPU cycles after boot
#
# [1]: https://apple.stackexchange.com/questions/412101/update-dyld-sim-shared-cache-is-taking-up-a-lot-of-memory
# [2]: https://stackoverflow.com/a/68394101/9316533
provisioner "shell" {
inline = [
"source ~/.zprofile",
"xcrun simctl runtime dyld_shared_cache update --all || sleep 180",
"xcrun simctl list -v",
]
}
// Restart the VM
provisioner "shell" {
inline = [
"sudo shutdown -r now"
]
expect_disconnect = true
}
// Wait for VM to come back up and run simctl commands again
provisioner "shell" {
inline = [
"source ~/.zprofile",
"xcrun simctl runtime dyld_shared_cache update --all || sleep 180",
"xcrun simctl list -v"
]
pause_before = "60s"
}
# Compatibility with GitHub Actions Runner Images, where
# /usr/local/bin belongs to the default user. Also see [2].
#
@@ -333,17 +378,6 @@ build {
]
}
# Wait for the "update_dyld_sim_shared_cache" process[1][2] to finish
# to avoid wasting CPU cycles after boot
#
# [1]: https://apple.stackexchange.com/questions/412101/update-dyld-sim-shared-cache-is-taking-up-a-lot-of-memory
# [2]: https://stackoverflow.com/a/68394101/9316533
provisioner "shell" {
inline = [
"sleep 1800"
]
}
// Install setup-info-generator
provisioner "shell" {
inline = [