Skip to content

Improve regexes in docs #205

Improve regexes in docs

Improve regexes in docs #205

Workflow file for this run

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:
tests:
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/[email protected]
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/[email protected]
with:
python-version: ${{ matrix.python-version }}
- name: Install Hatch
run: python -m pip install hatch==1.7.0
- 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: Static type checking (mypy)
run: hatch run test:type-check
- name: Install local gitlint for integration tests
run: hatch run qa:install-local
- name: Integration tests
run: hatch run qa:integration-tests
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'
# 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
build-test:
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/[email protected]
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: Install pypa/build
run: python -m pip install build==0.10.0
- name: Build test (gitlint)
run: python -m build
- name: Upload sdist tarball (gitlint)
uses: actions/upload-artifact@v3
with:
name: sdist-gitlint-${{ matrix.python-version }}
path: dist/*.tar.gz
if: matrix.os == 'ubuntu-latest'
- name: Build test (gitlint-core)
run: python -m build
working-directory: ./gitlint-core
- name: Upload sdist tarball (gitlint-core)
uses: actions/upload-artifact@v3
with:
name: sdist-gitlint-core-${{ matrix.python-version }}
path: ./gitlint-core/dist/*.tar.gz
if: matrix.os == 'ubuntu-latest'
sdist-build-smoke-test:
# Ensure we can re-build gitlint from its sdist tarball (and that gitlint works after that)
# This is important for downstream packages (e.g. debian, homebrew, etc)
needs: build-test
runs-on: "ubuntu-latest"
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", pypy-3.9]
steps:
- name: Setup python ${{ matrix.python-version }}
uses: actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
- name: Download sdist artifact (gitlint)
uses: actions/download-artifact@v3
with:
name: sdist-gitlint-${{ matrix.python-version }}
path: gitlint
- name: Download sdist artifact (gitlint-core)
uses: actions/download-artifact@v3
with:
name: sdist-gitlint-core-${{ matrix.python-version }}
path: gitlint-core
- name: Extract sdist tarball (gitlint)
run: tar xzvf *.tar.gz --strip-components=1
working-directory: ./gitlint
- name: Extract sdist tarball (gitlint-core)
run: tar xzvf *.tar.gz --strip-components=1
working-directory: ./gitlint-core
- name: Install pypa/build
run: python -m pip install build==0.10.0
- name: Build test (gitlint)
run: python -m build
working-directory: ./gitlint
- name: Build test (gitlint-core)
run: python -m build
working-directory: ./gitlint-core
- name: Install from wheel (gitlint and gitlint-core)
run: python -m pip install gitlint-core/dist/*.whl gitlint/dist/*.whl
# Make sure gitlint works
- name: gitlint --version
run: gitlint --version
doc-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
ref: ${{ github.event.pull_request.head.sha }} # Checkout pull request HEAD commit instead of merge commit
- name: Setup python
uses: actions/[email protected]
with:
python-version: 3.11
- name: Install Hatch
run: python -m pip install hatch==1.7.0
- name: Docs validation (mkdocs build & linkchecker)
run: hatch run docs:validate
upload-coveralls:
needs: tests
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:
- tests
- build-test
- sdist-build-smoke-test
- doc-checks
- upload-coveralls
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:
environment: "production"
repo_release_ref: "main"
docker_image_tag: "latest_dev"
# When on main, auto publish docs
auto-publish-docs:
needs:
- check
if: github.ref == 'refs/heads/main'
uses: ./.github/workflows/publish-docs.yml
secrets: inherit # pass all secrets (required to access secrets in a called workflow)
with:
docs_version: "dev"
# After merging a PR, leave a comment on the PR with a link to the new dev build
notify:
needs:
- auto-publish-dev
if: github.ref == 'refs/heads/main'
runs-on: "ubuntu-latest"
steps:
# Checkout code in order to determine PR number
- uses: actions/[email protected]
with:
fetch-depth: 0
- name: Get PR number
run: |
commit_sha=$(git rev-parse HEAD)
pr_number=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
"https://api.github.com/repos/jorisroovers/gitlint/commits/$commit_sha/pulls" | jq -r '.[0].number')
echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/github-script@v6
with:
script: |
const body = `Build \
[${{ needs.auto-publish-dev.outputs.gitlint_version }}](https://pypi.org/project/gitlint/${{ needs.auto-publish-dev.outputs.gitlint_version }}) \
is now available on PyPI!
Install using:
\`\`\`sh
pip install gitlint==${{ needs.auto-publish-dev.outputs.gitlint_version }}
\`\`\`
`;
github.rest.issues.createComment({
issue_number: process.env.PR_NUMBER,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});
# Don't run this step if there is no PR number, i.e. on a direct push to main
if: ${{ env.PR_NUMBER != '' }}