Skip to content

Instantly share code, notes, and snippets.

@sidisinsane
Created June 4, 2024 09:03
Show Gist options
  • Select an option

  • Save sidisinsane/601b605a66def7be7a53dbcf4aeff682 to your computer and use it in GitHub Desktop.

Select an option

Save sidisinsane/601b605a66def7be7a53dbcf4aeff682 to your computer and use it in GitHub Desktop.
Github workflows for Python hatch projects.
---
name: ci
on: # yamllint disable-line rule:truthy
push:
branches: [main, master]
pull_request:
branches: [main, master]
concurrency:
group: ci-${{ github.head_ref }}
cancel-in-progress: true
env:
PYTHONUNBUFFERED: "1"
FORCE_COLOR: "1"
LOG_FILEPATH: ${{ github.workspace }}/logs/app.log
jobs:
run:
name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.12"]
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
token: ${{ github.token }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Hatch
run: pip install --upgrade hatch
- name: Format Python
run: hatch run fix
- name: Type check
run: hatch run types:check
- name: Secure Python
run: hatch run security:check
---
name: codeql
on: # yamllint disable-line rule:truthy
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [python]
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
token: ${{ github.token }}
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
queries: +security-and-quality
- name: Autobuild CodeQL database
uses: github/codeql-action/autobuild@v3
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: /language:${{ matrix.language }}
---
name: test
on: # yamllint disable-line rule:truthy
push:
branches: [main, master]
pull_request:
branches: [main, master]
concurrency:
group: test-${{ github.head_ref }}
cancel-in-progress: true
env:
PYTHONUNBUFFERED: "1"
FORCE_COLOR: "1"
LOG_FILEPATH: ${{ github.workspace }}/logs/app.log
jobs:
run:
name: Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.9", "3.10", "3.12"]
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
token: ${{ github.token }}
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Hatch
run: pip install --upgrade hatch
- name: Run static analysis
run: hatch run check
- name: Run tests
run: hatch run cov
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment