-
Notifications
You must be signed in to change notification settings - Fork 0
137 lines (120 loc) · 3.88 KB
/
test.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
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
RUSTFLAGS: "-D warnings"
jobs:
test:
env:
STRAINER_API_KEY: "env-key"
STRAINER_PROVIDER: "anthropic"
STRAINER_BASE_URL: "https://env.api.com"
STRAINER_REQUESTS_PER_MINUTE: 30
STRAINER_TOKENS_PER_MINUTE: 50000
STRAINER_WARNING_THRESHOLD: 70
STRAINER_CRITICAL_THRESHOLD: 90
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
name: Linux (x86_64)
target: x86_64-unknown-linux-gnu
- os: macos-14
name: macOS (Apple Silicon)
- os: macos-latest
name: macOS (Intel x86_64)
name: Test ${{ matrix.name }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy, rustfmt
targets: ${{ matrix.target }}
- name: Install cross-compilation dependencies
if: matrix.target == 'aarch64-unknown-linux-gnu' || matrix.target == 'armv7-unknown-linux-gnueabihf'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-${{ matrix.target }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Check formatting
run: cargo fmt --check
- name: Run clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Build tests first
run: cargo test --features testing --no-run
- name: Run tests
run: |
if [ -n "${{ matrix.target }}" ] && [ "${{ matrix.target }}" != "x86_64-unknown-linux-gnu" ]; then
cargo test --features testing --target ${{ matrix.target }}
else
cargo test --features testing
fi
- name: Run security audit
uses: actions-rs/audit-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
coverage:
name: Code Coverage
runs-on: ubuntu-latest
env:
STRAINER_API_KEY: "env-key"
STRAINER_PROVIDER: "anthropic"
STRAINER_BASE_URL: "https://env.api.com"
STRAINER_REQUESTS_PER_MINUTE: 30
STRAINER_TOKENS_PER_MINUTE: 50000
STRAINER_WARNING_THRESHOLD: 70
STRAINER_CRITICAL_THRESHOLD: 90
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin
- name: Generate coverage report
continue-on-error: true
run: cargo tarpaulin --features testing --out Xml --output-dir coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/cobertura.xml
fail_ci_if_error: false
# docs:
# name: Documentation
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
#
# - name: Install Rust
# uses: dtolnay/rust-toolchain@master
# with:
# toolchain: stable
#
# - name: Build documentation
# run: cargo doc --no-deps --all-features
# env:
# RUSTDOCFLAGS: -D warnings
#
# - name: Deploy documentation
# uses: peaceiris/actions-gh-pages@v3
# if: github.ref == 'refs/heads/main'
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# publish_dir: ./target/doc