Skip to content

Main Deployment Workflow #112

Main Deployment Workflow

Main Deployment Workflow #112

Workflow file for this run

name: Main Deployment Workflow
on:
pull_request:
branches:
- master
push:
branches:
- master
schedule:
- cron: "0 0 * * *"
jobs:
lint:
name: Lint Extension
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
python_version:
- "3.12"
os:
- ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Clone repository
- name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade .[dev]
pip install pylint
- name: Lint with Pylint
run: pylint PyFunceble
test:
needs: [lint]
name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Test Extension"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
python_version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v4
name: Clone repository
- name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade .[test]
pip install tox coveralls
- name: Test as defined by tox.ini
run: |
tox -c tox.ini
example-test:
needs: [lint]
name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Integration Test"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
python_version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
os:
- ubuntu-latest
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v4
name: Clone repository
- name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade .
- name: Run example
run: |
python examples/data_filter.py
deploy_to_pypi:
needs: [test, example-test]
name: "Deploy 📦 to the PyPi"
environment: release
permissions:
id-token: write
attestations: write
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
python_version:
- "3.12"
os:
- ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Clone repository
- name: Set up Python ${{ matrix.python_version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install twine wheel setuptools
- name: Build 📦
run: |
python setup.py sdist bdist_wheel
- name: Check 📦
run: |
twine check dist/*
- name: Attest 📦
uses: actions/attest-build-provenance@v1
with:
subject-path: "dist/*"
- name: Publish 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true