mirror of
https://github.com/cirruslabs/macos-image-templates.git
synced 2026-10-18 22:48:31 +02:00
Compare commits
45
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c1d543be58 | ||
|
|
ca553f0b1d | ||
|
|
b9ffc31440 | ||
|
|
0b4954f232 | ||
|
|
f2d0330eec | ||
|
|
6ae3ffd75f | ||
|
|
64f4871059 | ||
|
|
5f35113643 | ||
|
|
9ec94173b3 | ||
|
|
0eafad7bcf | ||
|
|
1fd4c5e3ae | ||
|
|
cfed2eac90 | ||
|
|
7be8facd36 | ||
|
|
6f66644628 | ||
|
|
2401e19f34 | ||
|
|
1a09db706a | ||
|
|
99ef3f49c7 | ||
|
|
7d267ec27b | ||
|
|
7dc9dd706d | ||
|
|
6a21d56c86 | ||
|
|
f64d712020 | ||
|
|
7b41df79bd | ||
|
|
bf4ddcee86 | ||
|
|
56a1ec662e | ||
|
|
1b15ebd8b2 | ||
|
|
1271f59338 | ||
|
|
3c4bbd340d | ||
|
|
92a5e245cc | ||
|
|
ec6a446fc1 | ||
|
|
4206908127 | ||
|
|
d42ba4a1e1 | ||
|
|
005b272792 | ||
|
|
ec0c478a02 | ||
|
|
ad419122b2 | ||
|
|
2335029721 | ||
|
|
c3819d6d35 | ||
|
|
1f9fdd5630 | ||
|
|
447a46c522 | ||
|
|
345b223e76 | ||
|
|
5f66cb1ca2 | ||
|
|
0542253d49 | ||
|
|
cdc53f0a12 | ||
|
|
99e619e634 | ||
|
|
946adbfc95 | ||
|
|
e134909aa8 |
+11
-5
@@ -5,10 +5,11 @@ task:
|
|||||||
matrix:
|
matrix:
|
||||||
- MACOS_VERSION: sonoma
|
- MACOS_VERSION: sonoma
|
||||||
XCODE_VERSIONS: "16.1,16,15.4,15.3,15.2,15.1,\"15.0.1\""
|
XCODE_VERSIONS: "16.1,16,15.4,15.3,15.2,15.1,\"15.0.1\""
|
||||||
DISK_SIZE: 375
|
DISK_SIZE: 400
|
||||||
- MACOS_VERSION: sequoia
|
- MACOS_VERSION: sequoia
|
||||||
XCODE_VERSIONS: "16.2,16.1,16,15.4"
|
XCODE_VERSIONS: "16.4,\"26-beta\",16.3,16.2,16.1,16"
|
||||||
DISK_SIZE: 320
|
ADDITIONAL_IOS_BUILDS: "18.4,18.2,17.5"
|
||||||
|
DISK_SIZE: 450
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
pull_base_script:
|
pull_base_script:
|
||||||
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
|
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
|
||||||
@@ -18,10 +19,15 @@ task:
|
|||||||
-var disk_free_mb=100000 \
|
-var disk_free_mb=100000 \
|
||||||
-var macos_version="$MACOS_VERSION" \
|
-var macos_version="$MACOS_VERSION" \
|
||||||
-var xcode_version="[$XCODE_VERSIONS]" \
|
-var xcode_version="[$XCODE_VERSIONS]" \
|
||||||
-var additional_runtimes="[$ADDITIONAL_RUNTIMES]" \
|
-var additional_ios_builds="[$ADDITIONAL_IOS_BUILDS]" \
|
||||||
|
-var expected_runtimes_file="data/expected.$MACOS_VERSION.runtimes.txt" \
|
||||||
templates/xcode.pkr.hcl
|
templates/xcode.pkr.hcl
|
||||||
push_script: |
|
push_script: |
|
||||||
tart push "$MACOS_VERSION-xcode:runner" ghcr.io/cirruslabs/macos-runner:$MACOS_VERSION
|
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:
|
always:
|
||||||
cleanup_script:
|
cleanup_script:
|
||||||
- tart delete "$MACOS_VERSION-xcode:runner"
|
- tart delete "$MACOS_VERSION-xcode:runner"
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
env:
|
env:
|
||||||
RESOLVE_VM_BASE_NAME: "ghcr.io/cirruslabs/macos-${MACOS_VERSION}-vanilla:latest"
|
|
||||||
RESOLVE_VM_NAME: "resolve-macos-number-task-id-${CIRRUS_TASK_ID}"
|
RESOLVE_VM_NAME: "resolve-macos-number-task-id-${CIRRUS_TASK_ID}"
|
||||||
RESOLVE_FILE: "${RESOLVE_VM_NAME}.txt"
|
RESOLVE_FILE: "${RESOLVE_VM_NAME}.txt"
|
||||||
|
DISABLE_SIP_TEMPLATE: disable-sip.pkr.hcl
|
||||||
|
|
||||||
task:
|
task:
|
||||||
name: "Update Vanilla Image ($MACOS_VERSION)"
|
name: "Update Vanilla Image ($MACOS_VERSION)"
|
||||||
env:
|
env:
|
||||||
matrix:
|
matrix:
|
||||||
- MACOS_VERSION: sequoia
|
- MACOS_VERSION: sequoia
|
||||||
|
DISABLE_SIP_TEMPLATE: disable-sip-with-username.pkr.hcl
|
||||||
- MACOS_VERSION: sonoma
|
- MACOS_VERSION: sonoma
|
||||||
- MACOS_VERSION: ventura
|
- MACOS_VERSION: ventura
|
||||||
- MACOS_VERSION: monterey
|
- MACOS_VERSION: monterey
|
||||||
@@ -17,9 +18,9 @@ task:
|
|||||||
- packer init templates/vanilla-$MACOS_VERSION.pkr.hcl
|
- packer init templates/vanilla-$MACOS_VERSION.pkr.hcl
|
||||||
- packer build templates/vanilla-$MACOS_VERSION.pkr.hcl
|
- packer build templates/vanilla-$MACOS_VERSION.pkr.hcl
|
||||||
disable_sip_script:
|
disable_sip_script:
|
||||||
- packer build -var vm_name=$MACOS_VERSION-vanilla templates/disable-sip.pkr.hcl
|
- packer build -var vm_name=$MACOS_VERSION-vanilla "templates/${DISABLE_SIP_TEMPLATE}"
|
||||||
resolve_macos_number_script:
|
resolve_macos_number_script:
|
||||||
- packer build -var vm_base_name=$RESOLVE_VM_BASE_NAME -var vm_name=$RESOLVE_VM_NAME -var resolve_file=$RESOLVE_FILE templates/resolve-macos-number.pkr.hcl
|
- packer build -var vm_base_name=$MACOS_VERSION-vanilla -var vm_name=$RESOLVE_VM_NAME -var resolve_file=$RESOLVE_FILE templates/resolve-macos-number.pkr.hcl
|
||||||
- echo "MACOS_NUMBER=$(cat $RESOLVE_FILE)" >> $CIRRUS_ENV
|
- echo "MACOS_NUMBER=$(cat $RESOLVE_FILE)" >> $CIRRUS_ENV
|
||||||
- rm $RESOLVE_FILE
|
- rm $RESOLVE_FILE
|
||||||
- tart delete $RESOLVE_VM_NAME
|
- tart delete $RESOLVE_VM_NAME
|
||||||
|
|||||||
+5
-13
@@ -3,30 +3,22 @@ task:
|
|||||||
depends_on: update-base
|
depends_on: update-base
|
||||||
env:
|
env:
|
||||||
matrix:
|
matrix:
|
||||||
|
- MACOS_VERSION: sequoia
|
||||||
|
XCODE_VERSION: 16.4
|
||||||
|
LATEST: true
|
||||||
|
- MACOS_VERSION: sequoia
|
||||||
|
XCODE_VERSION: 16.3
|
||||||
- MACOS_VERSION: sequoia
|
- MACOS_VERSION: sequoia
|
||||||
XCODE_VERSION: 16.2
|
XCODE_VERSION: 16.2
|
||||||
LATEST: true
|
|
||||||
- MACOS_VERSION: sequoia
|
- MACOS_VERSION: sequoia
|
||||||
XCODE_VERSION: 16.1
|
XCODE_VERSION: 16.1
|
||||||
- MACOS_VERSION: sequoia
|
- MACOS_VERSION: sequoia
|
||||||
XCODE_VERSION: 16
|
XCODE_VERSION: 16
|
||||||
- MACOS_VERSION: sequoia
|
|
||||||
XCODE_VERSION: 15.4
|
|
||||||
- MACOS_VERSION: sonoma
|
- MACOS_VERSION: sonoma
|
||||||
XCODE_VERSION: 16.1
|
XCODE_VERSION: 16.1
|
||||||
LATEST: true
|
LATEST: true
|
||||||
- MACOS_VERSION: sonoma
|
- MACOS_VERSION: sonoma
|
||||||
XCODE_VERSION: 16
|
XCODE_VERSION: 16
|
||||||
- MACOS_VERSION: sonoma
|
|
||||||
XCODE_VERSION: 15.4
|
|
||||||
- MACOS_VERSION: sonoma
|
|
||||||
XCODE_VERSION: 15.3
|
|
||||||
- MACOS_VERSION: sonoma
|
|
||||||
XCODE_VERSION: 15.2
|
|
||||||
- MACOS_VERSION: sonoma
|
|
||||||
XCODE_VERSION: 15.1
|
|
||||||
- MACOS_VERSION: sonoma
|
|
||||||
XCODE_VERSION: 15.0.1
|
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
pull_base_script:
|
pull_base_script:
|
||||||
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
|
- tart pull ghcr.io/cirruslabs/macos-$MACOS_VERSION-base:latest
|
||||||
|
|||||||
+3
-2
@@ -1,4 +1,4 @@
|
|||||||
load("cirrus", "env", "http", "fs")
|
load("cirrus", "env", "http", "fs", "changes_include")
|
||||||
load("github.com/cirrus-modules/graphql", "rerun_task_if_issue_in_logs")
|
load("github.com/cirrus-modules/graphql", "rerun_task_if_issue_in_logs")
|
||||||
|
|
||||||
|
|
||||||
@@ -46,6 +46,7 @@ def main(ctx):
|
|||||||
if env.get("CIRRUS_CRON") == "monthly":
|
if env.get("CIRRUS_CRON") == "monthly":
|
||||||
result += fs.read(".ci/cirrus.base.yml")
|
result += fs.read(".ci/cirrus.base.yml")
|
||||||
result += fs.read(".ci/cirrus.xcode.yml")
|
result += fs.read(".ci/cirrus.xcode.yml")
|
||||||
if env.get("CIRRUS_CRON") == "weekly":
|
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")
|
result += fs.read(".ci/cirrus.runner.yml")
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ monthly on the first Saturday of the month:
|
|||||||
|
|
||||||
* `ghcr.io/cirruslabs/macos-{sequoia,sonoma}-base`
|
* `ghcr.io/cirruslabs/macos-{sequoia,sonoma}-base`
|
||||||
* `ghcr.io/cirruslabs/macos-runner:sonoma` which is a superset of `ghcr.io/cirruslabs/macos-sonoma-xcode:{latest,16.1,16,15.4,15.3,15.2,15.1,15.0.1}`
|
* `ghcr.io/cirruslabs/macos-runner:sonoma` which is a superset of `ghcr.io/cirruslabs/macos-sonoma-xcode:{latest,16.1,16,15.4,15.3,15.2,15.1,15.0.1}`
|
||||||
* `ghcr.io/cirruslabs/macos-runner:sequoia` which is a superset of `ghcr.io/cirruslabs/macos-sequoia-xcode:{latest,16.2,16.1,16,15.4}`
|
* `ghcr.io/cirruslabs/macos-runner:sequoia` which is a superset of `ghcr.io/cirruslabs/macos-sequoia-xcode:{latest,16.3,16.2,16.1,16,15.4}`
|
||||||
|
|
||||||
Note that `ghcr.io/cirruslabs/macos-runner:{sequoia,sonoma}` are updated every Sunday and these images are [optimised for startup](https://cirrus-runners.app/blog/2024/04/11/optimizing-startup-time-of-cirrus-runners/)
|
Note that `ghcr.io/cirruslabs/macos-runner:{sequoia,sonoma}` are updated every Sunday and these images are [optimised for startup](https://cirrus-runners.app/blog/2024/04/11/optimizing-startup-time-of-cirrus-runners/)
|
||||||
on Cirrus Runners and Cirrus CI services.
|
on Cirrus Runners and Cirrus CI services.
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
# otherwise on the OS update the "softwareupdate" will be stuck at "Downloaded: macOS [...]"
|
# otherwise on the OS update the "softwareupdate" will be stuck at "Downloaded: macOS [...]"
|
||||||
- name: install available update
|
- name: install available update
|
||||||
command:
|
command:
|
||||||
cmd: "softwareupdate --install --agree-to-license --force --restart --user admin --stdinpass {{ stdinpass }} '{{ item.label }}'"
|
cmd: "softwareupdate --install --agree-to-license --force --restart --user admin --stdinpass {{ stdinpass | default('') }} '{{ item.label }}'"
|
||||||
stdin: "{{ ansible_password }}"
|
stdin: "{{ ansible_password }}"
|
||||||
register: update_result
|
register: update_result
|
||||||
# Work around the following:
|
# Work around the following:
|
||||||
@@ -24,8 +24,10 @@
|
|||||||
# > ssh: connect to host [...] port 22: Connection refused.
|
# > ssh: connect to host [...] port 22: Connection refused.
|
||||||
ignore_unreachable: yes
|
ignore_unreachable: yes
|
||||||
# Ignore SIGTERM/SIGKILL sent "softwareupdate" process
|
# Ignore SIGTERM/SIGKILL sent "softwareupdate" process
|
||||||
# when the system reboots due to --restart
|
# when the system reboots due to --restart and any other errors,
|
||||||
failed_when: update_result.rc not in [0, 9, -9, 15, -15]
|
# since we'll check whether the update was installed in main.yml
|
||||||
|
# anyway.
|
||||||
|
ignore_errors: yes
|
||||||
become: yes
|
become: yes
|
||||||
loop: "{{ software_updates }}"
|
loop: "{{ software_updates }}"
|
||||||
when: "not item.label.startswith('macOS') or item.version.split('.')[0] == ansible_facts['distribution_version'].split('.')[0]"
|
when: "not item.label.startswith('macOS') or item.version.split('.')[0] == ansible_facts['distribution_version'].split('.')[0]"
|
||||||
@@ -38,6 +40,4 @@
|
|||||||
# the commands below on a non-restarted system.
|
# the commands below on a non-restarted system.
|
||||||
delay: 60
|
delay: 60
|
||||||
timeout: 1800
|
timeout: 1800
|
||||||
when:
|
when: update_result is defined and not update_result.skipped | default(false)
|
||||||
- update_result is defined
|
|
||||||
- not update_result.skipped
|
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
== 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 - 22F77) - com.apple.CoreSimulator.SimRuntime.iOS-18-5
|
||||||
|
iOS 26.0 (26.0 - 23A5260l) - com.apple.CoreSimulator.SimRuntime.iOS-26-0
|
||||||
|
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
|
||||||
|
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 - 23J5279m) - com.apple.CoreSimulator.SimRuntime.tvOS-26-0
|
||||||
|
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
|
||||||
|
watchOS 11.4 (11.4 - 22T250) - com.apple.CoreSimulator.SimRuntime.watchOS-11-4
|
||||||
|
watchOS 11.5 (11.5 - 22T572) - com.apple.CoreSimulator.SimRuntime.watchOS-11-5
|
||||||
|
watchOS 26.0 (26.0 - 23R5280m) - com.apple.CoreSimulator.SimRuntime.watchOS-26-0
|
||||||
|
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
|
||||||
|
visionOS 2.4 (2.4 - 22O237) - com.apple.CoreSimulator.SimRuntime.xrOS-2-4
|
||||||
|
visionOS 2.5 (2.5 - 22O473) - com.apple.CoreSimulator.SimRuntime.xrOS-2-5
|
||||||
|
visionOS 26.0 (26.0 - 23M5263m) - com.apple.CoreSimulator.SimRuntime.xrOS-26-0
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
== 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
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"group": "Runner Detail",
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"name": "OS Information",
|
||||||
|
"script": "echo \"macOS $(sw_vers -productVersion) ($(sw_vers -buildVersion))\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Build Date",
|
||||||
|
"script": "date +\"%Y-%m-%d\""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group": "Software Detail",
|
||||||
|
"detail": [
|
||||||
|
{
|
||||||
|
"name": "Xcode Versions",
|
||||||
|
"script": "xcodes installed --no-color || echo \"Xcode not installed\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Python Version",
|
||||||
|
"script": "python3 --version"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Node Version",
|
||||||
|
"script": "node --version"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ruby Version",
|
||||||
|
"script": "ruby --version"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Bundler Version",
|
||||||
|
"script": "bundler --version"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CocoaPods Version",
|
||||||
|
"script": "pod --version"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Fastlane Version",
|
||||||
|
"script": "fastlane --version"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?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">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.cirruslabs.tart-guest-agent</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/opt/homebrew/bin/tart-guest-agent</string>
|
||||||
|
<string>--run-agent</string>
|
||||||
|
</array>
|
||||||
|
<key>EnvironmentVariables</key>
|
||||||
|
<dict>
|
||||||
|
<key>PATH</key>
|
||||||
|
<string>/bin:/usr/bin:/usr/sbin:/usr/local/bin:/opt/homebrew/bin</string>
|
||||||
|
</dict>
|
||||||
|
<key>WorkingDirectory</key>
|
||||||
|
<string>/var/empty</string>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>/tmp/tart-guest-agent.log</string>
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>/tmp/tart-guest-agent.log</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?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">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.cirruslabs.tart-guest-daemon</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/opt/homebrew/bin/tart-guest-agent</string>
|
||||||
|
<string>--run-daemon</string>
|
||||||
|
</array>
|
||||||
|
<key>EnvironmentVariables</key>
|
||||||
|
<dict>
|
||||||
|
<key>PATH</key>
|
||||||
|
<string>/bin:/usr/bin:/usr/sbin:/usr/local/bin:/opt/homebrew/bin</string>
|
||||||
|
</dict>
|
||||||
|
<key>WorkingDirectory</key>
|
||||||
|
<string>/var/empty</string>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>/tmp/tart-guest-daemon.log</string>
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>/tmp/tart-guest-daemon.log</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -149,4 +149,31 @@ build {
|
|||||||
"brew doctor"
|
"brew doctor"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Guest agent for Tart VMs
|
||||||
|
provisioner "file" {
|
||||||
|
source = "data/tart-guest-daemon.plist"
|
||||||
|
destination = "~/tart-guest-daemon.plist"
|
||||||
|
}
|
||||||
|
provisioner "file" {
|
||||||
|
source = "data/tart-guest-agent.plist"
|
||||||
|
destination = "~/tart-guest-agent.plist"
|
||||||
|
}
|
||||||
|
provisioner "shell" {
|
||||||
|
inline = [
|
||||||
|
# Install Tart Guest Agent
|
||||||
|
"source ~/.zprofile",
|
||||||
|
"brew install cirruslabs/cli/tart-guest-agent",
|
||||||
|
|
||||||
|
# Install daemon variant of the Tart Guest Agent
|
||||||
|
"sudo mv ~/tart-guest-daemon.plist /Library/LaunchDaemons/org.cirruslabs.tart-guest-daemon.plist",
|
||||||
|
"sudo chown root:wheel /Library/LaunchDaemons/org.cirruslabs.tart-guest-daemon.plist",
|
||||||
|
"sudo chmod 0644 /Library/LaunchDaemons/org.cirruslabs.tart-guest-daemon.plist",
|
||||||
|
|
||||||
|
# Install agent variant of the Tart Guest Agent
|
||||||
|
"sudo mv ~/tart-guest-agent.plist /Library/LaunchAgents/org.cirruslabs.tart-guest-agent.plist",
|
||||||
|
"sudo chown root:wheel /Library/LaunchAgents/org.cirruslabs.tart-guest-agent.plist",
|
||||||
|
"sudo chmod 0644 /Library/LaunchAgents/org.cirruslabs.tart-guest-agent.plist",
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
packer {
|
||||||
|
required_plugins {
|
||||||
|
tart = {
|
||||||
|
version = ">= 1.12.0"
|
||||||
|
source = "github.com/cirruslabs/tart"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vm_name" {
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
source "tart-cli" "tart" {
|
||||||
|
vm_name = "${var.vm_name}"
|
||||||
|
recovery = true
|
||||||
|
cpu_count = 4
|
||||||
|
memory_gb = 8
|
||||||
|
disk_size_gb = 50
|
||||||
|
communicator = "none"
|
||||||
|
boot_command = [
|
||||||
|
# Skip over "Macintosh" and select "Options"
|
||||||
|
# to boot into macOS Recovery
|
||||||
|
"<wait60s><right><right><enter>",
|
||||||
|
# Open Terminal
|
||||||
|
"<wait10s><leftAltOn>T<leftAltOff>",
|
||||||
|
# Disable SIP
|
||||||
|
"<wait10s>csrutil disable<enter>",
|
||||||
|
"<wait10s>y<enter>",
|
||||||
|
"<wait10s>admin<enter>",
|
||||||
|
"<wait10s>admin<enter>",
|
||||||
|
# Shutdown
|
||||||
|
"<wait10s>halt<enter>"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
sources = ["source.tart-cli.tart"]
|
||||||
|
}
|
||||||
@@ -34,7 +34,9 @@ build {
|
|||||||
|
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
||||||
inline = [
|
inline = [
|
||||||
"sw_vers --productVersion > /tmp/sw-vers-product-version.txt",
|
# Use "-productVersion" instead of "--productVersion"
|
||||||
|
# to support old-style syntax used on macOS Monterey
|
||||||
|
"sw_vers -productVersion > /tmp/sw-vers-product-version.txt",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ source "tart-cli" "tart" {
|
|||||||
vm_name = "monterey-vanilla"
|
vm_name = "monterey-vanilla"
|
||||||
cpu_count = 4
|
cpu_count = 4
|
||||||
memory_gb = 8
|
memory_gb = 8
|
||||||
disk_size_gb = 40
|
disk_size_gb = 50
|
||||||
ssh_password = "admin"
|
ssh_password = "admin"
|
||||||
ssh_username = "admin"
|
ssh_username = "admin"
|
||||||
ssh_timeout = "120s"
|
ssh_timeout = "120s"
|
||||||
@@ -136,6 +136,7 @@ build {
|
|||||||
provisioner "ansible" {
|
provisioner "ansible" {
|
||||||
playbook_file = "ansible/playbook-system-updater.yml"
|
playbook_file = "ansible/playbook-system-updater.yml"
|
||||||
extra_arguments = [
|
extra_arguments = [
|
||||||
|
"-vvv",
|
||||||
"--extra-vars", "stdinpass=admin",
|
"--extra-vars", "stdinpass=admin",
|
||||||
]
|
]
|
||||||
ansible_env_vars = [
|
ansible_env_vars = [
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ packer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
source "tart-cli" "tart" {
|
source "tart-cli" "tart" {
|
||||||
from_ipsw = "https://updates.cdn-apple.com/2025WinterFCS/fullrestores/072-08269/7CAAB9F7-E970-428D-8764-4CD7BCD105CD/UniversalMac_15.3_24D60_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"
|
vm_name = "sequoia-vanilla"
|
||||||
cpu_count = 4
|
cpu_count = 4
|
||||||
memory_gb = 8
|
memory_gb = 8
|
||||||
disk_size_gb = 40
|
disk_size_gb = 50
|
||||||
ssh_password = "admin"
|
ssh_password = "admin"
|
||||||
ssh_username = "admin"
|
ssh_username = "admin"
|
||||||
ssh_timeout = "300s"
|
ssh_timeout = "300s"
|
||||||
@@ -31,28 +31,30 @@ source "tart-cli" "tart" {
|
|||||||
#
|
#
|
||||||
# [1]: should be named "English (US)", but oh well 🤷
|
# [1]: should be named "English (US)", but oh well 🤷
|
||||||
"<wait30s>italiano<esc>english<enter>",
|
"<wait30s>italiano<esc>english<enter>",
|
||||||
# Select Your Country and Region
|
# Select Your Country or Region
|
||||||
"<wait30s>united states<leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait30s>united states<leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
|
# Transfer Your Data to This Mac
|
||||||
|
"<wait10s><tab><tab><tab><spacebar><tab><tab><spacebar>",
|
||||||
# Written and Spoken Languages
|
# Written and Spoken Languages
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Accessibility
|
# Accessibility
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Data & Privacy
|
# Data & Privacy
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Migration Assistant
|
# Create a Mac Account
|
||||||
"<wait10s><tab><tab><tab><spacebar>",
|
"<wait10s>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
|
# Sign In with Your Apple ID
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Are you sure you want to skip signing in with an Apple ID?
|
# Are you sure you want to skip signing in with an Apple ID?
|
||||||
"<wait10s><tab><spacebar>",
|
"<wait10s><tab><spacebar>",
|
||||||
# Terms and Conditions
|
# Terms and Conditions
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# I have read and agree to the macOS Software License Agreement
|
# I have read and agree to the macOS Software License Agreement
|
||||||
"<wait10s><tab><spacebar>",
|
"<wait10s><tab><spacebar>",
|
||||||
# Create a Computer Account
|
|
||||||
"<wait10s>admin<tab><tab>admin<tab>admin<tab><tab><tab><spacebar>",
|
|
||||||
# Enable Location Services
|
# Enable Location Services
|
||||||
"<wait120s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Are you sure you don't want to use Location Services?
|
# Are you sure you don't want to use Location Services?
|
||||||
"<wait10s><tab><spacebar>",
|
"<wait10s><tab><spacebar>",
|
||||||
# Select Your Time Zone
|
# Select Your Time Zone
|
||||||
@@ -65,8 +67,12 @@ source "tart-cli" "tart" {
|
|||||||
"<wait10s><tab><spacebar><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><tab><spacebar><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
# Choose Your Look
|
# Choose Your Look
|
||||||
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
"<wait10s><leftShiftOn><tab><leftShiftOff><spacebar>",
|
||||||
|
# Update Mac Automatically
|
||||||
|
"<wait10s><tab><spacebar>",
|
||||||
# Welcome to Mac
|
# Welcome to Mac
|
||||||
"<wait10s><spacebar>",
|
"<wait10s><spacebar>",
|
||||||
|
# Disable Voice Over
|
||||||
|
"<leftAltOn><f5><leftAltOff>",
|
||||||
# Enable Keyboard navigation
|
# Enable Keyboard navigation
|
||||||
# This is so that we can navigate the System Settings app using the keyboard
|
# This is so that we can navigate the System Settings app using the keyboard
|
||||||
"<wait10s><leftAltOn><spacebar><leftAltOff>Terminal<enter>",
|
"<wait10s><leftAltOn><spacebar><leftAltOff>Terminal<enter>",
|
||||||
@@ -75,13 +81,27 @@ source "tart-cli" "tart" {
|
|||||||
# Now that the installation is done, open "System Settings"
|
# Now that the installation is done, open "System Settings"
|
||||||
"<wait10s><leftAltOn><spacebar><leftAltOff>System Settings<enter>",
|
"<wait10s><leftAltOn><spacebar><leftAltOff>System Settings<enter>",
|
||||||
# Navigate to "Sharing"
|
# Navigate to "Sharing"
|
||||||
"<wait10s><leftAltOn>f<leftAltOff>sharing<enter>",
|
"<wait10s><leftCtrlOn><f2><leftCtrlOff><right><right><right><down>Sharing<enter>",
|
||||||
# Navigate to "Screen Sharing" and enable it
|
# Navigate to "Screen Sharing" and enable it
|
||||||
"<wait10s><tab><tab><tab><tab><tab><spacebar>",
|
"<wait10s><tab><tab><tab><tab><tab><tab><tab><spacebar>",
|
||||||
# Navigate to "Remote Login" and enable it
|
# Navigate to "Remote Login" and enable it
|
||||||
"<wait10s><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><spacebar>",
|
"<wait10s><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><tab><spacebar>",
|
||||||
# Quit System Settings
|
# Quit System Settings
|
||||||
"<wait10s><leftAltOn>q<leftAltOff>",
|
"<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><leftShiftOff><leftShiftOn><tab><leftShiftOff><leftShiftOn><tab><leftShiftOff><leftShiftOn><tab><leftShiftOff><leftShiftOn><tab><leftShiftOff><leftShiftOn><tab><leftShiftOff><leftShiftOn><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
|
// A (hopefully) temporary workaround for Virtualization.Framework's
|
||||||
@@ -126,6 +146,13 @@ build {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provisioner "shell" {
|
||||||
|
inline = [
|
||||||
|
# Ensure that Gatekeeper is disabled
|
||||||
|
"spctl --status | grep -q 'assessments disabled'"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
||||||
inline = [
|
inline = [
|
||||||
# Install command-line tools
|
# Install command-line tools
|
||||||
@@ -137,6 +164,9 @@ build {
|
|||||||
|
|
||||||
provisioner "ansible" {
|
provisioner "ansible" {
|
||||||
playbook_file = "ansible/playbook-system-updater.yml"
|
playbook_file = "ansible/playbook-system-updater.yml"
|
||||||
|
extra_arguments = [
|
||||||
|
"-vvv",
|
||||||
|
]
|
||||||
ansible_env_vars = [
|
ansible_env_vars = [
|
||||||
"ANSIBLE_TRANSPORT=paramiko",
|
"ANSIBLE_TRANSPORT=paramiko",
|
||||||
"ANSIBLE_HOST_KEY_CHECKING=False",
|
"ANSIBLE_HOST_KEY_CHECKING=False",
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ source "tart-cli" "tart" {
|
|||||||
vm_name = "sonoma-vanilla"
|
vm_name = "sonoma-vanilla"
|
||||||
cpu_count = 4
|
cpu_count = 4
|
||||||
memory_gb = 8
|
memory_gb = 8
|
||||||
disk_size_gb = 40
|
disk_size_gb = 50
|
||||||
ssh_password = "admin"
|
ssh_password = "admin"
|
||||||
ssh_username = "admin"
|
ssh_username = "admin"
|
||||||
ssh_timeout = "120s"
|
ssh_timeout = "120s"
|
||||||
@@ -134,6 +134,9 @@ build {
|
|||||||
|
|
||||||
provisioner "ansible" {
|
provisioner "ansible" {
|
||||||
playbook_file = "ansible/playbook-system-updater.yml"
|
playbook_file = "ansible/playbook-system-updater.yml"
|
||||||
|
extra_arguments = [
|
||||||
|
"-vvv",
|
||||||
|
]
|
||||||
ansible_env_vars = [
|
ansible_env_vars = [
|
||||||
"ANSIBLE_TRANSPORT=paramiko",
|
"ANSIBLE_TRANSPORT=paramiko",
|
||||||
"ANSIBLE_HOST_KEY_CHECKING=False",
|
"ANSIBLE_HOST_KEY_CHECKING=False",
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ source "tart-cli" "tart" {
|
|||||||
vm_name = "ventura-vanilla"
|
vm_name = "ventura-vanilla"
|
||||||
cpu_count = 4
|
cpu_count = 4
|
||||||
memory_gb = 8
|
memory_gb = 8
|
||||||
disk_size_gb = 40
|
disk_size_gb = 50
|
||||||
ssh_password = "admin"
|
ssh_password = "admin"
|
||||||
ssh_username = "admin"
|
ssh_username = "admin"
|
||||||
ssh_timeout = "120s"
|
ssh_timeout = "120s"
|
||||||
@@ -143,6 +143,9 @@ build {
|
|||||||
|
|
||||||
provisioner "ansible" {
|
provisioner "ansible" {
|
||||||
playbook_file = "ansible/playbook-system-updater.yml"
|
playbook_file = "ansible/playbook-system-updater.yml"
|
||||||
|
extra_arguments = [
|
||||||
|
"-vvv",
|
||||||
|
]
|
||||||
ansible_env_vars = [
|
ansible_env_vars = [
|
||||||
"ANSIBLE_TRANSPORT=paramiko",
|
"ANSIBLE_TRANSPORT=paramiko",
|
||||||
"ANSIBLE_HOST_KEY_CHECKING=False",
|
"ANSIBLE_HOST_KEY_CHECKING=False",
|
||||||
|
|||||||
+70
-14
@@ -15,11 +15,17 @@ variable "xcode_version" {
|
|||||||
type = list(string)
|
type = list(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "additional_runtimes" {
|
variable "additional_ios_builds" {
|
||||||
type = list(string)
|
type = list(string)
|
||||||
default = []
|
default = []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "expected_runtimes_file" {
|
||||||
|
type = string
|
||||||
|
default = ""
|
||||||
|
description = "Path to file containing expected simulator runtimes. If empty, runtime verification is skipped."
|
||||||
|
}
|
||||||
|
|
||||||
variable "tag" {
|
variable "tag" {
|
||||||
type = string
|
type = string
|
||||||
default = ""
|
default = ""
|
||||||
@@ -27,7 +33,7 @@ variable "tag" {
|
|||||||
|
|
||||||
variable "disk_size" {
|
variable "disk_size" {
|
||||||
type = number
|
type = number
|
||||||
default = 100
|
default = 120
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "disk_free_mb" {
|
variable "disk_free_mb" {
|
||||||
@@ -116,6 +122,20 @@ build {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
provisioner "shell" {
|
||||||
|
inline = [
|
||||||
|
"source ~/.zprofile",
|
||||||
|
"brew install libimobiledevice ideviceinstaller ios-deploy carthage",
|
||||||
|
"brew install xcbeautify swiftformat",
|
||||||
|
"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" {
|
provisioner "shell" {
|
||||||
inline = [
|
inline = [
|
||||||
"source ~/.zprofile",
|
"source ~/.zprofile",
|
||||||
@@ -150,11 +170,35 @@ build {
|
|||||||
inline = concat(
|
inline = concat(
|
||||||
["source ~/.zprofile"],
|
["source ~/.zprofile"],
|
||||||
[
|
[
|
||||||
for runtime in var.additional_runtimes : "sudo xcodes runtimes install ${runtime}"
|
for runtime in var.additional_ios_builds : "xcodebuild -downloadPlatform iOS -buildVersion ${runtime}"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy expected runtimes file if provided
|
||||||
|
dynamic "provisioner" {
|
||||||
|
for_each = var.expected_runtimes_file != "" ? [1] : []
|
||||||
|
labels = ["file"]
|
||||||
|
content {
|
||||||
|
source = var.expected_runtimes_file
|
||||||
|
destination = "/Users/admin/runtimes.expected.txt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify simulator runtimes match expected list if file was provided
|
||||||
|
dynamic "provisioner" {
|
||||||
|
for_each = var.expected_runtimes_file != "" ? [1] : []
|
||||||
|
labels = ["shell"]
|
||||||
|
content {
|
||||||
|
inline = [
|
||||||
|
"source ~/.zprofile",
|
||||||
|
"xcrun simctl list runtimes > /Users/admin/runtimes.actual.txt",
|
||||||
|
"diff -q /Users/admin/runtimes.actual.txt /Users/admin/runtimes.expected.txt || (echo 'Simulator runtimes do not match expected list' && cat /Users/admin/runtimes.actual.txt && exit 1)",
|
||||||
|
"rm /Users/admin/runtimes.actual.txt /Users/admin/runtimes.expected.txt"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
||||||
inline = [
|
inline = [
|
||||||
"source ~/.zprofile",
|
"source ~/.zprofile",
|
||||||
@@ -169,17 +213,6 @@ build {
|
|||||||
"flutter precache",
|
"flutter precache",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
provisioner "shell" {
|
|
||||||
inline = [
|
|
||||||
"source ~/.zprofile",
|
|
||||||
"brew install libimobiledevice ideviceinstaller ios-deploy fastlane carthage",
|
|
||||||
"brew install xcbeautify",
|
|
||||||
"gem update",
|
|
||||||
"gem install cocoapods",
|
|
||||||
"gem install xcpretty",
|
|
||||||
"gem uninstall --ignore-dependencies ffi && gem install ffi -- --enable-libffi-alloc"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
# useful utils for mobile development
|
# useful utils for mobile development
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
||||||
@@ -261,4 +294,27 @@ build {
|
|||||||
"sleep 1800"
|
"sleep 1800"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Install setup-info-generator
|
||||||
|
provisioner "shell" {
|
||||||
|
inline = [
|
||||||
|
"source ~/.zprofile",
|
||||||
|
"brew install cirruslabs/cli/setup-info-generator"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copy setup info template
|
||||||
|
provisioner "file" {
|
||||||
|
source = "data/setup-info-template.json"
|
||||||
|
destination = "~/setup-info-template.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate setup info
|
||||||
|
provisioner "shell" {
|
||||||
|
inline = [
|
||||||
|
"source ~/.zprofile",
|
||||||
|
"cat ~/setup-info-template.json | setup-info-generator > ~/actions-runner/.setup_info",
|
||||||
|
"rm ~/setup-info-template.json"
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user