-
Notifications
You must be signed in to change notification settings - Fork 89
143 lines (139 loc) · 4.12 KB
/
primary.yml
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
name: BAML Runtime
on:
pull_request:
branches:
- canary
push:
paths:
- "engine/**"
- ".github/workflows/primary.yml"
branches:
- canary
# need to run this periodically on the default branch to populate the build cache
schedule:
# daily at 2am PST
- cron: 0 10 * * *
merge_group:
types: [checks_requested]
workflow_dispatch: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
pull-requests: read
repository-projects: read
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 9.12.0
run_install: false
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
cache-dependency-path: |
typescript/**/pnpm-lock.yaml
- name: Install Node
run: pnpm install --frozen-lockfile
working-directory: typescript
- name: Check TS Lint
run: pnpm biome ci . --organize-imports-enabled=false
working-directory: typescript
test_node_generator:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
cache-dependency-path: |
engine/language_client_typescript/pnpm-lock.yaml
integ-tests/typescript/pnpm-lock.yaml
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: engine
- name: Install Node
run: pnpm install --frozen-lockfile
working-directory: engine/language_client_typescript
- name: Build Node
run: pnpm build:debug
working-directory: engine/language_client_typescript
- name: Install Node
run: pnpm install --frozen-lockfile
working-directory: integ-tests/typescript
- name: Test Node Generator
run: pnpm generate
working-directory: integ-tests/typescript
- name: Ensure No Changes
run: git diff --exit-code
- name: Test Node Generator (1 of 3)
run: pnpm generate
working-directory: integ-tests/typescript
- name: Ensure No Changes (1 of 3)
run: git diff --exit-code
- name: Test Node Generator (2 of 3)
run: pnpm generate
working-directory: integ-tests/typescript
- name: Ensure No Changes (2 of 3)
run: git diff --exit-code
- name: Test Node Generator (3 of 3)
run: pnpm generate
working-directory: integ-tests/typescript
- name: Ensure No Changes (3 of 3)
run: git diff --exit-code
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: engine
- name: Test Rust
# skip doctests & integration tests (the latter require OPENAI_API_KEY and ANTHROPIC_API_KEY to be set)
run: cargo test --lib
working-directory: engine
build-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- run: rustup target add wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
workspaces: engine
- name: Build rust for wasm32
run: cargo build --target=wasm32-unknown-unknown
working-directory: engine/baml-schema-wasm
integ-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- uses: astral-sh/setup-uv@v5
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
workspaces: engine
- name: run python tests
run: |
cd integ-tests/python
./run_tests.sh