Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: use reusable workflow #76

Merged
merged 17 commits into from
Nov 6, 2023
100 changes: 20 additions & 80 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,106 +2,46 @@ name: CI

on:
push:
branches:
- main
tags:
- "v*"
branches: [main]
tags: [v*]
pull_request:
workflow_dispatch:
schedule:
- cron: "0 0 * * 0" # every week (for --pre release tests)
- cron: "0 0 * * *" # run daily

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
check-manifest:
name: Check Manifest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.x"
- run: pip install check-manifest && check-manifest
- run: pipx run check-manifest

test:
name: ${{ matrix.platform }} (${{ matrix.python-version }})
runs-on: ${{ matrix.platform }}
uses: pyapp-kit/workflows/.github/workflows/test-pyrepo.yml@v1
with:
os: ${{ matrix.os }}
python-version: ${{ matrix.python-version }}
pip-install-pre-release: ${{ github.event_name == 'schedule' }}
report-failures: ${{ github.event_name == 'schedule' }}
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
platform: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.8", "3.10", "3.11", "3.12"]
include:
- python-version: "3.12"
- python-version: "3.9"
platform: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -e .[test] ${{ github.event_name == 'schedule' && '--pre' || '' }}

- name: Test
run: pytest -v --cov=in_n_out --cov-report=xml --color=yes

# If something goes wrong, we can open an issue in the repo
- name: Report --pre Failures
if: failure() && github.event_name == 'schedule'
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PLATFORM: ${{ matrix.platform }}
PYTHON: ${{ matrix.python-version }}
RUN_ID: ${{ github.run_id }}
TITLE: "[test-bot] pip install --pre is failing"
with:
filename: .github/TEST_FAIL_TEMPLATE.md
update_existing: true

- name: Coverage
uses: codecov/codecov-action@v3

test_app_model:
name: app-model
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
path: in-n-out

- uses: actions/checkout@v4
with:
repository: pyapp-kit/app-model
path: app-model

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"

- uses: tlambert03/setup-qt-libs@v1

- name: Install dependencies
run: |
python -m pip install -U pip
python -m pip install -e in-n-out[test]
python -m pip install -e app-model[qt,test,test-qt]
python -m pip install PyQt5

- name: Test
uses: GabrielBB/xvfb-action@v1
with:
run: python -m pytest app-model --color=yes
test-app-model:
uses: pyapp-kit/workflows/.github/workflows/test-dependents.yml@v1
with:
dependency-repo: pyapp-kit/app-model
dependency-extras: "qt,test,test-qt"
qt: "PyQt5"

benchmarks:
runs-on: ubuntu-latest
Expand All @@ -121,7 +61,7 @@ jobs:

deploy:
name: Deploy
needs: test
needs: [test, check-manifest]
if: success() && startsWith(github.ref, 'refs/tags/') && github.event_name != 'schedule'
runs-on: ubuntu-latest
permissions:
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ testpaths = ["tests"]
filterwarnings = ["error"]

[tool.coverage.run]
source = ['src/in_n_out']
source = ['in_n_out']
command_line = "-m pytest"

# https://coverage.readthedocs.io/en/6.4/config.html
Expand All @@ -121,6 +121,7 @@ exclude_lines = [
]
show_missing = true


# https://mypy.readthedocs.io/en/stable/config_file.html
[tool.mypy]
files = "src/**/*.py"
Expand Down
Loading