Some checks failed
CI / rustfmt (push) Failing after 23s
CI / clippy (push) Successful in 1m51s
CI / wasm build (push) Successful in 1m33s
CI / test (push) Successful in 2m21s
CI / example usage (push) Successful in 1m42s
CI / duplicate code (push) Successful in 11s
CI / cargo-machete (push) Successful in 1m38s
CI / web client (push) Failing after 24s
CI / cargo-deny (push) Failing after 3m23s
(feat): add code quality control (fix): ci rewritten for forgejo (qol): move docs to dedicated docs/ folder
216 lines
6.7 KiB
YAML
216 lines
6.7 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
fmt:
|
|
name: rustfmt
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --component rustfmt
|
|
|
|
- name: Check formatting
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo fmt --all --check
|
|
|
|
clippy:
|
|
name: clippy
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --component clippy
|
|
|
|
- name: Run clippy
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml"
|
|
cargo clippy --workspace --exclude mtp-wasm --all-targets --all-features -- -D warnings -W unreachable-pub
|
|
|
|
test:
|
|
name: test
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
|
|
|
- name: Run tests
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml"
|
|
cargo test --workspace --exclude mtp-wasm --all-features
|
|
|
|
wasm:
|
|
name: wasm build
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev lld
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target wasm32-unknown-unknown
|
|
|
|
- name: Build wasm crate
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml"
|
|
cargo build -p mtp-wasm --target wasm32-unknown-unknown
|
|
env:
|
|
RUSTFLAGS: --cfg web_sys_unstable_apis
|
|
|
|
example-usage:
|
|
name: example usage
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
|
|
|
- name: Check example usage workspace
|
|
working-directory: example-usage
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
export MTP_TYPE_MAPS="$PWD/type-maps.yaml"
|
|
cargo check --workspace --all-targets --all-features
|
|
|
|
deny:
|
|
name: cargo-deny
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
|
|
|
- name: Install cargo-deny
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo install cargo-deny --locked
|
|
|
|
- name: Run cargo-deny
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo deny check
|
|
|
|
machete:
|
|
name: cargo-machete
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
|
|
|
- name: Install cargo-machete
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo install cargo-machete --locked
|
|
|
|
- name: Run cargo-machete
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
cargo machete
|
|
|
|
duplicates:
|
|
name: duplicate code
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip
|
|
|
|
- name: Install Bun
|
|
run: |
|
|
curl -fsSL https://bun.sh/install | bash
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
export PATH="$HOME/.bun/bin:$PATH"
|
|
bun install --frozen-lockfile
|
|
|
|
- name: Run duplicate detector
|
|
run: |
|
|
export PATH="$HOME/.bun/bin:$PATH"
|
|
bun run dup
|
|
|
|
web-client:
|
|
name: web client
|
|
runs-on: docker
|
|
steps:
|
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
|
|
|
- name: Install system dependencies
|
|
run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip build-essential pkg-config libssl-dev lld
|
|
|
|
- name: Install Rust
|
|
run: |
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target wasm32-unknown-unknown
|
|
|
|
- name: Install wasm-pack
|
|
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
|
|
|
- name: Build wasm package
|
|
run: |
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml"
|
|
wasm-pack build wasm --target web
|
|
env:
|
|
RUSTFLAGS: --cfg web_sys_unstable_apis
|
|
|
|
- name: Install Bun
|
|
run: |
|
|
curl -fsSL https://bun.sh/install | bash
|
|
|
|
- name: Install dependencies
|
|
working-directory: example-usage/web-client
|
|
run: |
|
|
export PATH="$HOME/.bun/bin:$PATH"
|
|
bun install --frozen-lockfile
|
|
|
|
- name: Build web client
|
|
working-directory: example-usage/web-client
|
|
run: |
|
|
export PATH="$HOME/.bun/bin:$PATH"
|
|
bun run build
|