Merging upstream version 0.19.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
61e6dccee9
commit
2efee3d3ab
111 changed files with 2058 additions and 1676 deletions
142
.github/workflows/ci.yml
vendored
Normal file
142
.github/workflows/ci.yml
vendored
Normal file
|
@ -0,0 +1,142 @@
|
|||
name: Tests and Checks
|
||||
|
||||
# Only run CI on pushes to main and pull requests
|
||||
# We don't run CI on other branches, but those should be merged into main via a PR anyways which will trigger CI before the merge.
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
concurrency:
|
||||
group: ci-${{ github.ref }}-1
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
checks:
|
||||
runs-on: "ubuntu-latest"
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", pypy-3.9]
|
||||
os: ["macos-latest", "ubuntu-latest", "windows-latest"]
|
||||
steps:
|
||||
- uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }} # Checkout pull request HEAD commit instead of merge commit
|
||||
fetch-depth: 0 # checkout all history, needed for hatch versioning
|
||||
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install pypa/build
|
||||
run: python -m pip install build==0.10.0
|
||||
|
||||
- name: Install Hatch
|
||||
run: python -m pip install hatch==1.6.3
|
||||
|
||||
- name: Unit Tests
|
||||
run: hatch run test:unit-tests
|
||||
|
||||
- name: Code formatting (black)
|
||||
run: hatch run test:format
|
||||
|
||||
- name: Code linting (ruff)
|
||||
run: hatch run test:lint
|
||||
|
||||
- name: Install local gitlint for integration tests
|
||||
run: |
|
||||
hatch run qa:install-local
|
||||
|
||||
- name: Integration tests (default -> GITLINT_USE_SH_LIB=1)
|
||||
run: |
|
||||
hatch run qa:integration-tests
|
||||
if: matrix.os != 'windows-latest'
|
||||
|
||||
- name: Integration tests (GITLINT_USE_SH_LIB=1)
|
||||
run: |
|
||||
hatch run qa:integration-tests
|
||||
env:
|
||||
GITLINT_USE_SH_LIB: 1
|
||||
if: matrix.os != 'windows-latest'
|
||||
|
||||
- name: Integration tests (GITLINT_QA_USE_SH_LIB=0)
|
||||
run: |
|
||||
hatch run qa:integration-tests -k "not(test_commit_hook_continue or test_commit_hook_abort or test_commit_hook_edit)" qa
|
||||
env:
|
||||
GITLINT_QA_USE_SH_LIB: 0
|
||||
if: matrix.os != 'windows-latest'
|
||||
|
||||
- name: Integration tests (Windows)
|
||||
run: |
|
||||
hatch run qa:integration-tests -k "not (test_commit_hook_continue or test_commit_hook_abort or test_commit_hook_edit or test_lint_staged_stdin or test_stdin_file or test_stdin_pipe_empty)" qa
|
||||
if: matrix.os == 'windows-latest'
|
||||
|
||||
- name: Build test (gitlint)
|
||||
run: |
|
||||
python -m build
|
||||
hatch clean
|
||||
|
||||
- name: Build test (gitlint-core)
|
||||
run: |
|
||||
python -m build
|
||||
hatch clean
|
||||
working-directory: ./gitlint-core
|
||||
|
||||
- name: Docs build (mkdocs)
|
||||
run: hatch run docs:build
|
||||
|
||||
# Run gitlint. Skip during PR runs, since PR commit messages are transient and usually full of gitlint violations.
|
||||
# PRs get squashed and get a proper commit message during merge.
|
||||
- name: gitlint --debug
|
||||
run: hatch run dev:gitlint --debug
|
||||
continue-on-error: ${{ github.event_name == 'pull_request' }} # Don't enforce gitlint in PRs
|
||||
|
||||
- name: Code Coverage (coveralls)
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
path-to-lcov: ".coverage.lcov"
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
git-commit: ${{ github.event.pull_request.head.sha }}
|
||||
flag-name: gitlint-${{ matrix.os }}-${{ matrix.python-version }}
|
||||
parallel: true
|
||||
|
||||
upload_coveralls:
|
||||
needs: checks
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Upload coverage to coveralls
|
||||
uses: coverallsapp/github-action@master
|
||||
with:
|
||||
path-to-lcov: ".coverage.lcov"
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
parallel-finished: true
|
||||
|
||||
check: # This job does nothing and is only used for the branch protection
|
||||
if: always() # Ref: https://github.com/marketplace/actions/alls-green#why
|
||||
|
||||
needs:
|
||||
- upload_coveralls
|
||||
- checks
|
||||
|
||||
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) }}
|
||||
|
||||
# When on main, auto publish dev build
|
||||
auto-publish-dev:
|
||||
needs:
|
||||
- check
|
||||
if: github.ref == 'refs/heads/main'
|
||||
uses: ./.github/workflows/publish-release.yml
|
||||
secrets: inherit # pass all secrets (required to access secrets in a called workflow)
|
||||
with:
|
||||
pypi_target: "pypi.org"
|
||||
repo_release_ref: "main"
|
Loading…
Add table
Add a link
Reference in a new issue