Skip to content

Elixir 1.18 tweaks and CI #1367

Elixir 1.18 tweaks and CI

Elixir 1.18 tweaks and CI #1367

Workflow file for this run

name: CI
on:
push:
branches: [master]
tags: ["*"]
pull_request:
branches: ["*"]
schedule:
- cron: '0 0 * * 3'
jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Install Erlang/Elixir
uses: erlef/setup-beam@v1
with:
otp-version: "26"
elixir-version: "1.15"
- name: Check cargo fmt
run: cargo fmt --all -- --check
- name: Check mix format (rustler_mix)
working-directory: rustler_mix
run: mix format --check-formatted
- name: Check mix format (rustler_tests)
working-directory: rustler_tests
run: mix format --check-formatted
build:
name: Build ${{matrix.os}} ${{matrix.toolchain}}
runs-on: ${{matrix.os}}-latest
strategy:
matrix:
os: [ubuntu, windows, macos]
toolchain: [stable, nightly]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{matrix.toolchain}}
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
shared-key: rustler
- run: cargo build
clippy:
name: Clippy ${{matrix.os}}
runs-on: ${{matrix.os}}-latest
needs: [build]
strategy:
matrix:
os: [ubuntu, windows, macos]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
with:
shared-key: rustler
save-if: false
- run: cargo clippy --all-targets --all-features -- -D warnings
test:
name: OTP ${{matrix.pair.erlang}} / Elixir ${{matrix.pair.elixir}} / Rust ${{matrix.rust}} / OS ${{matrix.os}}
needs: [build]
strategy:
matrix:
pair:
- { erlang: "27", elixir: "1.18.0-rc.0" }
- { erlang: "26", elixir: "1.18.0-rc.0" }
- { erlang: "27", elixir: "1.17", latest: true }
- { erlang: "26", elixir: "1.17" }
- { erlang: "26", elixir: "1.16" }
- { erlang: "26", elixir: "1.15" }
- { erlang: "25", elixir: "1.15" }
- { erlang: "24", elixir: "1.14" }
rust:
- stable
- nightly
os:
- macos
- windows
- ubuntu
runs-on: ${{matrix.os}}-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install Erlang/Elixir
uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.pair.erlang}}
elixir-version: ${{matrix.pair.elixir}}
if: "!startsWith(matrix.os, 'macos')"
- name: Install Erlang/Elixir with Brew
run: |
brew install elixir
mix local.hex --force
if: "startsWith(matrix.os, 'macos')"
- name: Install Rust ${{matrix.rust}} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust}}
- uses: Swatinem/rust-cache@v2
with:
shared-key: rustler
save-if: false
- run: cargo test
- name: Test rustler_mix
working-directory: rustler_mix
run: |
mix deps.get
mix test
- name: Test rustler_tests
working-directory: rustler_tests
run: |
mix deps.get
mix test
- name: Test mix project with example created from template
working-directory: rustler_mix
run: ./test.sh
if: "startsWith(matrix.os, 'ubuntu') && matrix.pair.latest"