Skip to content

Commit

Permalink
improve check action
Browse files Browse the repository at this point in the history
  • Loading branch information
getzze committed Sep 21, 2024
1 parent 5f7a3e8 commit d269a94
Show file tree
Hide file tree
Showing 8 changed files with 253 additions and 176 deletions.
210 changes: 210 additions & 0 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: CI

on:
push:
branches: [main]
pull_request: {}

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

env:
FORCE_COLOR: "1"
PIP_DISABLE_PIP_VERSION_CHECK: "1"
PIP_NO_PYTHON_VERSION_WARNING: "1"

jobs:
check-manifest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: pipx run check-manifest

pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- uses: pre-commit/action@v3.0.1

typing:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- name: Install tox-uv
run: python -Im pip install tox-uv
- name: type-check
run: python -Im tox run -e mypy

docs:
name: Build docs and run doctests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
# Keep in sync with tox/docs and .readthedocs.yaml.
python-version: "3.12"
cache: pip

- name: Install tox-uv
run: python -Im pip install tox-uv
- name: Build docs
run: python -Im tox run -e docs,changelog

- uses: actions/upload-artifact@v4
with:
name: docs
path: docs/_build/

install-dev:
name: Verify install env
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
cache: pip

- name: Install in dev mode & import
run: |
python -Im pip install -e .[dev]
python -Ic 'import subliminal; print(subliminal.__version__)'
build-package:
name: Build & verify package
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: hynek/build-and-inspect-python-package@v2
id: baipp

outputs:
# Used to define the matrix for tests below. The value is based on
# packaging metadata (trove classifiers).
supported-python-versions: ${{ steps.baipp.outputs.supported_python_classifiers_json_array }}

test:
name: Test
runs-on: ${{ matrix.os }}
needs: build-package
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
# Created by the build-and-inspect-python-package action above.
python-version: ${{ fromJson(needs.build-package.outputs.supported-python-versions) }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
allow-prereleases: true
- name: Install tox-uv
run: python -Im pip install tox-uv

- name: Run tests
env:
# Make sure to add `passenv=COVERAGE_FILE` to `[testenv]` in tox.ini
COVERAGE_FILE: ".coverage.${{ matrix.os }}.${{ matrix.python-version }}"
run: >-
uvx --with=tox-uv
tox run
-e py${{ matrix.python-version }}-coverage
- name: Store coverage file
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.os }}-${{ matrix.python-version }}
path: .coverage*
include-hidden-files: true
if-no-files-found: error

coverage:
name: Coverage
runs-on: ubuntu-latest
needs: test
permissions:
pull-requests: write
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: .python-version-default
- uses: hynek/setup-cached-uv@v2

- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true

- name: Combine coverage
run: |
uv tool install 'coverage[toml]>7'
coverage combine
coverage html --skip-covered --skip-empty
# Report and write to summary.
coverage report --skip-covered --skip-empty --show-missing --format=markdown >> $GITHUB_STEP_SUMMARY
## Report again and fail if under 100%.
#coverage report --fail-under=100
- name: Upload HTML report if check failed.
uses: actions/upload-artifact@v4
with:
name: html-report
path: htmlcov
#if: ${{ failure() }}

- name: Coverage comment
id: coverage_comment
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Store Pull Request comment to be posted
uses: actions/upload-artifact@v4
if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
with:
name: python-coverage-comment-action
path: python-coverage-comment-action.txt


# Ensure everything required is passing for branch protection.
required-checks-pass:
if: always()

needs:
- coverage
- docs
- install-dev
- typing
- pre-commit
- check-manifest

runs-on: ubuntu-latest

steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
130 changes: 0 additions & 130 deletions .github/workflows/check.yaml

This file was deleted.

35 changes: 0 additions & 35 deletions .github/workflows/coverage.yaml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ concurrency:
jobs:
test-api:
name: Test APIs
if: github.event_name == 'schedule'
if: github.repository == 'Diaoul/subliminal' && github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand Down
Loading

0 comments on commit d269a94

Please sign in to comment.