diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml index 0a772b6..7b3bd7b 100644 --- a/.forgejo/workflows/build.yaml +++ b/.forgejo/workflows/build.yaml @@ -6,7 +6,7 @@ name: CI jobs: formatting: name: Formatting - runs-on: docker + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -19,7 +19,7 @@ jobs: clippy: name: Clippy - runs-on: docker + runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -32,40 +32,63 @@ jobs: build: name: Build - runs-on: docker + runs-on: ubuntu-22.04 steps: - - name: Checkout + - name: Checkout the code 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: Set up the Python toolchain + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Set up the Python environment + # For most Python CI stuff this isn't needed, but maturin specifically doesn't like to function without a venv + run: | + python3 -m venv venv + source venv/bin/activate + pip install -r requirements.txt - name: Build Rust code run: | source venv/bin/activate - maturin develop + maturin build + - name: Save built wheel + uses: forgejo/upload-artifact@v4 + with: + name: wheels + path: target/wheels/*.whl # Should only match the one target built + compression-level: 0 - # TODO: Moving tests to another job feels like better form + python-test: + name: Python tests + runs-on: ubuntu-22.04 + steps: + - name: Checkout the code + uses: actions/checkout@v4 + - name: Set up the Python toolchain + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Set up the Python environment + run: pip install -r requirements.txt + - name: Retrieve built wheel + uses: forgejo/download-artifact@v4 + - name: Install built wheel + run: pip install wheels/*.whl # Should only match the one target built + - name: Run Python tests + run: pytest tests/*.py - # 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 + rust-test: + name: Rust tests + runs-on: ubuntu-22.04 + steps: + - name: Checkout the code + uses: actions/checkout@v4 + - name: Set up Rust + uses: https://github.com/dtolnay/rust-toolchain@stable + - name: Set up the Python toolchain + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Run Rust tests + run: cargo test