Branches Development Workflow #1870
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Branches Development Workflow | |
| on: | |
| pull_request: | |
| branches: | |
| - "**" | |
| - "!dev" | |
| - "!master" | |
| push: | |
| branches: | |
| - "**" | |
| - "!dev" | |
| - "!master" | |
| schedule: | |
| - cron: "0 0 * * *" | |
| permissions: | |
| contents: read | |
| checks: write | |
| pull-requests: write | |
| jobs: | |
| lint: | |
| name: Lint PyFunceble | |
| runs-on: "${{ matrix.os }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.12" | |
| os: | |
| - ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[test,dev] | |
| - name: Lint PyFunceble with Pylint | |
| run: pylint PyFunceble | |
| - name: Lint tests with Pylint | |
| run: pylint tests | |
| sec_check: | |
| name: Check the safety of PyFunceble | |
| runs-on: "${{ matrix.os }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.12" | |
| os: | |
| - ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[test,dev] | |
| - name: Check the safety of the codebase with Bandit | |
| run: bandit --ini=setup.cfg -r PyFunceble | |
| test: | |
| needs: [lint,sec_check] | |
| name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Test PyFunceble" | |
| runs-on: "${{ matrix.os }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| - "3.13" | |
| os: | |
| - ubuntu-latest | |
| - macos-latest | |
| - windows-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[test] | |
| pip install coveralls | |
| - name: Test PyFunceble as defined by tox.ini | |
| run: | | |
| tox -c tox.ini | |
| - name: Upload Coverage | |
| continue-on-error: true | |
| run: | | |
| coveralls | |
| env: | |
| COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} | |
| COVERALLS_PARALLEL: true | |
| coveralls: | |
| needs: test | |
| name: Finish Coveralls | |
| runs-on: "${{ matrix.os }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.12" | |
| os: | |
| - ubuntu-latest | |
| steps: | |
| - name: Sending finish flag to coveralls.io | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| parallel-finished: true | |
| run_cli: | |
| needs: test | |
| name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Run PyFunceble" | |
| runs-on: "${{ matrix.os }}" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| - "3.13" | |
| os: | |
| - ubuntu-latest | |
| - windows-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[test] | |
| - name: Run PyFunceble as defined by tox_run.ini | |
| run: tox -c tox_run.ini | |
| run_cli_mariadb: | |
| needs: test | |
| name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Run PyFunceble (with mariadb)" | |
| runs-on: "${{ matrix.os }}" | |
| services: | |
| mariadb: | |
| image: ghcr.io/pyfunceble/mariadb/mariadb:latest | |
| ports: | |
| - 3306:3306 | |
| env: | |
| MYSQL_USER: pyfunceble | |
| MYSQL_PASSWORD: my_pyfunceble_password | |
| MYSQL_DATABASE: pyfunceble | |
| MYSQL_ROOT_PASSWORD: my_awesome_root_password | |
| options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3 | |
| env: | |
| PYFUNCEBLE_DB_CHARSET: utf8mb4 | |
| PYFUNCEBLE_DB_HOST: "127.0.0.1" | |
| PYFUNCEBLE_DB_NAME: pyfunceble | |
| PYFUNCEBLE_DB_PASSWORD: my_pyfunceble_password | |
| PYFUNCEBLE_DB_PORT: "3306" | |
| PYFUNCEBLE_DB_USERNAME: pyfunceble | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| - "3.13" | |
| os: | |
| - ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[test] | |
| - name: Run PyFunceble as defined by tox_run_mariadb.ini | |
| run: tox -c tox_run_mariadb.ini | |
| run_cli_postgresql: | |
| needs: test | |
| name: "[${{ matrix.os }}-py${{ matrix.python_version }}] Run PyFunceble (with postgresql)" | |
| runs-on: "${{ matrix.os }}" | |
| services: | |
| mariadb: | |
| image: postgres:latest | |
| ports: | |
| - 5432:5432 | |
| env: | |
| POSTGRES_USER: pyfunceble | |
| POSTGRES_PASSWORD: my_pyfunceble_password | |
| POSTGRES_DB: pyfunceble | |
| MYSQL_ROOT_PASSWORD: my_awesome_root_password | |
| options: --health-cmd="pg_isready --host=localhost --username=pyfunceble --port=5432" --health-interval=5s --health-timeout=2s --health-retries=3 | |
| env: | |
| PYFUNCEBLE_DB_CHARSET: utf8 | |
| PYFUNCEBLE_DB_HOST: "127.0.0.1" | |
| PYFUNCEBLE_DB_NAME: pyfunceble | |
| PYFUNCEBLE_DB_PASSWORD: my_pyfunceble_password | |
| PYFUNCEBLE_DB_PORT: "5432" | |
| PYFUNCEBLE_DB_USERNAME: pyfunceble | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python_version: | |
| - "3.10" | |
| - "3.11" | |
| - "3.12" | |
| - "3.13" | |
| os: | |
| - ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| name: Clone repository | |
| - name: Set up Python ${{ matrix.python_version }} | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python_version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install .[psql-binary,test] | |
| - name: Run PyFunceble as defined by tox_run_postgresql.ini | |
| run: tox -c tox_run_postgresql.ini |