diff --git a/.github/workflows/rust-clippy.yml b/.github/workflows/rust-clippy.yml new file mode 100644 index 0000000..5e9e5d9 --- /dev/null +++ b/.github/workflows/rust-clippy.yml @@ -0,0 +1,50 @@ +name: Rust Clippy Analysis + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + schedule: + - cron: "18 21 * * 6" + +env: + CARGO_TERM_COLOR: always + +jobs: + rust-clippy: + name: Run rust-clippy analysis + runs-on: ubuntu-latest + permissions: + contents: read + security-events: write + actions: read + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Rust Toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + components: clippy + + - name: Cache build dependencies + uses: Swatinem/rust-cache@v2 + + - name: Install clippy-sarif + run: cargo install clippy-sarif sarif-fmt + + - name: Run rust-clippy + run: + cargo clippy + --all-features + --tests + --message-format=json | clippy-sarif | tee rust-clippy-results.sarif | sarif-fmt + continue-on-error: true + + - name: Upload analysis results ot GitHub + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: rust-clippy-results.sarif + wait-for-processing: true \ No newline at end of file diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 36a9d2c..0c15996 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,40 +10,44 @@ env: CARGO_TERM_COLOR: always jobs: - lint: + rust-fmt-check: + name: Run Rust-fmt check runs-on: ubuntu-latest + permissions: + contents: read steps: - - uses: actions/checkout@v3 - - uses: actions-rs/toolchain@v1 + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Rust Toolchain + uses: dtolnay/rust-toolchain@stable with: toolchain: stable - profile: minimal - components: rustfmt,clippy - - uses: Swatinem/rust-cache@v2 - - name: Formatting + components: rustfmt + + - name: Cache build dependencies + uses: Swatinem/rust-cache@v2 + + - name: Run rust-fmt --check run: cargo fmt --check --all - - name: Linting - run: cargo clippy --all --tests test: + name: Run unit and integration tests runs-on: ubuntu-latest + permissions: + contents: read steps: - - uses: actions/checkout@v3 - - uses: actions-rs/toolchain@v1 + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install Rust Toolchain + uses: dtolnay/rust-toolchain@stable with: toolchain: stable - profile: minimal - - uses: Swatinem/rust-cache@v2 - - run: cargo test + components: rustfmt - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - - uses: Swatinem/rust-cache@v2 - - name: Build - run: cargo build + - name: Cache build dependencies + uses: Swatinem/rust-cache@v2 + + - name: Run cargo-test + run: cargo test