-
Notifications
You must be signed in to change notification settings - Fork 26
132 lines (118 loc) · 3.62 KB
/
rust.yml
File metadata and controls
132 lines (118 loc) · 3.62 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
name: Rust
on:
push:
branches:
- main
paths:
- "native/v8-runtime/**"
- ".github/workflows/rust.yml"
pull_request:
branches:
- main
paths:
- "native/v8-runtime/**"
- ".github/workflows/rust.yml"
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.85.0"
components: clippy, rustfmt
- name: Cache Rust build artifacts
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
native/v8-runtime/target
key: rust-lint-${{ hashFiles('native/v8-runtime/Cargo.lock') }}
restore-keys: |
rust-lint-
- name: Check formatting
working-directory: native/v8-runtime
run: cargo fmt --all -- --check
- name: Run clippy
working-directory: native/v8-runtime
run: cargo clippy --all-targets -- -D warnings
build:
needs: lint
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
npm-dir: linux-x64-gnu
binary: secure-exec-v8
test: true
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
npm-dir: linux-arm64-gnu
binary: secure-exec-v8
cross: true
- target: x86_64-apple-darwin
os: macos-13
npm-dir: darwin-x64
binary: secure-exec-v8
test: true
- target: aarch64-apple-darwin
os: macos-latest
npm-dir: darwin-arm64
binary: secure-exec-v8
test: true
- target: x86_64-pc-windows-msvc
os: windows-latest
npm-dir: win32-x64
binary: secure-exec-v8.exe
test: true
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.85.0"
targets: ${{ matrix.target }}
- name: Cache Rust build artifacts
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
native/v8-runtime/target
key: rust-${{ matrix.target }}-${{ hashFiles('native/v8-runtime/Cargo.lock') }}
restore-keys: |
rust-${{ matrix.target }}-
# Cross-compilation toolchain for linux-arm64
- name: Install cross-compilation tools
if: matrix.cross
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Configure cross-compilation linker
if: matrix.cross
working-directory: native/v8-runtime
run: |
mkdir -p .cargo
cat > .cargo/config.toml <<'EOF'
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
EOF
- name: Build
working-directory: native/v8-runtime
run: cargo build --release --target ${{ matrix.target }}
- name: Run tests
if: matrix.test
working-directory: native/v8-runtime
run: cargo test --release --target ${{ matrix.target }}
- name: Upload binary artifact
uses: actions/upload-artifact@v4
with:
name: v8-${{ matrix.npm-dir }}
path: native/v8-runtime/target/${{ matrix.target }}/release/${{ matrix.binary }}