Compare commits

..
39 Commits
Author SHA1 Message Date
Fedor Korotkov 5e8c823ef0 Install all iOS packages after Xcode installation 2025-08-02 05:05:49 -04:00
Fedor Korotkov b6445b9d3a Xcode 26 Beta 4 (#256)
* Xcode 26 Beta 4

* Updated simulators

* Updated simulators

* Fixes after CI

* New line

* bring back 18.5

* bump disk
2025-08-02 04:48:25 -04:00
Fedor Korotkov ad9ce34d12 Install additional common packages (#257) 2025-08-01 15:14:46 -04:00
Fedor Korotkov 9746337eeb Sonoma 15.6 2025-07-29 17:08:48 -04:00
Fedor Korotkov f7880705ec All simulators for the last 3 versions of Xcode (#254) 2025-07-23 16:44:14 -04:00
Fedor Korotkov bc67673068 Update cirrus.runner.yml 2025-07-14 16:17:41 -04:00
Fedor Korotkov 393d7c615b Sonoma Xcode 15.4 (#253)
* Sonoma Xcode 15.4

* More disk

* watchOS 10.5 on sonoma

* Removed watchOS
2025-07-14 15:38:02 -04:00
Fedor Korotkov f292033e59 Fixed index out of bound 2025-07-14 14:43:21 -04:00
Fedor Korotkov e3cf995511 Xcode 26 Beta 3 (#251)
* Xcode 26 Beta 3

* Print disk sizes between Xcodes

* Tweak sizes

* Strip some simulators

* 17.5 for sonoma

* fixed expected runtimes

* Tweaked disk sizes
2025-07-11 15:01:42 -04:00
James Smith 3c3581a46f Update image to macOS 26 beta 3 (#250) 2025-07-08 00:45:56 -04:00
Fedor Korotkov 2fbdfd6186 Beta 1 runtimes 2025-07-07 08:14:11 +04:00
Fedor Korotkov a806b2d4ef Reverted to 26-beta 2025-07-07 08:09:46 +04:00
Fedor Korotkov c48cab887b Reverted to 26-beta-1 2025-07-07 08:06:34 +04:00
Fedor Korotkov d5d126deaa Revert "Updated runtimes"
This reverts commit ac6cbef9a6.
2025-07-07 08:06:28 +04:00
fedor ac6cbef9a6 Updated runtimes 2025-06-29 06:54:08 -07:00
Fedor Korotkov 9736671744 Xcode 26 Beta 2 (#249)
* Xcode 26 Beta 2

* Updated runtimes
2025-06-28 16:25:56 -07:00
Fedor Korotkov 2ec40d16cb macOS Tahoe Beta 2 (#248) 2025-06-24 10:39:45 -04:00
Nikolay Edigaryev ce496aa3ad Increase timeouts before "Select Your Country or Region" (#247)
...and "Welcome to Mac" screens.
2025-06-16 09:34:15 -04:00
fedor 660eac6ae0 Removed brew doctor
Because of Tahoe
2025-06-12 21:45:23 -07:00
fedor 530036c1bc Trigger vanilla 2025-06-12 18:05:15 -07:00
Fedor Korotkov 69ca3f729a Build base/xcode/runner variants for Tahoe (#245) 2025-06-12 16:23:41 -07:00
Nikolay Edigaryev e70eea50c4 Automated macOS 26 (Tahoe) installation (#244)
* Automated macOS 26 (Tahoe) installation

* Support "Command Line Tools beta  for Xcode-26.0" label

* account for "beta"
* preserve multiple spaces

* .ci/cirrus.vanilla.yml: add "MACOS_VERSION: tahoe"

* Disable SIP for Tahoe
2025-06-12 10:16:46 -07:00
Nikolay Edigaryev 3ac0f46b3e tart-guest-agent: specify TERM and set working directory to HOME (#243) 2025-06-12 00:08:06 +04:00
Fedor Korotkov 63e44895a7 New line 2025-06-09 16:27:39 -07:00
Fedor Korotkov c1d543be58 Xcode 26 beta (#241)
* Xcode 26 beta

* Updated Runtimes
2025-06-09 14:52:00 -07:00
fedor ca553f0b1d Fixed syntax 2025-05-31 10:50:39 -04:00
fedor b9ffc31440 Build runners on release 2025-05-31 10:48:36 -04:00
Fedor Korotkov 0b4954f232 Pre install swiftformat (#239) 2025-05-30 17:47:05 -04:00
Fedor Korotkov f2d0330eec Xcode 16.4 (#238) 2025-05-29 09:01:24 -04:00
Nikolay Edigaryev 6ae3ffd75f Tart Guest Agent: use component groups (#237) 2025-05-19 14:26:23 -04:00
fedor 64f4871059 400GB for runners 2025-05-18 09:56:13 -04:00
fedor 5f35113643 new line 2025-05-18 08:27:39 -04:00
fedor 9ec94173b3 Updated expected runtimes 2025-05-17 17:38:59 -04:00
fedor 0eafad7bcf Xcode 16.4-rc 2025-05-15 17:38:28 -04:00
Nikolay Edigaryev 1fd4c5e3ae xcode.pkr.hcl: increase default disk size from 100 to 120 GB (#235) 2025-05-13 15:23:45 +04:00
Fedor Korotkov cfed2eac90 macOS Sequoia 15.5 2025-05-12 15:49:46 -04:00
Nikolay Edigaryev 7be8facd36 Use separate log file for tart-guest-daemon (#234)
* Use separate log file for tart-guest-daemon

* Add /usr/sbin to PATH
2025-05-12 16:41:35 +04:00
fedor 6f66644628 Bring back iOS 17.5 2025-05-05 06:23:49 -04:00
fedor 2401e19f34 Updated runners push logic 2025-05-04 09:03:34 -04:00
15 changed files with 275 additions and 64 deletions
+2
View File
@@ -6,6 +6,8 @@ task:
MACOS_VERSION: sonoma
- env:
MACOS_VERSION: sequoia
- env:
MACOS_VERSION: tahoe
<<: *defaults
pull_vanilla_script:
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-vanilla:latest
+9 -8
View File
@@ -4,12 +4,13 @@ task:
env:
matrix:
- MACOS_VERSION: sonoma
XCODE_VERSIONS: "16.1,16,15.4,15.3,15.2,15.1,\"15.0.1\""
DISK_SIZE: 375
XCODE_VERSIONS: "16.1,16,15.4"
ADDITIONAL_IOS_BUILDS: "17.5"
DISK_SIZE: 275
- MACOS_VERSION: sequoia
XCODE_VERSIONS: "16.3,\"16.4-beta\",16.2,16.1,16"
ADDITIONAL_IOS_BUILDS: "18.4,18.2"
DISK_SIZE: 375
XCODE_VERSIONS: "16.4,\"26-beta-4\",16.3,16.2,16.1,16"
ADDITIONAL_IOS_BUILDS: "18.5,18.4,18.2,17.5"
DISK_SIZE: 600
<<: *defaults
pull_base_script:
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
@@ -23,10 +24,10 @@ task:
-var expected_runtimes_file="data/expected.$MACOS_VERSION.runtimes.txt" \
templates/xcode.pkr.hcl
push_script: |
if [[ -z "$CIRRUS_CRON" ]]; then
echo "Not a cron build, skipping pushing..."
else
if [[ -z "$CIRRUS_PR" ]]; then
tart push "$MACOS_VERSION-xcode:runner" ghcr.io/cirruslabs/macos-runner:$MACOS_VERSION
else
echo "Skipping pushing for PR..."
fi
always:
cleanup_script:
+2
View File
@@ -7,6 +7,8 @@ task:
name: "Update Vanilla Image ($MACOS_VERSION)"
env:
matrix:
- MACOS_VERSION: tahoe
DISABLE_SIP_TEMPLATE: disable-sip-with-username.pkr.hcl
- MACOS_VERSION: sequoia
DISABLE_SIP_TEMPLATE: disable-sip-with-username.pkr.hcl
- MACOS_VERSION: sonoma
+5 -2
View File
@@ -3,11 +3,14 @@ task:
depends_on: update-base
env:
matrix:
- MACOS_VERSION: tahoe
XCODE_VERSION: 26-beta-4
LATEST: true
- MACOS_VERSION: sequoia
XCODE_VERSION: 16.4-beta
XCODE_VERSION: 16.4
LATEST: true
- MACOS_VERSION: sequoia
XCODE_VERSION: 16.3
LATEST: true
- MACOS_VERSION: sequoia
XCODE_VERSION: 16.2
- MACOS_VERSION: sequoia
+2 -1
View File
@@ -46,6 +46,7 @@ def main(ctx):
if env.get("CIRRUS_CRON") == "monthly":
result += fs.read(".ci/cirrus.base.yml")
result += fs.read(".ci/cirrus.xcode.yml")
if env.get("CIRRUS_CRON") == "weekly" or changes_include(".ci/cirrus.runner.yml"):
prForRunners = env.get("CIRRUS_PR") and changes_include(".ci/cirrus.runner.yml")
if prForRunners or env.get("CIRRUS_TAG") != None:
result += fs.read(".ci/cirrus.runner.yml")
return result
+10 -13
View File
@@ -1,22 +1,19 @@
== Runtimes ==
iOS 17.5 (17.5 - 21F79) - com.apple.CoreSimulator.SimRuntime.iOS-17-5
iOS 18.0 (18.0 - 22A3351) - com.apple.CoreSimulator.SimRuntime.iOS-18-0
iOS 18.1 (18.1 - 22B81) - com.apple.CoreSimulator.SimRuntime.iOS-18-1
iOS 18.2 (18.2 - 22C150) - com.apple.CoreSimulator.SimRuntime.iOS-18-2
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 - 22F5067a) - com.apple.CoreSimulator.SimRuntime.iOS-18-5
tvOS 18.0 (18.0 - 22J356) - com.apple.CoreSimulator.SimRuntime.tvOS-18-0
tvOS 18.1 (18.1 - 22J578) - com.apple.CoreSimulator.SimRuntime.tvOS-18-1
tvOS 18.2 (18.2 - 22K154) - com.apple.CoreSimulator.SimRuntime.tvOS-18-2
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 - 23A5297i) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
tvOS 18.4 (18.4 - 22L254) - com.apple.CoreSimulator.SimRuntime.tvOS-18-4
tvOS 18.5 (18.5 - 22L5565a) - com.apple.CoreSimulator.SimRuntime.tvOS-18-5
watchOS 11.0 (11.0 - 22R349) - com.apple.CoreSimulator.SimRuntime.watchOS-11-0
watchOS 11.1 (11.1 - 22R581) - com.apple.CoreSimulator.SimRuntime.watchOS-11-1
watchOS 11.2 (11.2 - 22S99) - com.apple.CoreSimulator.SimRuntime.watchOS-11-2
tvOS 18.5 (18.5 - 22L572) - com.apple.CoreSimulator.SimRuntime.tvOS-18-5
tvOS 26.0 (26.0 - 23J5316g) - com.apple.CoreSimulator.SimRuntime.tvOS-26-0
watchOS 11.4 (11.4 - 22T250) - com.apple.CoreSimulator.SimRuntime.watchOS-11-4
watchOS 11.5 (11.5 - 22T5566a) - com.apple.CoreSimulator.SimRuntime.watchOS-11-5
visionOS 2.0 (2.0 - 22N318) - com.apple.CoreSimulator.SimRuntime.xrOS-2-0
visionOS 2.1 (2.1 - 22N580) - com.apple.CoreSimulator.SimRuntime.xrOS-2-1
visionOS 2.3 (2.3 - 22N895) - com.apple.CoreSimulator.SimRuntime.xrOS-2-3
watchOS 11.5 (11.5 - 22T572) - com.apple.CoreSimulator.SimRuntime.watchOS-11-5
watchOS 26.0 (26.0 - 23R5317g) - com.apple.CoreSimulator.SimRuntime.watchOS-26-0
visionOS 2.4 (2.4 - 22O237) - com.apple.CoreSimulator.SimRuntime.xrOS-2-4
visionOS 2.5 (2.5 - 22O5467a) - com.apple.CoreSimulator.SimRuntime.xrOS-2-5
visionOS 2.5 (2.5 - 22O473) - com.apple.CoreSimulator.SimRuntime.xrOS-2-5
visionOS 26.0 (26.0 - 23M5300g) - com.apple.CoreSimulator.SimRuntime.xrOS-26-0
-11
View File
@@ -1,24 +1,13 @@
== Runtimes ==
iOS 17.0 (17.0.1 - 21A342) - com.apple.CoreSimulator.SimRuntime.iOS-17-0
iOS 17.2 (17.2 - 21C62) - com.apple.CoreSimulator.SimRuntime.iOS-17-2
iOS 17.4 (17.4 - 21E213) - com.apple.CoreSimulator.SimRuntime.iOS-17-4
iOS 17.5 (17.5 - 21F79) - com.apple.CoreSimulator.SimRuntime.iOS-17-5
iOS 18.0 (18.0 - 22A3351) - com.apple.CoreSimulator.SimRuntime.iOS-18-0
iOS 18.1 (18.1 - 22B81) - com.apple.CoreSimulator.SimRuntime.iOS-18-1
tvOS 17.0 (17.0 - 21J353) - com.apple.CoreSimulator.SimRuntime.tvOS-17-0
tvOS 17.2 (17.2 - 21K364) - com.apple.CoreSimulator.SimRuntime.tvOS-17-2
tvOS 17.4 (17.4 - 21L224) - com.apple.CoreSimulator.SimRuntime.tvOS-17-4
tvOS 17.5 (17.5 - 21L569) - com.apple.CoreSimulator.SimRuntime.tvOS-17-5
tvOS 18.0 (18.0 - 22J356) - com.apple.CoreSimulator.SimRuntime.tvOS-18-0
tvOS 18.1 (18.1 - 22J578) - com.apple.CoreSimulator.SimRuntime.tvOS-18-1
watchOS 10.0 (10.0 - 21R355) - com.apple.CoreSimulator.SimRuntime.watchOS-10-0
watchOS 10.2 (10.2 - 21S364) - com.apple.CoreSimulator.SimRuntime.watchOS-10-2
watchOS 10.4 (10.4 - 21T214) - com.apple.CoreSimulator.SimRuntime.watchOS-10-4
watchOS 10.5 (10.5 - 21T575) - com.apple.CoreSimulator.SimRuntime.watchOS-10-5
watchOS 11.0 (11.0 - 22R349) - com.apple.CoreSimulator.SimRuntime.watchOS-11-0
watchOS 11.1 (11.1 - 22R581) - com.apple.CoreSimulator.SimRuntime.watchOS-11-1
visionOS 1.0 (1.0 - 21N305) - com.apple.CoreSimulator.SimRuntime.xrOS-1-0
visionOS 1.1 (1.1 - 21O209) - com.apple.CoreSimulator.SimRuntime.xrOS-1-1
visionOS 1.2 (1.2 - 21O5565d) - com.apple.CoreSimulator.SimRuntime.xrOS-1-2
visionOS 2.0 (2.0 - 22N318) - com.apple.CoreSimulator.SimRuntime.xrOS-2-0
visionOS 2.1 (2.1 - 22N580) - com.apple.CoreSimulator.SimRuntime.xrOS-2-1
+5
View File
@@ -0,0 +1,5 @@
== Runtimes ==
iOS 26.0 (26.0 - 23A5287g) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
tvOS 26.0 (26.0 - 23J5306f) - com.apple.CoreSimulator.SimRuntime.tvOS-26-0
watchOS 26.0 (26.0 - 23R5307g) - com.apple.CoreSimulator.SimRuntime.watchOS-26-0
visionOS 26.0 (26.0 - 23M5290f) - com.apple.CoreSimulator.SimRuntime.xrOS-26-0
+5 -3
View File
@@ -7,15 +7,17 @@
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/tart-guest-agent</string>
<string>--run-vdagent</string>
<string>--run-agent</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/bin:/usr/bin:/usr/local/bin:/opt/homebrew/bin</string>
<string>/bin:/usr/bin:/usr/sbin:/usr/local/bin:/opt/homebrew/bin</string>
<key>TERM</key>
<string>xterm-256color</string>
</dict>
<key>WorkingDirectory</key>
<string>/var/empty</string>
<string>/Users/admin</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
+4 -4
View File
@@ -7,12 +7,12 @@
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/tart-guest-agent</string>
<string>--resize-disk</string>
<string>--run-daemon</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/bin:/usr/bin:/usr/local/bin:/opt/homebrew/bin</string>
<string>/bin:/usr/bin:/usr/sbin:/usr/local/bin:/opt/homebrew/bin</string>
</dict>
<key>WorkingDirectory</key>
<string>/var/empty</string>
@@ -21,8 +21,8 @@
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/tart-guest-agent.log</string>
<string>/tmp/tart-guest-daemon.log</string>
<key>StandardErrorPath</key>
<string>/tmp/tart-guest-agent.log</string>
<string>/tmp/tart-guest-daemon.log</string>
</dict>
</plist>
+1 -2
View File
@@ -145,8 +145,7 @@ build {
inline = [
"source ~/.zprofile",
"test -d /Users/runner",
"test -f ~/.ssh/known_hosts",
"brew doctor"
"test -f ~/.ssh/known_hosts"
]
}
+2 -2
View File
@@ -12,14 +12,14 @@ packer {
}
source "tart-cli" "tart" {
from_ipsw = "https://updates.cdn-apple.com/2025SpringFCS/fullrestores/082-23340/61923341-EE73-4C6E-BB3E-DAB3069548BF/UniversalMac_15.4.1_24E263_Restore.ipsw"
from_ipsw = "https://updates.cdn-apple.com/2025SpringFCS/fullrestores/082-44534/CE6C1054-99A3-4F67-A823-3EE9E6510CDE/UniversalMac_15.5_24F74_Restore.ipsw"
vm_name = "sequoia-vanilla"
cpu_count = 4
memory_gb = 8
disk_size_gb = 50
ssh_password = "admin"
ssh_username = "admin"
ssh_timeout = "300s"
ssh_timeout = "180s"
boot_command = [
# hello, hola, bonjour, etc.
"<wait60s><spacebar>",
+2 -2
View File
@@ -12,14 +12,14 @@ packer {
}
source "tart-cli" "tart" {
from_ipsw = "https://updates.cdn-apple.com/2024SummerFCS/fullrestores/052-69922/F5DA2B64-25EB-4370-9E89-FA5689859796/UniversalMac_14.6_23G80_Restore.ipsw"
from_ipsw = "https://updates.cdn-apple.com/2025SummerFCS/fullrestores/082-08674/51294E4D-A273-44BE-A280-A69FC347FB87/UniversalMac_15.6_24G84_Restore.ipsw"
vm_name = "sonoma-vanilla"
cpu_count = 4
memory_gb = 8
disk_size_gb = 50
ssh_password = "admin"
ssh_username = "admin"
ssh_timeout = "120s"
ssh_timeout = "180s"
boot_command = [
# hello, hola, bonjour, etc.
"<wait60s><spacebar>",
+176
View File
@@ -0,0 +1,176 @@
packer {
required_plugins {
tart = {
version = ">= 1.12.0"
source = "github.com/cirruslabs/tart"
}
ansible = {
version = "~> 1"
source = "github.com/hashicorp/ansible"
}
}
}
source "tart-cli" "tart" {
from_ipsw = "https://updates.cdn-apple.com/2025SummerSeed/fullrestores/082-72248/F32F08F8-FC66-4D24-847B-F03C6CF7C410/UniversalMac_26.0_25A5306g_Restore.ipsw"
vm_name = "tahoe-vanilla"
cpu_count = 4
memory_gb = 8
disk_size_gb = 50
ssh_password = "admin"
ssh_username = "admin"
ssh_timeout = "180s"
boot_command = [
# hello, hola, bonjour, etc.
"<wait60s><spacebar>",
# Language: most of the times we have a list of "English"[1], "English (UK)", etc. with
# "English" language already selected. If we type "english", it'll cause us to switch
# to the "English (UK)", which is not what we want. To solve this, we switch to some other
# language first, e.g. "Italiano" and then switch back to "English". We'll then jump to the
# first entry in a list of "english"-prefixed items, which will be "English".
#
# [1]: should be named "English (US)", but oh well 🤷
"<wait30s>italiano<esc>english<enter>",
# Select Your Country or Region
"<wait60s>united states<leftShiftOn><tab><leftShiftOff><spacebar>",
# Transfer Your Data to This Mac
"<wait10s><tab><tab><tab><spacebar><tab><tab><spacebar>",
# Written and Spoken Languages
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Accessibility
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Data & Privacy
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Create a Mac Account
"<wait10s><tab><tab><tab><tab><tab><tab>Managed via Tart<tab>admin<tab>admin<tab>admin<tab><tab><spacebar><tab><tab><spacebar>",
# Enable Voice Over
"<wait120s><leftAltOn><f5><leftAltOff>",
# Sign In with Your Apple ID
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Are you sure you want to skip signing in with an Apple ID?
"<wait10s><tab><spacebar>",
# Terms and Conditions
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# I have read and agree to the macOS Software License Agreement
"<wait10s><tab><spacebar>",
# Enable Location Services
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Are you sure you don't want to use Location Services?
"<wait10s><tab><spacebar>",
# Select Your Time Zone
"<wait10s><tab><tab>UTC<enter><leftShiftOn><tab><tab><leftShiftOff><spacebar>",
# Analytics
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Screen Time
"<wait10s><tab><tab><spacebar>",
# Siri
"<wait10s><tab><spacebar><leftShiftOn><tab><leftShiftOff><spacebar>",
# Choose Your Look
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
# Update Mac Automatically
"<wait10s><tab><tab><spacebar>",
# Welcome to Mac
"<wait30s><spacebar>",
# Disable Voice Over
"<leftAltOn><f5><leftAltOff>",
# Enable Keyboard navigation
# This is so that we can navigate the System Settings app using the keyboard
"<wait10s><leftAltOn><spacebar><leftAltOff>Terminal<enter>",
"<wait10s>defaults write NSGlobalDomain AppleKeyboardUIMode -int 3<enter>",
"<wait10s><leftAltOn>q<leftAltOff>",
# Now that the installation is done, open "System Settings"
"<wait10s><leftAltOn><spacebar><leftAltOff>System Settings<enter>",
# Navigate to "Sharing"
"<wait10s><leftCtrlOn><f2><leftCtrlOff><right><right><right><down>Sharing<enter>",
# Navigate to "Screen Sharing" and enable it
"<wait10s><tab><tab><tab><tab><tab><spacebar>",
# Navigate to "Remote Login" and enable it
"<wait10s><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><spacebar>",
# Quit System Settings
"<wait10s><leftAltOn>q<leftAltOff>",
# Disable Gatekeeper (1/2)
"<wait10s><leftAltOn><spacebar><leftAltOff>Terminal<enter>",
"<wait10s>sudo spctl --global-disable<enter>",
"<wait10s>admin<enter>",
"<wait10s><leftAltOn>q<leftAltOff>",
# Disable Gatekeeper (2/2)
"<wait10s><leftAltOn><spacebar><leftAltOff>System Settings<enter>",
"<wait10s><leftCtrlOn><f2><leftCtrlOff><right><right><right><down>Privacy & Security<enter>",
"<wait10s><leftShiftOn><tab><tab><tab><tab><tab><leftShiftOff>",
"<wait10s><down><wait1s><down><wait1s><enter>",
"<wait10s>admin<enter>",
"<wait10s><leftShiftOn><tab><leftShiftOff><wait1s><spacebar>",
# Quit System Settings
"<wait10s><leftAltOn>q<leftAltOff>",
]
// A (hopefully) temporary workaround for Virtualization.Framework's
// installation process not fully finishing in a timely manner
create_grace_time = "30s"
// Keep the recovery partition, otherwise it's not possible to "softwareupdate"
recovery_partition = "keep"
}
build {
sources = ["source.tart-cli.tart"]
provisioner "shell" {
inline = [
// Enable passwordless sudo
"echo admin | sudo -S sh -c \"mkdir -p /etc/sudoers.d/; echo 'admin ALL=(ALL) NOPASSWD: ALL' | EDITOR=tee visudo /etc/sudoers.d/admin-nopasswd\"",
// Enable auto-login
//
// See https://github.com/xfreebird/kcpassword for details.
"echo '00000000: 1ced 3f4a bcbc ba2c caca 4e82' | sudo xxd -r - /etc/kcpassword",
"sudo defaults write /Library/Preferences/com.apple.loginwindow autoLoginUser admin",
// Disable screensaver at login screen
"sudo defaults write /Library/Preferences/com.apple.screensaver loginWindowIdleTime 0",
// Disable screensaver for admin user
"defaults -currentHost write com.apple.screensaver idleTime 0",
// Prevent the VM from sleeping
"sudo systemsetup -setsleep Off 2>/dev/null",
// Launch Safari to populate the defaults
"/Applications/Safari.app/Contents/MacOS/Safari &",
"SAFARI_PID=$!",
"disown",
"sleep 30",
"kill -9 $SAFARI_PID",
// Enable Safari's remote automation
"sudo safaridriver --enable",
// Disable screen lock
//
// Note that this only works if the user is logged-in,
// i.e. not on login screen.
"sysadminctl -screenLock off -password admin",
]
}
provisioner "shell" {
inline = [
# Ensure that Gatekeeper is disabled
"spctl --status | grep -q 'assessments disabled'"
]
}
provisioner "shell" {
inline = [
# Install command-line tools
"touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress",
"softwareupdate --list | sed -n 's/.*Label: \\(Command Line Tools .*\\)/\\1/p' | tr '\\n' '\\0' | xargs -0 -I {} softwareupdate --install '{}'",
"rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress",
]
}
provisioner "ansible" {
playbook_file = "ansible/playbook-system-updater.yml"
extra_arguments = [
"-vvv",
]
ansible_env_vars = [
"ANSIBLE_TRANSPORT=paramiko",
"ANSIBLE_HOST_KEY_CHECKING=False",
]
use_proxy = false
}
}
+50 -16
View File
@@ -33,7 +33,7 @@ variable "tag" {
variable "disk_size" {
type = number
default = 100
default = 120
}
variable "disk_free_mb" {
@@ -72,8 +72,9 @@ locals {
"APP_DIR=$(dirname $CONTENTS_DIR)",
"sudo mv $APP_DIR /Applications/Xcode_${version}.app",
"sudo xcode-select -s /Applications/Xcode_${version}.app",
"xcodebuild -downloadAllPlatforms",
"xcodebuild -downloadPlatform iOS",
"xcodebuild -runFirstLaunch",
"df -h",
]
}
]
@@ -122,20 +123,6 @@ build {
]
}
provisioner "shell" {
inline = [
"source ~/.zprofile",
"brew install libimobiledevice ideviceinstaller ios-deploy carthage",
"brew install xcbeautify",
"rbenv global 3.3.8", # fastlane conflicts with 3.4.0+ https://github.com/fastlane/fastlane/issues/29527
"gem update",
"gem install fastlane",
"gem install cocoapods",
"gem install xcpretty",
"gem uninstall --ignore-dependencies ffi && gem install ffi -- --enable-libffi-alloc"
]
}
provisioner "shell" {
inline = [
"source ~/.zprofile",
@@ -149,6 +136,13 @@ build {
destination = "/Users/admin/Downloads/"
}
provisioner "shell" {
inline = [
"source ~/.zprofile",
"df -h",
]
}
// iterate over all Xcode versions and install them
// select the latest one as the default
dynamic "provisioner" {
@@ -159,10 +153,35 @@ build {
}
}
dynamic "provisioner" {
for_each = length(var.xcode_version) > 2 ? [2] : []
labels = ["shell"]
content {
inline = [
"source ~/.zprofile",
"sudo xcodes select '${var.xcode_version[2]}'",
"xcodebuild -downloadAllPlatforms",
]
}
}
dynamic "provisioner" {
for_each = length(var.xcode_version) > 1 ? [1] : []
labels = ["shell"]
content {
inline = [
"source ~/.zprofile",
"sudo xcodes select '${var.xcode_version[1]}'",
"xcodebuild -downloadAllPlatforms",
]
}
}
provisioner "shell" {
inline = [
"source ~/.zprofile",
"sudo xcodes select '${var.xcode_version[0]}'",
"xcodebuild -downloadAllPlatforms",
]
}
@@ -175,6 +194,21 @@ build {
)
}
provisioner "shell" {
inline = [
"source ~/.zprofile",
"brew install libimobiledevice ideviceinstaller ios-deploy carthage",
"brew install xcbeautify swiftformat swiftlint swiftgen licenseplist",
"brew install mint tuist/tuist/tuist",
"rbenv global 3.3.8", # fastlane conflicts with 3.4.0+ https://github.com/fastlane/fastlane/issues/29527
"gem update",
"gem install fastlane",
"gem install cocoapods",
"gem install xcpretty",
"gem uninstall --ignore-dependencies ffi && gem install ffi -- --enable-libffi-alloc"
]
}
// Copy expected runtimes file if provided
dynamic "provisioner" {
for_each = var.expected_runtimes_file != "" ? [1] : []