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: CI
on:
push:
branches:
pull_request:
branches:
env:
CARGO_TERM_COLOR: always
jobs:
check:
name: Check
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- uses: Swatinem/rust-cache@v2
- name: Check
run: cargo check --all-targets
- name: Clippy
run: cargo clippy --all-targets -- -D warnings
- name: Format
run: cargo fmt -- --check
test:
name: Test
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test -- --skip watcher_ --skip uptime_provider_executes
bench:
name: Benchmark
runs-on: macos-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run benchmarks
run: cargo bench -- --output-format=bencher 2>/dev/null | tee bench-results.txt
- name: Upload benchmark results
uses: actions/upload-artifact@v4
with:
name: bench-results
path: bench-results.txt
test-python:
name: Test Python SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/python
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install pytest
- name: Run tests
run: pytest -v
test-node:
name: Test Node.js SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/node
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install dependencies
run: npm ci
- name: Build
run: npm run build
- name: Run tests
run: npm test
test-go:
name: Test Go SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/go
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Run tests
run: go test -v ./...
test-ruby:
name: Test Ruby SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/ruby
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.3'
- name: Run tests
run: rake test
test-lua:
name: Test Lua SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/lua
steps:
- uses: actions/checkout@v4
- uses: leafo/gh-actions-lua@v10
with:
luaVersion: '5.4'
- uses: leafo/gh-actions-luarocks@v4
- name: Install luasocket
run: luarocks install luasocket
- name: Run tests
run: lua test/test_runner.lua
test-c:
name: Test C SDK
runs-on: ubuntu-latest
defaults:
run:
working-directory: sdks/c
steps:
- uses: actions/checkout@v4
- name: Build and test
run: make test