mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-04-12 10:48:39 +03:00
160 lines
5.1 KiB
YAML
160 lines
5.1 KiB
YAML
on: [push, pull_request]
|
|
name: Test
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
|
|
target: [
|
|
aarch64-linux,
|
|
x86_64-linux,
|
|
x86-windows-gnu,
|
|
x86_64-windows-gnu,
|
|
# We don't support cross-compiling to macOS because the macOS build
|
|
# requires xcode due to the swift harness.
|
|
#aarch64-macos,
|
|
#x86_64-macos,
|
|
]
|
|
runs-on: ${{ matrix.os }}
|
|
needs: test
|
|
env:
|
|
# Needed for macos SDK
|
|
AGREE: "true"
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@v24
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
# Cross-compile the binary. We always use static building for this
|
|
# because its the only way to access the headers.
|
|
- name: Test Build
|
|
run: nix develop -c zig build -Dstatic=true -Dapp-runtime=glfw -Dtarget=${{ matrix.target }}
|
|
|
|
build-macos:
|
|
runs-on: ghcr.io/cirruslabs/macos-ventura-xcode:latest
|
|
needs: test
|
|
env:
|
|
# Needed for macos SDK
|
|
AGREE: "true"
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@v24
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
# 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 -Dstatic=true
|
|
|
|
# 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
|
|
build-windows:
|
|
runs-on: windows-2019
|
|
# this will not stop other jobs from running
|
|
continue-on-error: true
|
|
needs: test
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
# This could be from a script if we wanted to but inlining here for now
|
|
# in one place.
|
|
# Using powershell so that we do not need to install WSL components. Also,
|
|
# WSLv1 is only installed on Github runners.
|
|
- name: Install zig
|
|
shell: pwsh
|
|
run: |
|
|
# Get the zig version from build.zig so that it only needs to be updated
|
|
$fileContent = Get-Content -Path "build.zig" -Raw
|
|
$pattern = 'const required_zig = "(.*?)";'
|
|
$zigVersion = [regex]::Match($fileContent, $pattern).Groups[1].Value
|
|
Write-Output $version
|
|
$version = "zig-windows-x86_64-$zigVersion"
|
|
$uri = "https://ziglang.org/builds/$version.zip"
|
|
Invoke-WebRequest -Uri "$uri" -OutFile ".\zig-windows.zip"
|
|
Expand-Archive -Path ".\zig-windows.zip" -DestinationPath ".\" -Force
|
|
Remove-Item -Path ".\zig-windows.zip"
|
|
Rename-Item -Path ".\$version" -NewName ".\zig"
|
|
Write-Host "Zig installed."
|
|
./zig/zig.exe version
|
|
|
|
- name: Generate build testing script
|
|
shell: pwsh
|
|
run: |
|
|
# Generate a script so that we can swallow the errors
|
|
$scriptContent = @"
|
|
.\zig\zig.exe build test 2>&1 | Out-File -FilePath "build.log" -Append
|
|
exit 0
|
|
"@
|
|
$scriptPath = "zigbuild.ps1"
|
|
# Write the script content to a file
|
|
$scriptContent | Set-Content -Path $scriptPath
|
|
Write-Host "Script generated at: $scriptPath"
|
|
|
|
- name: Test Windows
|
|
shell: pwsh
|
|
run: .\zigbuild.ps1 -ErrorAction SiltentlyContinue
|
|
|
|
- name: Dump logs
|
|
shell: pwsh
|
|
run: Get-Content -Path ".\build.log"
|
|
|
|
test:
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@v24
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
|
|
- name: test
|
|
run: nix develop -c zig build -Dapp-runtime=none test
|
|
|
|
- name: Test GTK Build
|
|
run: nix develop -c zig build -Dapp-runtime=gtk -Dgtk-libadwaita=true
|
|
|
|
- name: Test GLFW Build
|
|
run: nix develop -c zig build -Dapp-runtime=glfw
|
|
|
|
- name: Test Dynamic Build
|
|
run: nix develop -c zig build -Dstatic=false
|
|
|
|
prettier:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4 # Check out repo so we can lint it
|
|
- uses: cachix/install-nix-action@v24
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- name: prettier check
|
|
run: nix develop -c prettier --check .
|
|
|
|
alejandra:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4 # Check out repo so we can lint it
|
|
- uses: cachix/install-nix-action@v24
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- name: alejandra check
|
|
run: nix develop -c alejandra --check .
|