-
Notifications
You must be signed in to change notification settings - Fork 383
85 lines (76 loc) · 2.72 KB
/
Copy pathnon-windows.yml
File metadata and controls
85 lines (76 loc) · 2.72 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
name: Non-Windows
on:
push:
branches:
- master
pull_request:
permissions:
contents: read
jobs:
build:
name: ${{ matrix.os }}
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24.19.0
cache: npm
- name: Validate lockfile portability
run: npm run check:lockfile
- name: Validate source installer guardrails
run: |
bash -n install.sh
set +e
output="$(SKILL_RECORDER_COMMIT=master bash install.sh 2>&1)"
status=$?
set -e
if [ "$status" -eq 0 ]; then
echo "install.sh accepted a mutable source reference" >&2
exit 1
fi
printf '%s\n' "$output" | grep -q "full 40-character"
- name: Test commit-pinned source installation
env:
SKILL_RECORDER_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }}
SKILL_RECORDER_INSTALL_ROOT: ${{ runner.temp }}/skill-recorder-source
SKILL_RECORDER_NO_LAUNCH: "1"
run: bash install.sh
- name: Verify macOS relaunch app bundle
if: runner.os == 'macOS'
run: |
app="$HOME/Applications/Skill Recorder (Source).app"
stub="$app/Contents/MacOS/skill-recorder-source"
plist="$app/Contents/Info.plist"
test -d "$app"
test -x "$stub"
plutil -lint "$plist"
- run: npm ci --ignore-scripts=false --dangerously-allow-all-scripts=false --strict-allow-scripts
- run: npm run compliance:licenses
- name: Verify platform license coverage
run: |
node --input-type=module -e "
import { existsSync, readFileSync } from 'node:fs';
const inventory = JSON.parse(readFileSync('.compliance/LICENSE-INVENTORY.json'));
const libvips = inventory.packages.find(({ name }) =>
name.startsWith('@img/sharp-libvips-'));
if (!libvips || libvips.licenseSource !== 'licenses/LGPL-3.0.txt')
throw new Error('Platform Sharp/libvips LGPL coverage is missing');
if (!existsSync('.compliance/licenses/LGPL-3.0.txt'))
throw new Error('Canonical LGPL-3.0 text is missing');
"
- name: Verify optional window provider
run: >-
node --input-type=module -e
"const m = await import('get-windows');
if (typeof m.activeWindow !== 'function')
throw new Error('get-windows activeWindow export is unavailable')"
- run: npm test
- run: npm run build