From f2b70e01f157e8f678f2492eba7dc28289fade1d Mon Sep 17 00:00:00 2001 From: Mike Shultz Date: Tue, 23 Jan 2024 11:52:52 -0700 Subject: [PATCH] feat(devops): adds GH workflows --- .github/workflows/test.yaml | 81 +++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .github/workflows/test.yaml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..d371f41 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,81 @@ +on: ["push", "pull_request"] + +name: Test + +concurrency: + # Cancel older, in-progress jobs from the same PR, same workflow. + # use run_id if the job is triggered by a push to ensure + # push-triggered jobs to not get canceled. + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + linting: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install .[lint] + + - name: Run Black + run: black --check . + + - name: Run isort + run: isort --check-only . + + - name: Run flake8 + run: flake8 . + + type-check: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + + - name: Run MyPy + run: mypy . + + test: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, macos-latest] # eventually add `windows-latest` + python-version: [3.8, 3.9, "3.10", "3.11"] + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install Dependencies + run: | + python -m pip install --upgrade pip + pip install .[dev] + + - name: Run Tests + run: pytest