-
Notifications
You must be signed in to change notification settings - Fork 0
104 lines (99 loc) · 3.63 KB
/
ci.yml
File metadata and controls
104 lines (99 loc) · 3.63 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
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
# Fast "does the metadata parse" job that gates everything else.
metadata:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Validate root package.json
run: node -e "require('./package.json')"
- name: Validate plugin package.json + openclaw.plugin.json
run: |
node -e "require('./packages/plugin/package.json')"
node -e "require('./packages/plugin/openclaw.plugin.json')"
- name: Validate client-js package.json
run: node -e "require('./packages/client-js/package.json')"
- name: Validate schema package.json
run: node -e "require('./schema/package.json')"
- name: Validate fixture JSON
run: |
set -e
find fixtures -name '*.json' | while read f; do
node -e "JSON.parse(require('fs').readFileSync('$f', 'utf8'))"
done
- name: Verify plugin name matches install.npmSpec
working-directory: packages/plugin
run: |
node -e "
const pkg = require('./package.json');
const spec = pkg.openclaw?.install?.npmSpec;
if (spec !== pkg.name) {
console.error('Mismatch: name=' + pkg.name + ' vs install.npmSpec=' + spec);
process.exit(1);
}
"
- name: Verify version alignment across packages
run: node scripts/check-versions.mjs
typescript:
runs-on: ubuntu-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- uses: pnpm/action-setup@v4
- name: pnpm install
run: pnpm install --frozen-lockfile
- name: Build schema + client-js
run: pnpm --filter ./schema --filter ./packages/client-js run --if-present build
- name: Test client-js
run: pnpm --filter ./packages/client-js test
- name: Typecheck client-js
run: pnpm --filter ./packages/client-js typecheck
- name: Test plugin
run: pnpm --filter ./packages/plugin test
- name: Typecheck plugin
run: pnpm --filter ./packages/plugin typecheck
kotlin:
runs-on: ubuntu-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- uses: gradle/actions/setup-gradle@v4
with:
gradle-version: 8.10.2
- name: Gradle build + test (:core, :android, :compose)
working-directory: packages/client-kotlin
# :compose:assemble instead of :compose:build because :build pulls in
# Android Lint, which crashes with IncompatibleClassChangeError inside
# RememberInCompositionDetector when AGP 8.7.x runs against the Compose
# plugin/runtime we're on. The release job publishes via
# :compose:publish*Release, which doesn't run lint, so the artifact
# ships fine. Switch back to :compose:build once we move to an AGP/lint
# combo without that crash, or once we ship lint config that skips it.
run: gradle :core:build :core:test :android:build :android:test :compose:assemble --no-daemon
swift:
runs-on: macos-latest
needs: metadata
steps:
- uses: actions/checkout@v4
- name: swift --version
run: swift --version
- name: swift build
working-directory: packages/client-swift
run: swift build
- name: swift test
working-directory: packages/client-swift
run: swift test