-
Notifications
You must be signed in to change notification settings - Fork 148
139 lines (133 loc) · 3.76 KB
/
rust-bindings.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
name: Rust bindings
on:
push:
paths:
- ".github/workflows/rust-bindings.yml"
- "include/"
- "src/"
- "rust/"
- "*akefile*"
branches:
- main
pull_request:
env:
RUSTFLAGS: "-D warnings"
jobs:
test:
name: cargo:test
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71.1"
targets: wasm32-wasi
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('Cargo.toml') }}
${{ runner.os }}-cargo
- name: Run tests
run: bundle exec rake cargo:test
- name: Run examples
run: bundle exec rake cargo:examples
lint:
name: cargo:lint
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.71.1"
components: clippy, rustfmt
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo--${{ hashFiles('**/Cargo.toml') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('Cargo.toml') }}
${{ runner.os }}-cargo
- name: rake cargo:build
run: bundle exec rake cargo:build
- name: rake cargo:lint
run: bundle exec rake cargo:lint
sanitize:
name: cargo:sanitize:${{ matrix.sanitizer }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sanitizer: [leak, address]
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: rake cargo:build
run: bundle exec rake cargo:build
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2023-10-24
target: "x86_64-unknown-linux-gnu"
components: "rust-src"
- name: Test with sanitizer
run: bundle exec rake cargo:sanitize:${{ matrix.sanitizer }}
# We need to figure out what to do here. When you run publish it checks
# against the latest version published to crates, which means if we have any
# breaking changes in the bindings then this fails.
#
# publish:
# name: cargo:publish
# strategy:
# fail-fast: false
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Set up Ruby
# uses: ruby/setup-ruby@v1
# with:
# ruby-version: head
# bundler-cache: true
# - name: Set up Rust
# uses: dtolnay/rust-toolchain@master
# with:
# toolchain: "1.71.1"
# targets: wasm32-wasi
# - uses: actions/cache@v4
# with:
# path: |
# ~/.cargo/registry
# ~/.cargo/git
# target
# key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
# restore-keys: |
# ${{ runner.os }}-cargo-${{ hashFiles('Cargo.toml') }}
# ${{ runner.os }}-cargo
# - name: Publish crates (dry-run)
# run: bundle exec rake cargo:publish:dry