diff --git a/.github/workflows/elixir.yml b/.github/workflows/elixir.yml index 78e9e88..8f9c33a 100644 --- a/.github/workflows/elixir.yml +++ b/.github/workflows/elixir.yml @@ -5,67 +5,96 @@ on: branches: - main pull_request: - workflow_dispatch: permissions: contents: write env: - AUTUMN_BUILD: true MIX_ENV: test + AUTUMN_BUILD: true CARGO_TERM_COLOR: always jobs: test: + name: "test: OTP ${{ matrix.otp }} | Elixir ${{ matrix.elixir }} | Rust ${{ matrix.rust }}" + runs-on: ubuntu-latest + strategy: + fail-fast: false matrix: include: - - otp_version: "24" - elixir_version: "1.14.0" + - otp: "24" + elixir: "1.14.0" + rust: "1.86.0" - - otp_version: "27" - elixir_version: "1.18" + - otp: "27" + elixir: "1.18" + rust: "1.86.0" - runs-on: ubuntu-latest - name: test steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: | - _build/test/lib/autumn/native/autumnus_nif + deps + _build ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ - key: test-native-${{ runner.os }}-${{ hashFiles('native/**/Cargo.lock') }} + native/autumnus_nif/target + key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}-cargo-${{ hashFiles('native/autumnus_nif/Cargo.lock') }} restore-keys: | - test-native-${{ runner.os }} + ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}-cargo- + ${{ runner.os }}-mix- - uses: erlef/setup-beam@v1 with: - otp-version: ${{ matrix.otp_version }} - elixir-version: ${{ matrix.elixir_version }} + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} - uses: dtolnay/rust-toolchain@master with: - toolchain: stable - components: clippy + toolchain: ${{ matrix.rust }} - run: mix deps.get - - run: mix deps.compile + - run: mix test quality: + name: "quality: OTP ${{ matrix.otp }} | Elixir ${{ matrix.elixir }}" runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - otp: "27" + elixir: "1.18" + steps: - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + deps + _build + key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }} + restore-keys: | + ${{ runner.os }}-mix- + - uses: erlef/setup-beam@v1 with: - otp-version: "27" - elixir-version: "1.18" + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} + + - run: mix deps.get + + - run: mix compile --warnings-as-errors + + - run: mix deps.unlock --unused - run: mix format diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index f1cc6bf..0000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Rust - -on: - push: - branches: - - main - paths: - - "native/**" - pull_request: - paths: - - "native/**" - -permissions: - contents: write - -env: - CARGO_TERM_COLOR: always - -jobs: - quality: - runs-on: ubuntu-latest - - strategy: - matrix: - manifest: - - native/autumnus_nif/Cargo.toml - - steps: - - uses: actions/checkout@v4 - - - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable - components: clippy - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - native/autumnus_nif - - - name: cargo fmt - run: cargo fmt --manifest-path=${{ matrix.manifest }} - - - uses: stefanzweifel/git-auto-commit-action@v6 - with: - push_options: --force - - - run: cargo test --manifest-path=${{ matrix.manifest }} --all-features - - - run: cargo clippy --manifest-path=${{ matrix.manifest }} -- -Dwarnings diff --git a/.github/workflows/rust_ci.yml b/.github/workflows/rust_ci.yml new file mode 100644 index 0000000..117d011 --- /dev/null +++ b/.github/workflows/rust_ci.yml @@ -0,0 +1,70 @@ +name: Rust Quality Check + +on: + push: + branches: + - main + paths: + - "native/**" + pull_request: + paths: + - "native/**" + workflow_dispatch: + +permissions: + contents: write + +env: + CARGO_TERM_COLOR: always + +jobs: + quality: + name: "quality: Rust ${{ matrix.rust }}" + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - rust: "1.86.0" + + defaults: + run: + working-directory: native/autumnus_nif + + steps: + - uses: actions/checkout@v4 + + - uses: dtolnay/rust-toolchain@master + with: + toolchain: "1.86.0" + components: clippy + + - name: Install cargo-sort + uses: baptiste0928/cargo-install@v3 + with: + crate: cargo-sort + + - name: Install cargo-sort-derives + uses: baptiste0928/cargo-install@v3 + with: + crate: cargo-sort-derives + + - uses: Swatinem/rust-cache@v2 + with: + workspaces: | + native/autumnus_nif + + - run: cargo sort + + - run: cargo sort-derives + + - run: cargo fmt + + - uses: stefanzweifel/git-auto-commit-action@v6 + with: + push_options: --force + + - run: cargo test --all-features + + - run: cargo clippy -- -Dwarnings