-
Notifications
You must be signed in to change notification settings - Fork 4
139 lines (105 loc) · 3.21 KB
/
build.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: Verify build
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
CARGO_TERM_COLOR: always
jobs:
linux:
name: Build on Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly # nightly is required for fmt
components: rustfmt, clippy
- name: Check
run: cargo check
- name: Format
run: |
cargo fmt --all -- --check
cargo clippy --workspace --bins -- -D warnings
- name: Build Debug
run: cargo build --verbose
- name: Run tests
run: cargo test --verbose
- name: Build Release
run: cargo build --verbose --release
- name: Install JDK
uses: actions/[email protected]
with:
distribution: "temurin"
java-version: "22"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3
- name: Java tests
run: gradle test
working-directory: ./java
- name: Publish Java release
run: gradle publish
working-directory: ./java
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Release fs-storage NDK binaries
- name: Install cargo-ndk
run: cargo install cargo-ndk
- name: Add Rust Toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
- name: Build fs-storage
run: cargo ndk -o ./target/release/fs-storage/jniLibs --target aarch64-linux-android --target armv7-linux-androideabi --target i686-linux-android --target x86_64-linux-android build -p fs-storage --release
- name: Upload fs-storage
uses: actions/upload-artifact@v4
with:
name: fs-storage
path: ./target/release/fs-storage/jniLibs
windows:
name: Test on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build Release
run: cargo build --verbose --release
- name: Run tests
run: cargo test --workspace --verbose
- name: Install JDK
uses: actions/[email protected]
with:
distribution: "temurin"
java-version: "22"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3
- name: Java tests
run: gradle test
working-directory: ./java
mac-intel:
name: Test on macOS Intel
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build Release
run: cargo build --verbose --release
- name: Run tests
run: cargo test --workspace --verbose
- name: Install JDK
uses: actions/[email protected]
with:
distribution: "temurin"
java-version: "22"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3
- name: Java tests
run: gradle test
working-directory: ./java