Switch macOS builds to Tahoe (Beta 7 currently) (#8328)

This switches our macOS builds to build on Tahoe, rather than on
Sequoia.

The primary motivation is to get builds out using a new Xcode version
(our builds at the time of writing this are _still produced_ with beta
1! ONE!). Every subsequent beta has had bugs that have prevented us from
upgrading, amusingly enough. But the later betas _also_ have a bunch of
fixes I want to get in. I hope this one works...

The reason we have to use Tahoe instead of Sequoia is because on
Sequoia, builds in CI _crash xcodebuild_. This is definitely an Apple
bug but I can't reproduce it locally to create a bug report, so I'm not
sure what to do.
pull/8329/head
Mitchell Hashimoto 2025-08-21 09:19:53 -07:00 committed by GitHub
commit e3e69269e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 41 additions and 71 deletions

View File

@ -47,7 +47,7 @@ jobs:
sentry-cli dif upload --project ghostty --wait dsym.zip sentry-cli dif upload --project ghostty --wait dsym.zip
build-macos: build-macos:
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Checkout code - name: Checkout code
@ -57,9 +57,9 @@ jobs:
fetch-depth: 0 fetch-depth: 0
# Install Nix and use that to run our tests so our environment matches exactly. # Install Nix and use that to run our tests so our environment matches exactly.
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -95,6 +95,7 @@ jobs:
run: | run: |
cd macos cd macos
sudo xcode-select -s /Applications/Xcode_26.0.app sudo xcode-select -s /Applications/Xcode_26.0.app
xcodebuild -version
xcodebuild -target Ghostty -configuration Release xcodebuild -target Ghostty -configuration Release
# We inject the "build number" as simply the number of commits since HEAD. # We inject the "build number" as simply the number of commits since HEAD.
@ -201,7 +202,7 @@ jobs:
destination-dir: ./ destination-dir: ./
build-macos-debug: build-macos-debug:
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Checkout code - name: Checkout code
@ -211,9 +212,9 @@ jobs:
fetch-depth: 0 fetch-depth: 0
# Install Nix and use that to run our tests so our environment matches exactly. # Install Nix and use that to run our tests so our environment matches exactly.
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -249,6 +250,7 @@ jobs:
run: | run: |
cd macos cd macos
sudo xcode-select -s /Applications/Xcode_26.0.app sudo xcode-select -s /Applications/Xcode_26.0.app
xcodebuild -version
xcodebuild -target Ghostty -configuration Release xcodebuild -target Ghostty -configuration Release
# We inject the "build number" as simply the number of commits since HEAD. # We inject the "build number" as simply the number of commits since HEAD.

View File

@ -120,7 +120,7 @@ jobs:
build-macos: build-macos:
needs: [setup] needs: [setup]
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
env: env:
GHOSTTY_VERSION: ${{ needs.setup.outputs.version }} GHOSTTY_VERSION: ${{ needs.setup.outputs.version }}
@ -130,9 +130,9 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -141,6 +141,9 @@ jobs:
- name: XCode Select - name: XCode Select
run: sudo xcode-select -s /Applications/Xcode_16.4.app run: sudo xcode-select -s /Applications/Xcode_16.4.app
- name: Xcode Version
run: xcodebuild -version
- name: Setup Sparkle - name: Setup Sparkle
env: env:
SPARKLE_VERSION: 2.6.4 SPARKLE_VERSION: 2.6.4
@ -291,7 +294,7 @@ jobs:
appcast: appcast:
needs: [setup, build-macos] needs: [setup, build-macos]
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
env: env:
GHOSTTY_VERSION: ${{ needs.setup.outputs.version }} GHOSTTY_VERSION: ${{ needs.setup.outputs.version }}
GHOSTTY_BUILD: ${{ needs.setup.outputs.build }} GHOSTTY_BUILD: ${{ needs.setup.outputs.build }}

View File

@ -154,7 +154,7 @@ jobs:
) )
}} }}
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Checkout code - name: Checkout code
@ -163,10 +163,10 @@ jobs:
# Important so that build number generation works # Important so that build number generation works
fetch-depth: 0 fetch-depth: 0
# Install Nix and use that to run our tests so our environment matches exactly. # TODO(tahoe): https://github.com/NixOS/nix/issues/13342
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -374,7 +374,7 @@ jobs:
) )
}} }}
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Checkout code - name: Checkout code
@ -383,10 +383,10 @@ jobs:
# Important so that build number generation works # Important so that build number generation works
fetch-depth: 0 fetch-depth: 0
# Install Nix and use that to run our tests so our environment matches exactly. # TODO(tahoe): https://github.com/NixOS/nix/issues/13342
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -554,7 +554,7 @@ jobs:
) )
}} }}
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
timeout-minutes: 90 timeout-minutes: 90
steps: steps:
- name: Checkout code - name: Checkout code
@ -563,10 +563,10 @@ jobs:
# Important so that build number generation works # Important so that build number generation works
fetch-depth: 0 fetch-depth: 0
# Install Nix and use that to run our tests so our environment matches exactly. # TODO(tahoe): https://github.com/NixOS/nix/issues/13342
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty

View File

@ -18,7 +18,6 @@ jobs:
- build-nix - build-nix
- build-snap - build-snap
- build-macos - build-macos
- build-macos-tahoe
- build-macos-matrix - build-macos-matrix
- build-windows - build-windows
- flatpak-check-zig-cache - flatpak-check-zig-cache
@ -273,16 +272,16 @@ jobs:
ghostty-source.tar.gz ghostty-source.tar.gz
build-macos: build-macos:
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
needs: test needs: test
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Install Nix and use that to run our tests so our environment matches exactly. # TODO(tahoe): https://github.com/NixOS/nix/issues/13342
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -315,7 +314,7 @@ jobs:
cd macos cd macos
xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO" xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO"
build-macos-tahoe: build-macos-matrix:
runs-on: namespace-profile-ghostty-macos-tahoe runs-on: namespace-profile-ghostty-macos-tahoe
needs: test needs: test
steps: steps:
@ -334,45 +333,8 @@ jobs:
- name: Xcode Select - name: Xcode Select
run: sudo xcode-select -s /Applications/Xcode_26.0.app run: sudo xcode-select -s /Applications/Xcode_26.0.app
- name: get the Zig deps - name: Xcode Version
id: deps run: xcodebuild -version
run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT
# GhosttyKit is the framework that is built from Zig for our native
# Mac app to access.
- name: Build GhosttyKit
run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false
# The native app is built with native Xcode tooling. This also does
# codesigning. IMPORTANT: this must NOT run in a Nix environment.
# Nix breaks xcodebuild so this has to be run outside.
- name: Build Ghostty.app
run: cd macos && xcodebuild -target Ghostty
# Build the iOS target without code signing just to verify it works.
- name: Build Ghostty iOS
run: |
cd macos
xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO"
build-macos-matrix:
runs-on: namespace-profile-ghostty-macos-sequoia
needs: test
steps:
- name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Install Nix and use that to run our tests so our environment matches exactly.
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
name: ghostty
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Xcode Select
run: sudo xcode-select -s /Applications/Xcode_26.0.app
- name: get the Zig deps - name: get the Zig deps
id: deps id: deps
@ -672,16 +634,16 @@ jobs:
nix develop -c zig build -Dsentry=${{ matrix.sentry }} nix develop -c zig build -Dsentry=${{ matrix.sentry }}
test-macos: test-macos:
runs-on: namespace-profile-ghostty-macos-sequoia runs-on: namespace-profile-ghostty-macos-tahoe
needs: test needs: test
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
# Install Nix and use that to run our tests so our environment matches exactly. # TODO(tahoe): https://github.com/NixOS/nix/issues/13342
- uses: cachix/install-nix-action@fc6e360bedc9ee72d75e701397f0bb30dce77568 # v31.5.2 - uses: DeterminateSystems/nix-installer-action@main
with: with:
nix_path: nixpkgs=channel:nixos-unstable determinate: true
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16 - uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with: with:
name: ghostty name: ghostty
@ -690,6 +652,9 @@ jobs:
- name: Xcode Select - name: Xcode Select
run: sudo xcode-select -s /Applications/Xcode_26.0.app run: sudo xcode-select -s /Applications/Xcode_26.0.app
- name: Xcode Version
run: xcodebuild -version
- name: get the Zig deps - name: get the Zig deps
id: deps id: deps
run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT