From 5363025562b5fa18f7fc47799d7121cb93ceff91 Mon Sep 17 00:00:00 2001 From: WenyXu Date: Thu, 22 Jun 2023 02:54:36 +0000 Subject: [PATCH] chore: add ci cfg --- .github/workflows/ci.yml | 136 +++++++++++++++++++++++++++++++++++++++ Makefile | 9 +++ typos.toml | 5 ++ 3 files changed, 150 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 typos.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1e26774 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,136 @@ +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + paths-ignore: + - 'docs/**' + - 'config/**' + - '**.md' + - '.dockerignore' + - 'docker/**' + - '.gitignore' + push: + branches: + - develop + - main + paths-ignore: + - 'docs/**' + - 'config/**' + - '**.md' + - '.dockerignore' + - 'docker/**' + - '.gitignore' + workflow_dispatch: + +name: CI + +env: + RUST_TOOLCHAIN: nightly-2023-05-03 + +jobs: + typos: + name: Spell Check with Typos + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: crate-ci/typos@v1.13.10 + + check: + name: Check + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: Run cargo check + run: cargo check --workspace --all-targets + + toml: + name: Toml Check + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: Install taplo + run: cargo install taplo-cli --version ^0.8 --locked + - name: Run taplo + run: taplo format --check --option "indent_string= " + + fmt: + name: Rustfmt + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + components: rustfmt + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: Run cargo fmt + run: cargo fmt --all -- --check + + clippy: + name: Clippy + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + components: clippy + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: Run cargo clippy + run: cargo clippy --workspace --all-targets -- -D warnings + + coverage: + if: github.event.pull_request.draft == false + runs-on: ubuntu-latest + timeout-minutes: 60 + needs: [clippy] + steps: + - uses: actions/checkout@v3 + - uses: KyleMayes/install-llvm-action@v1 + with: + version: "14.0" + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_TOOLCHAIN }} + components: llvm-tools-preview + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + - name: Install latest nextest release + uses: taiki-e/install-action@nextest + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + - name: Collect coverage data + run: cargo llvm-cov nextest --workspace --lcov --output-path lcov.info + env: + CARGO_BUILD_RUSTFLAGS: "-C link-arg=-fuse-ld=lld" + RUST_BACKTRACE: 1 + CARGO_INCREMENTAL: 0 + UNITTEST_LOG_DIR: "__unittest_logs" + - name: Codecov upload + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: ./lcov.info + flags: rust + fail_ci_if_error: false + verbose: true diff --git a/Makefile b/Makefile index cc3896f..829157b 100644 --- a/Makefile +++ b/Makefile @@ -6,3 +6,12 @@ fmt: ## Format all the Rust code. .PHONY: clippy clippy: ## Check clippy rules. cargo clippy --workspace --all-targets -- -D warnings + + +.PHONY: fmt-toml +fmt-toml: ## Format all TOML files. + taplo format --option "indent_string= " + +.PHONY: check-toml +check-toml: ## Check all TOML files. + taplo format --check --option "indent_string= " \ No newline at end of file diff --git a/typos.toml b/typos.toml new file mode 100644 index 0000000..7f0ed6e --- /dev/null +++ b/typos.toml @@ -0,0 +1,5 @@ +[default.extend-words] +ue = "ue" +datas = "datas" +[files] +extend-exclude = ["corrupted"]