diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml new file mode 100644 index 0000000..0a772b6 --- /dev/null +++ b/.forgejo/workflows/build.yaml @@ -0,0 +1,71 @@ +--- +on: [push] + +name: CI + +jobs: + formatting: + name: Formatting + runs-on: docker + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Rust + uses: https://github.com/dtolnay/rust-toolchain@stable + with: + components: rustfmt + - name: Check Rust formatting + run: cargo fmt --all -- --check + + clippy: + name: Clippy + runs-on: docker + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Rust + uses: https://github.com/dtolnay/rust-toolchain@stable + with: + components: clippy + - name: Run Clippy + run: cargo clippy -- -D warnings + + build: + name: Build + runs-on: docker + steps: + - name: Checkout + uses: actions/checkout@v4 + # TODO: Find some other method of managing this that doesn't require me to set stuff up myself + - name: Set up Python toolchain + uses: actions/setup-python@v5 + with: + cache: pip + - name: Set up Python environment + run: | + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py + python3 get-pip.py + python3 -m pip install virtualenv + python3 -m virtualenv venv + source venv/bin/activate + pip install -r requirements.txt + - name: Set up Rust + uses: https://github.com/dtolnay/rust-toolchain@stable + - name: Build Rust code + run: | + source venv/bin/activate + maturin develop + + # TODO: Moving tests to another job feels like better form + + # FIXME: The runner's Python version is 3.9, which breaks one some of the type syntax found in the tests + # - name: Run Python tests + # run: | + # source venv/bin/activate + # pytest tests/*.py + + # FIXME: Linking with `cc` fails on the runner because it can't find the python3.9 library + # - name: Run Rust tests + # run: | + # source venv/bin/activate + # cargo test