Repository navigation
202 lines (194 loc) · 7.56 KB
/
Copy pathci.yml
File metadata and controls
202 lines (194 loc) · 7.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
name: CI
on:
workflow_dispatch:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: true
# Single source of truth for the rivet pin; every install step below
# references this so a bump is one edit, not a grep-replace across jobs.
env:
RIVET_PIN: 9d766b4acab672844093204cb4845ef4ef933d2c
jobs:
contract:
name: Contract preflight (i18n + release metadata)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Verify platform i18n copies match shared/i18n
run: scripts/sync-i18n.sh --check
- name: Verify release version alignment
run: bash scripts/check-release-version.sh
- name: Check release script shell syntax
run: |
set -euo pipefail
for script in scripts/check-release-version.sh scripts/make-update-manifest.sh scripts/update-keys.sh; do
bash -n "$script"
done
- name: Verify dependency pins stay aligned
run: bash scripts/check-dependency-pins.sh
- name: Verify Windows installer bitmap and checkbox surface
run: python3 scripts/check-windows-installer-bitmaps.py
core:
name: Racket core (contract tests)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Racket CS 9.3
uses: Bogdanp/setup-racket@v1.15
with:
architecture: x64
distribution: full
variant: CS
version: '9.3'
- name: Install Rivet (catalog)
# keel pinned just below the commit that added
# tests/documentation — it collides with rivet v0.11.0's own
# tests/documentation module and fails every install (upstream
# issue filed against keel). Drop this pin once the rename lands.
run: |
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/keel.git#76a5b9fdd01bde284d310ff5c05ec73972f64201'
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#${{ env.RIVET_PIN }}'
- name: Core contract tests
run: raco test racket/
# Golden CLI suite: byte-identical stdout/stderr/exit codes
# against shared/cli-golden/, run through the system-racket CLI shim.
- name: Golden CLI suite
run: python3 shared/cli-golden/runner.py --binary scripts/taskly-cli.sh
linux-host:
name: Linux host (GTK4 build)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Racket CS 9.3
uses: Bogdanp/setup-racket@v1.15
with:
architecture: x64
distribution: full
variant: CS
version: '9.3'
- name: Install GTK toolchain
run: |
sudo apt-get update
sudo apt-get install -y cmake ninja-build pkg-config \
libgtk-4-dev libadwaita-1-dev libjson-glib-dev \
libsecret-1-dev libglib2.0-dev
# Builds and caches the embeddable Racket CS runtime and exports
# RIVET_RACKET_* (rivet's own composite action).
- name: Set up embeddable Racket CS
uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@9d766b4acab672844093204cb4845ef4ef933d2c
# Installed after the embeddable runtime so the catalog dependency
# closure (cext-lib, crypto-lib, keel) resolves against the minimal
# build — it ships no packages of its own. db backs taskly's storage;
# crypto backs the updater's signing.
- name: Install Rivet (catalog) and backend packages
run: |
# keel pinned below the tests/documentation collision commit
# (upstream issue filed); drop once keel renames the module.
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/keel.git#76a5b9fdd01bde284d310ff5c05ec73972f64201'
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#${{ env.RIVET_PIN }}'
raco pkg install --auto --no-docs db crypto
- name: Toolchain doctor
run: raco rivet doctor --json
- name: Build host
run: raco rivet build
- name: Headless boot smoke
run: |
sudo apt-get install -y xvfb
xvfb-run -a ./.rivet/stage/RivetHost &
APP_PID=$!
sleep 8
kill -0 $APP_PID
kill $APP_PID
macos-host:
name: macOS host (${{ matrix.arch }} build)
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- arch: arm64
runner: macos-15
racket-arch: arm64
- arch: x64
runner: macos-15-intel
racket-arch: x64
steps:
- uses: actions/checkout@v4
- name: Setup Racket CS 9.3
uses: Bogdanp/setup-racket@v1.15
with:
# Each leg builds the architecture it will package (release.yml
# macos matrix matches).
architecture: ${{ matrix.racket-arch }}
distribution: full
variant: CS
version: '9.3'
- name: Install Rivet (catalog)
# keel pinned just below the commit that added
# tests/documentation — it collides with rivet v0.11.0's own
# tests/documentation module and fails every install (upstream
# issue filed against keel). Drop this pin once the rename lands.
run: |
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/keel.git#76a5b9fdd01bde284d310ff5c05ec73972f64201'
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#${{ env.RIVET_PIN }}'
- name: Build host
run: raco rivet build
- name: Boot smoke
shell: bash
run: |
set -euo pipefail
smoke_home="$RUNNER_TEMP/taskly-smoke-home"
smoke_log="$RUNNER_TEMP/taskly-smoke.log"
mkdir -p "$smoke_home"
HOME="$smoke_home" ./.rivet/stage/RivetHost >"$smoke_log" 2>&1 &
APP_PID=$!
cleanup() {
if kill -0 "$APP_PID" 2>/dev/null; then
kill -TERM "$APP_PID" 2>/dev/null || true
for _ in 1 2 3 4 5; do
kill -0 "$APP_PID" 2>/dev/null || break
sleep 1
done
kill -KILL "$APP_PID" 2>/dev/null || true
fi
wait "$APP_PID" 2>/dev/null || true
}
trap cleanup EXIT
sleep 8
if ! kill -0 "$APP_PID" 2>/dev/null; then
cat "$smoke_log" || true
echo "::error::RivetHost exited before the 8-second smoke window"
exit 1
fi
cleanup
trap - EXIT
windows-host:
name: Windows host (WinRT build)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup Racket CS 9.3
uses: Bogdanp/setup-racket@v1.15
with:
architecture: x64
distribution: full
variant: CS
version: '9.3'
- name: Install Rivet (catalog)
shell: bash
# keel pinned just below the commit that added
# tests/documentation — it collides with rivet v0.11.0's own
# tests/documentation module and fails every install (upstream
# issue filed against keel). Drop this pin once the rename lands.
run: |
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/keel.git#76a5b9fdd01bde284d310ff5c05ec73972f64201'
raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#${{ env.RIVET_PIN }}'
- name: Build host
shell: pwsh
run: raco rivet build