-
Notifications
You must be signed in to change notification settings - Fork 184
143 lines (136 loc) · 3.87 KB
/
Copy pathrust-bindings.yml
File metadata and controls
143 lines (136 loc) · 3.87 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
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: 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
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.4
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-wasip1
- 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
if: ${{ matrix.os != 'windows-latest' }}
run: bundle exec rake cargo:examples
lint:
name: cargo:lint
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.4
bundler-cache: true
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
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: [address]
steps:
- uses: actions/checkout@v5
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.4
bundler-cache: true
- name: rake cargo:build
run: bundle exec rake cargo:build
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
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-wasip1
# - 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