mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-12-30 10:12:13 +00:00
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6.0.0 to 7.0.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v7.0.0</h2> <h2>v7 - What's new</h2> <blockquote> <p>[!IMPORTANT] actions/download-artifact@v7 now runs on Node.js 24 (<code>runs.using: node24</code>) and requires a minimum Actions Runner version of 2.327.1. If you are using self-hosted runners, ensure they are updated before upgrading.</p> </blockquote> <h3>Node.js 24</h3> <p>This release updates the runtime to Node.js 24. v6 had preliminary support for Node 24, however this action was by default still running on Node.js 20. Now this action by default will run on Node.js 24.</p> <h2>What's Changed</h2> <ul> <li>Update GHES guidance to include reference to Node 20 version by <a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li>Download Artifact Node24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> <li>fix: update <code>@actions/artifact</code> to fix Node.js 24 punycode deprecation by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/451">actions/download-artifact#451</a></li> <li>prepare release v7.0.0 for Node.js 24 support by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/452">actions/download-artifact#452</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/patrikpolyak"><code>@patrikpolyak</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li> <li><a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> made their first contribution in <a href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0">https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="37930b1c2a"><code>37930b1</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/452">#452</a> from actions/download-artifact-v7-release</li> <li><a href="72582b9e0a"><code>72582b9</code></a> doc: update readme</li> <li><a href="0d2ec9d4cb"><code>0d2ec9d</code></a> chore: release v7.0.0 for Node.js 24 support</li> <li><a href="fd7ae8fda6"><code>fd7ae8f</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/451">#451</a> from actions/fix-storage-blob</li> <li><a href="d484700543"><code>d484700</code></a> chore: restore minimatch.dep.yml license file</li> <li><a href="03a808050e"><code>03a8080</code></a> chore: remove obsolete dependency license files</li> <li><a href="56fe6d904b"><code>56fe6d9</code></a> chore: update <code>@actions/artifact</code> license file to 5.0.1</li> <li><a href="8e3ebc4ab4"><code>8e3ebc4</code></a> chore: update package-lock.json with <code>@actions/artifact</code><a href="https://github.com/5"><code>@5</code></a>.0.1</li> <li><a href="1e3c4b4d49"><code>1e3c4b4</code></a> fix: update <code>@actions/artifact</code> to ^5.0.0 for Node.js 24 punycode fix</li> <li><a href="458627d354"><code>458627d</code></a> chore: use local <code>@actions/artifact</code> package for Node.js 24 testing</li> <li>Additional commits viewable in <a href="018cc2cf5b...37930b1c2a">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
1217 lines
41 KiB
YAML
1217 lines
41 KiB
YAML
on:
|
|
push: {}
|
|
pull_request: {}
|
|
workflow_dispatch: {}
|
|
|
|
name: Test
|
|
|
|
# We only want the latest commit to test for any non-main ref.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref_name != 'main' && github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
required:
|
|
name: "Required Checks: Test"
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
needs:
|
|
- build-bench
|
|
- build-dist
|
|
- build-examples
|
|
- build-flatpak
|
|
- build-libghostty-vt
|
|
- build-linux
|
|
- build-linux-libghostty
|
|
- build-nix
|
|
- build-macos
|
|
- build-macos-matrix
|
|
- build-snap
|
|
- build-windows
|
|
- test
|
|
- test-simd
|
|
- test-gtk
|
|
- test-sentry-linux
|
|
- test-i18n
|
|
- test-macos
|
|
- pinact
|
|
- prettier
|
|
- alejandra
|
|
- typos
|
|
- shellcheck
|
|
- translations
|
|
- blueprint-compiler
|
|
- test-pkg-linux
|
|
- test-debian-13
|
|
- valgrind
|
|
- zig-fmt
|
|
- flatpak
|
|
steps:
|
|
- id: status
|
|
name: Determine status
|
|
run: |
|
|
results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}')
|
|
if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then
|
|
result="failed"
|
|
else
|
|
result="success"
|
|
fi
|
|
{
|
|
echo "result=${result}"
|
|
echo "results=${results}"
|
|
} | tee -a "$GITHUB_OUTPUT"
|
|
- if: always() && steps.status.outputs.result != 'success'
|
|
name: Check for failed status
|
|
run: |
|
|
echo "One or more required build workflows failed: ${{ steps.status.outputs.results }}"
|
|
exit 1
|
|
|
|
build-bench:
|
|
# We build benchmarks on large because it uses ReleaseFast
|
|
runs-on: namespace-profile-ghostty-lg
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build Benchmarks
|
|
run: nix develop -c zig build -Demit-bench
|
|
|
|
build-examples:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
dir:
|
|
[
|
|
c-vt,
|
|
c-vt-key-encode,
|
|
c-vt-paste,
|
|
c-vt-sgr,
|
|
zig-formatter,
|
|
zig-vt,
|
|
zig-vt-stream,
|
|
]
|
|
name: Example ${{ matrix.dir }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build Example
|
|
run: |
|
|
cd example/${{ matrix.dir }}
|
|
nix develop -c zig build
|
|
|
|
build-flatpak:
|
|
strategy:
|
|
fail-fast: false
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build with Flatpak
|
|
run: |
|
|
nix develop -c \
|
|
zig build \
|
|
-Dflatpak
|
|
|
|
build-snap:
|
|
strategy:
|
|
fail-fast: false
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build with Snap
|
|
run: |
|
|
nix develop -c \
|
|
zig build \
|
|
-Dsnap
|
|
|
|
build-libghostty-vt:
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
[
|
|
aarch64-macos,
|
|
x86_64-macos,
|
|
aarch64-linux,
|
|
x86_64-linux,
|
|
x86_64-windows,
|
|
wasm32-freestanding,
|
|
]
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build
|
|
run: |
|
|
nix develop -c zig build lib-vt \
|
|
-Dtarget=${{ matrix.target }} \
|
|
-Dsimd=false
|
|
|
|
build-linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [namespace-profile-ghostty-md, namespace-profile-ghostty-md-arm64]
|
|
runs-on: ${{ matrix.os }}
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test Build
|
|
run: nix develop -c zig build
|
|
|
|
build-linux-libghostty:
|
|
runs-on: namespace-profile-ghostty-md
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build Libghostty
|
|
run: nix develop -c zig build -Dapp-runtime=none
|
|
|
|
build-nix:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [namespace-profile-ghostty-md, namespace-profile-ghostty-md-arm64]
|
|
runs-on: ${{ matrix.os }}
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test release NixOS package build
|
|
run: nix build .#ghostty-releasefast
|
|
|
|
- name: Check version
|
|
run: result/bin/ghostty +version | grep -q '.ReleaseFast'
|
|
|
|
- name: Check to see if the binary has been stripped
|
|
run: nm result/bin/.ghostty-wrapped 2>&1 | grep -q 'no symbols'
|
|
|
|
- name: Test debug NixOS package build
|
|
run: nix build .#ghostty-debug
|
|
|
|
- name: Check version
|
|
run: result/bin/ghostty +version | grep -q '.Debug'
|
|
|
|
- name: Check to see if the binary has not been stripped
|
|
run: nm result/bin/.ghostty-wrapped 2>&1 | grep -q 'main_ghostty.main'
|
|
|
|
build-dist:
|
|
runs-on: namespace-profile-ghostty-md
|
|
needs: test
|
|
outputs:
|
|
artifact-id: ${{ steps.upload-artifact.outputs.artifact-id }}
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Build and Check Source Tarball
|
|
run: |
|
|
rm -rf zig-out/dist
|
|
nix develop -c zig build distcheck
|
|
cp zig-out/dist/*.tar.gz ghostty-source.tar.gz
|
|
|
|
- name: Upload artifact
|
|
id: upload-artifact
|
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
|
with:
|
|
name: source-tarball
|
|
path: |-
|
|
ghostty-source.tar.gz
|
|
|
|
trigger-snap:
|
|
if: github.event_name != 'pull_request'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
needs: [build-dist, build-snap]
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Trigger Snap workflow
|
|
run: |
|
|
gh workflow run \
|
|
snap.yml \
|
|
--ref ${{ github.ref_name || 'main' }} \
|
|
--field source-run-id=${{ github.run_id }} \
|
|
--field source-artifact-id=${{ needs.build-dist.outputs.artifact-id }}
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
build-macos:
|
|
runs-on: namespace-profile-ghostty-macos-tahoe
|
|
needs: test
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
# TODO(tahoe): https://github.com/NixOS/nix/issues/13342
|
|
- uses: DeterminateSystems/nix-installer-action@main
|
|
with:
|
|
determinate: true
|
|
- 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: Xcode Version
|
|
run: xcodebuild -version
|
|
|
|
- name: get the Zig deps
|
|
id: deps
|
|
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-tahoe
|
|
needs: test
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
# TODO(tahoe): https://github.com/NixOS/nix/issues/13342
|
|
- uses: DeterminateSystems/nix-installer-action@main
|
|
with:
|
|
determinate: true
|
|
- 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: Xcode Version
|
|
run: xcodebuild -version
|
|
|
|
- name: get the Zig deps
|
|
id: deps
|
|
run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT
|
|
|
|
- name: Test All
|
|
run: |
|
|
nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=freetype
|
|
nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext
|
|
nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_freetype
|
|
nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_harfbuzz
|
|
nix develop -c zig build test --system ${{ steps.deps.outputs.deps }} -Drenderer=metal -Dfont-backend=coretext_noshape
|
|
|
|
- name: Build All
|
|
run: |
|
|
nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false -Drenderer=metal -Dfont-backend=freetype
|
|
nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false -Drenderer=metal -Dfont-backend=coretext
|
|
nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false -Drenderer=metal -Dfont-backend=coretext_freetype
|
|
nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false -Drenderer=metal -Dfont-backend=coretext_harfbuzz
|
|
nix develop -c zig build --system ${{ steps.deps.outputs.deps }} -Demit-macos-app=false -Drenderer=metal -Dfont-backend=coretext_noshape
|
|
|
|
build-windows:
|
|
runs-on: windows-2022
|
|
# this will not stop other jobs from running
|
|
continue-on-error: true
|
|
timeout-minutes: 45
|
|
needs: test
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
# 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.zon so that it only needs to be updated
|
|
$fileContent = Get-Content -Path "build.zig.zon" -Raw
|
|
$pattern = 'minimum_zig_version\s*=\s*"([^"]+)"'
|
|
$zigVersion = [regex]::Match($fileContent, $pattern).Groups[1].Value
|
|
$version = "zig-x86_64-windows-$zigVersion"
|
|
Write-Output $version
|
|
$uri = "https://ziglang.org/download/$zigVersion/$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 SilentlyContinue
|
|
|
|
- name: Generate build script
|
|
shell: pwsh
|
|
run: |
|
|
# Generate a script so that we can swallow the errors
|
|
$scriptContent = @"
|
|
.\zig\zig.exe build 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: Build Windows
|
|
shell: pwsh
|
|
run: .\zigbuild.ps1 -ErrorAction SilentlyContinue
|
|
|
|
- name: Dump logs
|
|
shell: pwsh
|
|
run: Get-Content -Path ".\build.log"
|
|
|
|
test:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-md
|
|
outputs:
|
|
zig_version: ${{ steps.zig.outputs.version }}
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Get required Zig version
|
|
id: zig
|
|
run: |
|
|
echo "version=$(sed -n -E 's/^\s*\.?minimum_zig_version\s*=\s*"([^"]+)".*/\1/p' build.zig.zon)" >> $GITHUB_OUTPUT
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- 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 -Demit-docs -Demit-webdata
|
|
|
|
# This relies on the cache being populated by the commands above.
|
|
- name: Test System Build
|
|
run: nix develop -c zig build --system ${ZIG_GLOBAL_CACHE_DIR}/p
|
|
|
|
test-gtk:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
x11: ["true", "false"]
|
|
wayland: ["true", "false"]
|
|
name: GTK x11=${{ matrix.x11 }} wayland=${{ matrix.wayland }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test
|
|
run: |
|
|
nix develop -c \
|
|
zig build \
|
|
-Dapp-runtime=gtk \
|
|
-Dgtk-x11=${{ matrix.x11 }} \
|
|
-Dgtk-wayland=${{ matrix.wayland }} \
|
|
test
|
|
|
|
- name: Build
|
|
run: |
|
|
nix develop -c \
|
|
zig build \
|
|
-Dapp-runtime=gtk \
|
|
-Dgtk-x11=${{ matrix.x11 }} \
|
|
-Dgtk-wayland=${{ matrix.wayland }}
|
|
|
|
test-simd:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
simd: ["true", "false"]
|
|
name: Build -Dsimd=${{ matrix.simd }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test
|
|
run: |
|
|
nix develop -c zig build test -Dsimd=${{ matrix.simd }}
|
|
|
|
test-sentry-linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
sentry: ["true", "false"]
|
|
name: Build -Dsentry=${{ matrix.sentry }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test Sentry Build
|
|
run: |
|
|
nix develop -c zig build -Dsentry=${{ matrix.sentry }}
|
|
|
|
test-macos:
|
|
runs-on: namespace-profile-ghostty-macos-tahoe
|
|
needs: test
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
# TODO(tahoe): https://github.com/NixOS/nix/issues/13342
|
|
- uses: DeterminateSystems/nix-installer-action@main
|
|
with:
|
|
determinate: true
|
|
- 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: Xcode Version
|
|
run: xcodebuild -version
|
|
|
|
- name: get the Zig deps
|
|
id: deps
|
|
run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT
|
|
|
|
- name: test
|
|
run: nix develop -c zig build test --system ${{ steps.deps.outputs.deps }}
|
|
|
|
test-i18n:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
i18n: ["true", "false"]
|
|
name: Build -Di18n=${{ matrix.simd }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test
|
|
run: |
|
|
nix develop -c zig build -Di18n=${{ matrix.i18n }}
|
|
|
|
zig-fmt:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: zig fmt
|
|
run: nix develop -c zig fmt --check .
|
|
|
|
pinact:
|
|
name: "GitHub Actions Pins"
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: pinact check
|
|
run: nix develop -c pinact run --check
|
|
|
|
prettier:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: prettier check
|
|
run: nix develop -c prettier --check .
|
|
|
|
alejandra:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: alejandra check
|
|
run: nix develop -c alejandra --check .
|
|
|
|
typos:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: typos check
|
|
run: nix develop -c typos
|
|
|
|
shellcheck:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: shellcheck
|
|
run: |
|
|
nix develop -c shellcheck \
|
|
--check-sourced \
|
|
--color=always \
|
|
--severity=warning \
|
|
--shell=bash \
|
|
--external-sources \
|
|
$(find . \( -name "*.sh" -o -name "*.bash" \) -type f ! -path "./zig-out/*" ! -path "./macos/build/*" ! -path "./.git/*" | sort)
|
|
|
|
translations:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: check translations
|
|
run: nix develop -c .github/scripts/check-translations.sh
|
|
|
|
blueprint-compiler:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-xsm
|
|
timeout-minutes: 60
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
skipPush: true
|
|
useDaemon: false # sometimes fails on short jobs
|
|
- name: check blueprints
|
|
run: nix develop -c ./nix/build-support/check-blueprints.sh
|
|
- name: check unchanged
|
|
run: git diff --exit-code
|
|
|
|
test-pkg-linux:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
pkg: ["wuffs"]
|
|
name: Test pkg/${{ matrix.pkg }}
|
|
runs-on: namespace-profile-ghostty-sm
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: Test ${{ matrix.pkg }} Build
|
|
run: |
|
|
nix develop -c sh -c "cd pkg/${{ matrix.pkg }} ; zig build test"
|
|
|
|
test-debian-13:
|
|
name: Test build on Debian 13
|
|
runs-on: namespace-profile-ghostty-sm
|
|
timeout-minutes: 10
|
|
needs: [test, build-dist]
|
|
steps:
|
|
- name: Install and configure Namespace CLI
|
|
uses: namespacelabs/nscloud-setup@d1c625762f7c926a54bd39252efff0705fd11c64 # v0.0.10
|
|
|
|
- name: Configure Namespace powered Buildx
|
|
uses: namespacelabs/nscloud-setup-buildx-action@91c2e6537780e3b092cb8476406be99a8f91bd5e # v0.0.20
|
|
|
|
- name: Download Source Tarball Artifacts
|
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
|
with:
|
|
name: source-tarball
|
|
|
|
- name: Extract tarball
|
|
run: |
|
|
mkdir dist
|
|
tar --verbose --extract --strip-components 1 --directory dist --file ghostty-source.tar.gz
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
|
|
with:
|
|
context: dist
|
|
file: dist/src/build/docker/debian/Dockerfile
|
|
build-args: |
|
|
DISTRO_VERSION=13
|
|
|
|
flatpak:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
name: "Flatpak"
|
|
container:
|
|
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-47
|
|
options: --privileged
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
variant:
|
|
- arch: x86_64
|
|
runner: namespace-profile-ghostty-md
|
|
- arch: aarch64
|
|
runner: namespace-profile-ghostty-md-arm64
|
|
runs-on: ${{ matrix.variant.runner }}
|
|
needs: test
|
|
steps:
|
|
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
- uses: flatpak/flatpak-github-actions/flatpak-builder@92ae9851ad316786193b1fd3f40c4b51eb5cb101 # v6.6
|
|
with:
|
|
bundle: com.mitchellh.ghostty
|
|
manifest-path: flatpak/com.mitchellh.ghostty.yml
|
|
cache-key: flatpak-builder-${{ github.sha }}
|
|
arch: ${{ matrix.variant.arch }}
|
|
verbose: true
|
|
|
|
valgrind:
|
|
if: github.repository == 'ghostty-org/ghostty'
|
|
runs-on: namespace-profile-ghostty-lg
|
|
timeout-minutes: 30
|
|
needs: test
|
|
env:
|
|
ZIG_LOCAL_CACHE_DIR: /zig/local-cache
|
|
ZIG_GLOBAL_CACHE_DIR: /zig/global-cache
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup Cache
|
|
uses: namespacelabs/nscloud-cache-action@446d8f390563cd54ca27e8de5bdb816f63c0b706 # v1.2.21
|
|
with:
|
|
path: |
|
|
/nix
|
|
/zig
|
|
|
|
# Install Nix and use that to run our tests so our environment matches exactly.
|
|
- uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
|
|
with:
|
|
nix_path: nixpkgs=channel:nixos-unstable
|
|
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
|
with:
|
|
name: ghostty
|
|
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
|
|
|
- name: valgrind deps
|
|
run: |
|
|
sudo apt update -y
|
|
sudo apt install -y valgrind libc6-dbg
|
|
|
|
- name: valgrind
|
|
run: |
|
|
nix develop -c zig build test-valgrind
|
|
|
|
# build-freebsd:
|
|
# name: Build on FreeBSD
|
|
# needs: test
|
|
# runs-on: namespace-profile-mitchellh-sm-systemd
|
|
# strategy:
|
|
# matrix:
|
|
# release:
|
|
# - "14.3"
|
|
# - "15.0"
|
|
# timeout-minutes: 10
|
|
# steps:
|
|
# - name: Checkout Ghostty
|
|
# uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
#
|
|
# - name: Start SSH
|
|
# run: |
|
|
# sudo systemctl start ssh
|
|
#
|
|
# - name: Set up FreeBSD VM
|
|
# uses: vmactions/freebsd-vm@487ce35b96fae3e60d45b521735f5aa436ecfade # v1.2.4
|
|
# with:
|
|
# release: ${{ matrix.release }}
|
|
# copyback: false
|
|
# usesh: true
|
|
# prepare: |
|
|
# pkg install -y \
|
|
# devel/blueprint-compiler \
|
|
# devel/gettext \
|
|
# devel/git \
|
|
# devel/pkgconf \
|
|
# ftp/curl \
|
|
# graphics/wayland \
|
|
# security/ca_root_nss \
|
|
# textproc/hs-pandoc \
|
|
# x11-fonts/jetbrains-mono \
|
|
# x11-toolkits/libadwaita \
|
|
# x11-toolkits/gtk40 \
|
|
# x11-toolkits/gtk4-layer-shell
|
|
# curl -L -o /tmp/zig.tar.xz "https://ziglang.org/download/${{ needs.test.outputs.zig_version }}/zig-x86_64-freebsd-${{ needs.test.outputs.zig_version }}.tar.xz" && \
|
|
# mkdir /opt && \
|
|
# tar -xf /tmp/zig.tar.xz -C /opt && \
|
|
# rm /tmp/zig.tar.xz && \
|
|
# ln -s "/opt/zig-x86_64-freebsd-${{ needs.test.outputs.zig_version }}/zig" /usr/local/bin/zig
|
|
#
|
|
# run: |
|
|
# zig env
|
|
#
|
|
# - name: Run tests
|
|
# shell: freebsd {0}
|
|
# run: |
|
|
# cd $GITHUB_WORKSPACE
|
|
# zig build test
|
|
#
|
|
# - name: Build GTK app runtime
|
|
# shell: freebsd {0}
|
|
# run: |
|
|
# cd $GITHUB_WORKSPACE
|
|
# zig build
|
|
# ./zig-out/bin/ghostty +version
|