Simplify, clean up and speed up CI (#1970)
Use https://github.com/Swatinem/rust-cache
This commit is contained in:
parent
f3f6946eb2
commit
b978b06159
3 changed files with 104 additions and 171 deletions
246
.github/workflows/rust.yml
vendored
246
.github/workflows/rust.yml
vendored
|
@ -3,187 +3,80 @@ on: [push, pull_request]
|
||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# This is required to enable the web_sys clipboard API which eframe web uses
|
# web_sys_unstable_apis is required to enable the web_sys clipboard API which eframe web uses
|
||||||
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
# https://rustwasm.github.io/wasm-bindgen/api/web_sys/struct.Clipboard.html
|
||||||
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
# https://rustwasm.github.io/docs/wasm-bindgen/web-sys/unstable-apis.html
|
||||||
RUSTFLAGS: --cfg=web_sys_unstable_apis -D warnings
|
RUSTFLAGS: --cfg=web_sys_unstable_apis -D warnings
|
||||||
RUSTDOCFLAGS: -D warnings
|
RUSTDOCFLAGS: -D warnings
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_default:
|
fmt-crank-check-test:
|
||||||
name: cargo check (default features)
|
name: Format + check + test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: actions-rs/toolchain@v1
|
- uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: default
|
||||||
toolchain: 1.61.0
|
|
||||||
override: true
|
|
||||||
- name: Install packages (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt-get update && sudo apt-get install libspeechd-dev libgtk-3-dev
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: check
|
|
||||||
args: --locked
|
|
||||||
|
|
||||||
check_all_features:
|
|
||||||
name: cargo check --all-features
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-20.04, windows-latest, macOS-latest]
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
override: true
|
|
||||||
- name: Install packages (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt-get update && sudo apt-get install libspeechd-dev libgtk-3-dev
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: check
|
|
||||||
args: --all-features
|
|
||||||
|
|
||||||
check_web_default:
|
|
||||||
name: cargo check web (default features)
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
target: wasm32-unknown-unknown
|
|
||||||
override: true
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: check
|
|
||||||
args: -p egui_demo_app --lib --target wasm32-unknown-unknown
|
|
||||||
|
|
||||||
check_egui_demo_app:
|
|
||||||
name: cargo check -p egui_demo_app
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
override: true
|
|
||||||
- name: check
|
|
||||||
run: cargo check -p egui_demo_app
|
|
||||||
|
|
||||||
check_wasm_eframe_with_features:
|
|
||||||
name: cargo check wasm eframe
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
target: wasm32-unknown-unknown
|
|
||||||
override: true
|
|
||||||
- name: check
|
|
||||||
run: cargo check -p eframe --lib --no-default-features --features glow,persistence --target wasm32-unknown-unknown
|
|
||||||
|
|
||||||
check_web_all_features:
|
|
||||||
name: cargo check web --all-features
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
target: wasm32-unknown-unknown
|
|
||||||
override: true
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: check
|
|
||||||
args: -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features
|
|
||||||
|
|
||||||
test:
|
|
||||||
name: cargo test
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
toolchain: 1.61.0
|
||||||
override: true
|
override: true
|
||||||
- name: Install packages (Linux)
|
- name: Install packages (Linux)
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: sudo apt-get update && sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd
|
run: sudo apt-get update && sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd
|
||||||
- uses: actions-rs/cargo@v1
|
- name: Set up cargo cache
|
||||||
with:
|
uses: Swatinem/rust-cache@v2
|
||||||
command: test
|
- name: Rustfmt
|
||||||
args: --all-features
|
uses: actions-rs/cargo@v1
|
||||||
|
|
||||||
fmt:
|
|
||||||
name: cargo fmt
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
override: true
|
|
||||||
components: rustfmt
|
|
||||||
- uses: actions-rs/cargo@v1
|
|
||||||
with:
|
with:
|
||||||
command: fmt
|
command: fmt
|
||||||
args: --all -- --check
|
args: --all -- --check
|
||||||
|
- name: Install cargo-cranky
|
||||||
cranky:
|
uses: baptiste0928/cargo-install@v1
|
||||||
name: cargo cranky
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
crate: cargo-cranky
|
||||||
toolchain: 1.61.0
|
- name: Check all features
|
||||||
override: true
|
uses: actions-rs/cargo@v1
|
||||||
- run: cargo install cargo-cranky
|
with:
|
||||||
- name: Install packages (Linux)
|
command: check
|
||||||
if: runner.os == 'Linux'
|
args: --locked --all-features
|
||||||
run: sudo apt-get update && sudo apt-get install libspeechd-dev libgtk-3-dev # libgtk-3-dev is used by rfd
|
- name: Check default features
|
||||||
- uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
args: --locked
|
||||||
|
- name: Check no default features
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
args: --locked --no-default-features --lib
|
||||||
|
- name: Test doc-tests
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: test
|
||||||
|
args: --doc --all-features
|
||||||
|
- name: cargo doc --lib
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: doc
|
||||||
|
args: --lib --no-deps --all-features
|
||||||
|
- name: cargo doc --document-private-items
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: doc
|
||||||
|
args: --document-private-items --no-deps --all-features
|
||||||
|
- name: Test
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: test
|
||||||
|
args: --all-features
|
||||||
|
- name: Cranky
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
command: cranky
|
command: cranky
|
||||||
args: --workspace --all-targets --all-features -- -D warnings
|
args: --all-targets --all-features -- -D warnings
|
||||||
|
|
||||||
doc:
|
check_wasm:
|
||||||
name: cargo doc
|
name: Check wasm32 + wasm-bindgen
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: actions-rs/toolchain@v1
|
|
||||||
with:
|
|
||||||
profile: minimal
|
|
||||||
toolchain: 1.61.0
|
|
||||||
override: true
|
|
||||||
- name: Install packages (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
|
||||||
run: sudo apt-get update && sudo apt-get install libspeechd-dev
|
|
||||||
- run: cargo doc --lib --no-deps --all-features
|
|
||||||
|
|
||||||
cargo-deny:
|
|
||||||
runs-on: ubuntu-20.04
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- uses: EmbarkStudios/cargo-deny-action@v1
|
|
||||||
|
|
||||||
wasm_bindgen:
|
|
||||||
name: wasm-bindgen
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -193,8 +86,38 @@ jobs:
|
||||||
toolchain: 1.61.0
|
toolchain: 1.61.0
|
||||||
target: wasm32-unknown-unknown
|
target: wasm32-unknown-unknown
|
||||||
override: true
|
override: true
|
||||||
- run: ./sh/setup_web.sh
|
- run: sudo apt-get update && sudo apt-get install libgtk-3-dev
|
||||||
- run: ./sh/wasm_bindgen_check.sh
|
- name: Set up cargo cache
|
||||||
|
uses: Swatinem/rust-cache@v2
|
||||||
|
- name: Check wasm32 egui_demo_app
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
args: -p egui_demo_app --lib --target wasm32-unknown-unknown
|
||||||
|
- name: Check wasm32 egui_demo_app --all-features
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
args: -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features
|
||||||
|
- name: Check wasm32 eframe
|
||||||
|
uses: actions-rs/cargo@v1
|
||||||
|
with:
|
||||||
|
command: check
|
||||||
|
args: -p eframe --lib --no-default-features --features glow,persistence --target wasm32-unknown-unknown
|
||||||
|
- name: wasm-bindgen
|
||||||
|
uses: jetli/wasm-bindgen-action@v0.1.0
|
||||||
|
with:
|
||||||
|
version: "0.2.82"
|
||||||
|
- run: ./sh/wasm_bindgen_check.sh --skip-setup
|
||||||
|
|
||||||
|
cargo-deny:
|
||||||
|
name: cargo deny
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: EmbarkStudios/cargo-deny-action@v1
|
||||||
|
with:
|
||||||
|
rust-version: "1.61.0"
|
||||||
|
|
||||||
android:
|
android:
|
||||||
name: android
|
name: android
|
||||||
|
@ -207,6 +130,7 @@ jobs:
|
||||||
toolchain: 1.61.0
|
toolchain: 1.61.0
|
||||||
target: aarch64-linux-android
|
target: aarch64-linux-android
|
||||||
override: true
|
override: true
|
||||||
|
- name: Set up cargo cache
|
||||||
|
uses: Swatinem/rust-cache@v2
|
||||||
- run: cargo check --features wgpu --target aarch64-linux-android
|
- run: cargo check --features wgpu --target aarch64-linux-android
|
||||||
working-directory: crates/eframe
|
working-directory: crates/eframe
|
||||||
|
|
21
sh/check.sh
21
sh/check.sh
|
@ -1,26 +1,29 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
# This scripts runs various CI-like checks in a convenient way.
|
||||||
|
|
||||||
|
set -eu
|
||||||
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
||||||
cd "$script_path/.."
|
cd "$script_path/.."
|
||||||
set -eux
|
set -x
|
||||||
|
|
||||||
# Checks all tests, lints etc.
|
# Checks all tests, lints etc.
|
||||||
# Basically does what the CI does.
|
# Basically does what the CI does.
|
||||||
|
|
||||||
cargo install cargo-cranky # Uses lints defined in Cranky.toml. See https://github.com/ericseppanen/cargo-cranky
|
cargo install cargo-cranky # Uses lints defined in Cranky.toml. See https://github.com/ericseppanen/cargo-cranky
|
||||||
|
|
||||||
RUSTFLAGS="-D warnings"
|
export RUSTFLAGS="-D warnings"
|
||||||
RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454
|
export RUSTDOCFLAGS="-D warnings" # https://github.com/emilk/egui/pull/1454
|
||||||
|
|
||||||
cargo check --workspace --all-targets
|
cargo check --all-targets
|
||||||
cargo check --workspace --all-targets --all-features
|
cargo check --all-targets --all-features
|
||||||
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown
|
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown
|
||||||
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features
|
cargo check -p egui_demo_app --lib --target wasm32-unknown-unknown --all-features
|
||||||
cargo cranky --workspace --all-targets --all-features -- -D warnings
|
cargo cranky --all-targets --all-features -- -D warnings
|
||||||
cargo test --workspace --all-targets --all-features
|
cargo test --all-targets --all-features
|
||||||
cargo test --workspace --doc # slow - checks all doc-tests
|
cargo test --doc # slow - checks all doc-tests
|
||||||
cargo fmt --all -- --check
|
cargo fmt --all -- --check
|
||||||
|
|
||||||
cargo doc -p eframe -p egui -p egui_demo_lib -p egui_extras -p egui_glium -p egui_glow -p egui-winit -p emath -p epaint --lib --no-deps --all-features
|
cargo doc --lib --no-deps --all-features
|
||||||
cargo doc --document-private-items --no-deps --all-features
|
cargo doc --document-private-items --no-deps --all-features
|
||||||
|
|
||||||
(cd crates/eframe && cargo check --no-default-features --features "glow")
|
(cd crates/eframe && cargo check --no-default-features --features "glow")
|
||||||
|
|
|
@ -3,7 +3,13 @@ set -eu
|
||||||
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
script_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
||||||
cd "$script_path/.."
|
cd "$script_path/.."
|
||||||
|
|
||||||
./sh/setup_web.sh
|
if [[ $* == --skip-setup ]]
|
||||||
|
then
|
||||||
|
echo "Skipping setup_web.sh"
|
||||||
|
else
|
||||||
|
echo "Running setup_web.sh"
|
||||||
|
./sh/setup_web.sh
|
||||||
|
fi
|
||||||
|
|
||||||
CRATE_NAME="egui_demo_app"
|
CRATE_NAME="egui_demo_app"
|
||||||
FEATURES="glow,http,persistence,screen_reader"
|
FEATURES="glow,http,persistence,screen_reader"
|
||||||
|
|
Loading…
Reference in a new issue