diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml new file mode 100644 index 0000000..29de247 --- /dev/null +++ b/.github/workflows/CI.yaml @@ -0,0 +1,17 @@ +name: CI + +on: + push: + branches: [ "master", "dev" ] + # Publish semver tags as releases. + tags: [ 'v*.*.*' ] + pull_request: + branches: ["master", "dev"] + release: + types: [created] + +jobs: + quality: + uses: ./.github/workflows/quality.yaml + permissions: + contents: read diff --git a/.github/workflows/quality.yaml b/.github/workflows/quality.yaml new file mode 100644 index 0000000..482a8ae --- /dev/null +++ b/.github/workflows/quality.yaml @@ -0,0 +1,79 @@ +name: Quality Checks + +on: + workflow_call: + +jobs: + check-license-header: + name: License Header Check + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Setup Copywrite + uses: hashicorp/setup-copywrite@5e3e8a26d7b9f8a508848ad0a069dfd2f7aa5339 + - name: Check Header Compliance + run: copywrite headers --plan --config .copywrite.hcl + + tests: + name: Tests + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: true + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version: 3.12 + + - name: "Install uv" + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + + - name: Install dependencies + run: uv sync --no-managed-python --no-python-downloads + + - name: Run tests + run: uv run pytest ./tests + + quality: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + check: [format, lint, basedpyright] + include: + - check: format + name: "Format Check" + command: "uv run ruff format --check ." + - check: lint + name: "Lint Check" + command: "uv run ruff check ." + - check: basedpyright + name: "Type Check" + command: "uv run basedpyright ." + + name: ${{ matrix.name }} + + steps: + - uses: actions/checkout@v4 + + - name: "Install uv" + uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + + - name: "Set up Python" + uses: actions/setup-python@v5 + with: + python-version-file: "pyproject.toml" + + - name: Install dependencies + run: uv sync + + - name: ${{ matrix.name }} + run: ${{ matrix.command }} \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index e69de29..0000000