diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bafab49 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,74 @@ +name: Continuous Integration + +on: + push: + branches: + - "*" + - "!master" + pull_request: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + format: + name: Format + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Setup Ruff + run: | + python -m pip install --upgrade pip + pip install ruff + - name: Check Formatting + run: ruff format --check . + - name: Check Import Ordering + run: ruff check --select I . + + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Setup Ruff + run: | + python -m pip install --upgrade pip + pip install ruff + - name: Lint + run: ruff check . + + test: + name: Test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Setup Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: 1.81.0 + - name: Setup Rye + uses: eifinger/setup-rye@v4 + - name: Setup Environment Variables + run: cp .env.example .env + - name: Install Dependencies + run: rye --env-file .env sync --features torch,vision + - name: Test + run: rye run pytest