-
-
Notifications
You must be signed in to change notification settings - Fork 360
190 lines (172 loc) · 6.63 KB
/
ci.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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
name: CI
on:
push:
pull_request:
workflow_dispatch:
# This allows running it on any branch manually:
# https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
env:
CARGO_TERM_COLOR: always
# Deny warns here as a catch-all and because some commands (e.g. cargo build) don't accept `--deny warnings`
# but also deny them on all individual cargo invocations where available because:
# 1) Some commands might not support rustflags (e.g. clippy didn't at first, cargo doc uses a different var, ...)
# 2) People might copy paste the commands into CI where this flag is missing without noticing.
RUSTFLAGS: --deny warnings
jobs:
tests:
name: Tests CI
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
rust: [stable]
# For reference: https://github.com/actions/virtual-environments#available-environments
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
# Caching must be after toolchain selection
- uses: Swatinem/rust-cache@v2
- name: Install linux deps
if: ${{ matrix.os == 'ubuntu-latest' }}
# Note that for running your Fyrox game on CI, you might need additinal deps like libxkbcommon-x11 and OpenGL
# and you might need to run it using xvfb-run even in headless mode.
run: |
sudo apt-get update # Run update first or install might start failing eventually.
sudo apt-get install --no-install-recommends -y libasound2-dev libudev-dev pkg-config xorg-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev
- run: rustc --version && cargo --version
- name: Build and test
env:
RUSTFLAGS: -C prefer-dynamic=yes
run: |
cargo build --verbose --workspace --all-targets --all-features --profile github-ci
cargo test --verbose --workspace --all-features --profile github-ci
wasm:
name: Wasm CI
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust: [stable]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
targets: wasm32-unknown-unknown
# Caching must be after toolchain selection
- uses: Swatinem/rust-cache@v2
- run: rustc --version && cargo --version
- name: Build
# Build only fyrox package here, because there's fyrox-dylib package which cannot be compiled on wasm.
run: |
cargo build --verbose --target=wasm32-unknown-unknown --package fyrox
format:
name: Rustfmt CI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Use rust-toolchain because GHA tends to still have an old version for a few days after a new Rust release.
- uses: dtolnay/rust-toolchain@stable
- run: cargo fmt --version
- run: cargo fmt -- --check
clippy:
name: Clippy CI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Use rust-toolchain because GHA tends to still have an old version for a few days after a new Rust release.
- uses: dtolnay/rust-toolchain@stable
# Caching must be after toolchain selection
- uses: Swatinem/rust-cache@v2
- name: Install linux deps
run: |
sudo apt-get update # Run update first or install might start failing eventually.
sudo apt-get install --no-install-recommends -y libasound2-dev libudev-dev pkg-config xorg-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev
- run: cargo clippy --version
# Using --all-targets to also check tests and examples.
# Note that technically --all-features doesn't check all code when something is *disabled* by a feature.
- run: cargo clippy --workspace --all-targets --all-features -- --deny warnings
docs:
name: Documentation CI
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
# Docs.rs uses nightly https://docs.rs/about/builds
- uses: dtolnay/rust-toolchain@nightly
# Caching must be after toolchain selection
- uses: Swatinem/rust-cache@v2
- run: rustc --version && cargo --version
- name: Build Docs
run: cargo doc --all-features
env:
RUSTDOCFLAGS: --deny warnings
template_pc:
name: Project Template (PC)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install Tools
run: |
cargo install fyrox-template --path=template --force
- name: Generate and Build Projects
run: |
cd ../
fyrox-template init --name test_project --style=3d
cd test_project
fyrox-template upgrade --version=latest --local
cargo build --package editor
template_android:
name: Project Template (Android)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
- uses: android-actions/setup-android@v3
with:
cmdline-tools-version: 10406996
- run: sdkmanager tools "platforms;android-30"
- uses: nttld/setup-ndk@v1
with:
ndk-version: r26
- name: Install Tools
run: |
cargo install fyrox-template --path=template --force
cargo install cargo-apk
rustup target add armv7-linux-androideabi
- name: Generate and Build Projects
run: |
cd ../
fyrox-template init --name test_project --style=3d
cd test_project
fyrox-template upgrade --version=latest --local
cargo-apk apk build --package executor-android --target armv7-linux-androideabi
template_wasm:
name: Project Template (WASM)
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install Tools
run: |
cargo install fyrox-template --path=template --force
cargo install wasm-pack
rustup target add wasm32-unknown-unknown
- name: Generate and Build Projects
run: |
cd ../
fyrox-template init --name test_project --style=3d
cd test_project
fyrox-template upgrade --version=latest --local
cd executor-wasm
wasm-pack build --target=web