Skip to content

[TESTS] minor tweak to configs for new test action (- WIP #13 -) #174

[TESTS] minor tweak to configs for new test action (- WIP #13 -)

[TESTS] minor tweak to configs for new test action (- WIP #13 -) #174

Workflow file for this run

name: CI
on:
push:
branches:
- master
- stable
tags:
- v*
pull_request:
types:
- opened
- edited
- reopened
- synchronize
- ready_for_review
# Declare default permissions as read only.
permissions: read-all
jobs:
BUILD:
if: github.repository == 'reactive-firewall/multicast'
runs-on: ubuntu-latest
defaults:
run:
shell: bash
env:
LANG: "en_US.UTF-8"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile purge 2>/dev/null || true ;
- name: Test Build
id: build
run: make -j1 -f Makefile build ;
- name: Post-Clean
id: post
run: make -j1 -f Makefile purge || true ;
BOOTSTRAP:
if: ${{ !cancelled() }}
needs: BUILD
runs-on: ubuntu-latest
defaults:
run:
shell: bash
timeout-minutes: 5
continue-on-error: ${{ matrix.experimental }}
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
lang-var: ["de.utf-8", "jp.utf-8"]
experimental: [true]
include:
- python-version: 3.7
lang-var: "en_US.utf-8"
experimental: false
- python-version: 3.8
lang-var: "en_US.utf-8"
experimental: false
- python-version: 3.9
lang-var: "de.utf-8"
experimental: false
- python-version: 3.9
lang-var: "jp.utf-8"
experimental: false
- python-version: 3.9
lang-var: "en_US.utf-8"
experimental: false
- python-version: "3.10"
lang-var: "en_US.utf-8"
experimental: false
- python-version: "3.11"
lang-var: "en_US.utf-8"
experimental: false
- python-version: "3.12"
lang-var: "en_US.utf-8"
experimental: false
env:
PYTHON_VERSION: ${{ matrix.python-version }}
LANG: ${{ matrix.lang-var }}
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Setup dependencies
run: |
python -m pip install --upgrade pip setuptools build wheel
pip install -r ./requirements.txt
- name: Pre-build
id: bootstrap
run: |
make -j1 -f Makefile clean || true ;
make -j1 -f Makefile build ;
shell: bash
- name: Summerize Building
id: sumerize-py-build
run: |
echo "- Building works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
if: ${{ success() }}
shell: bash
- name: Run Tests
id: test-install
run: make -j1 -f Makefile user-install ;
shell: bash
- name: Summerize Install
id: sumerize-user-install
run: |
echo "- User Installing works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
if: ${{ success() }}
shell: bash
- name: Test Info
id: test-info
run: python -m setup --name --version --license || true ;
- name: Post-Clean
id: post
run: |
make -j1 -f Makefile purge || true ;
make -j1 -f Makefile clean || true ;
if: ${{ always() }}
shell: bash
MATS:
if: ${{ !cancelled() }}
needs: BUILD
runs-on: ubuntu-latest
defaults:
run:
shell: bash
timeout-minutes: 10
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
env:
PYTHON_VERSION: ${{ matrix.python-version }}
LANG: "en_US.utf-8"
steps:
- uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for ${{ matrix.python-version }}
run: |
pip install -r ./requirements.txt ;
pip install coverage || true ;
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile clean || true ;
- name: Run Tests for python ${{ matrix.python-version }}
id: tests
run: make -j1 -f Makefile test ;
- name: Summerize MATs for python ${{ matrix.python-version }}
id: sumerize-mats
run: |
echo "- MATS works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
if: ${{ success() }}
shell: bash
- name: Post-Clean
id: post
run: make -j1 -f Makefile clean || true ;
if: ${{ always() }}
COVERAGE-MATS:
if: ${{ success() }}
needs: [BUILD, MATS]
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.11", "3.12"]
env:
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
LANG: "en_US.utf-8"
COVERAGE_RCFILE: ./.coveragerc
COV_CORE_SOURCE: ./
COV_CORE_CONFIG: ./.coveragerc
COV_CORE_DATAFILE: ./coverage.xml
CODECLIMATE_REPO_TOKEN: ${{ secrets.CODECLIMATE_TOKEN }}
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
steps:
- uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for python ${{ matrix.python-version }} on ${{ matrix.os }}
run: |
pip install --upgrade --upgrade-strategy eager pip setuptools wheel ;
pip install --upgrade --upgrade-strategy eager -r ./requirements.txt ;
pip install --upgrade --upgrade-strategy eager pytest ;
pip install --upgrade --upgrade-strategy eager pytest-cov ;
pip install --upgrade --upgrade-strategy eager coverage ;
- name: Install code-climate tools for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter || true ; fi ;
if [ $OS == ubuntu-latest ] ; then chmod +x ./cc-test-reporter 2>/dev/null || true ; fi
if [ $OS == ubuntu-latest ] ; then ./cc-test-reporter before-build || true ; fi
- name: Install deepsource tools for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then (curl https://deepsource.io/cli | sh) || true ; else echo "SKIP deepsource" ; fi ;
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile clean || true ;
- name: Generate Coverage for py3.9 on ${{ matrix.os }}
if: ${{ runner.python-version }} == "3.9"
run: make -f Makefile test ;
- name: Generate Coverage for py${{ matrix.python-version }} on ${{ matrix.os }}
if: ${{ runner.python-version }} != "3.9"
run: make -f Makefile test-pytest ;
- name: Upload Python ${{ matrix.python-version }} coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
directory: .
flags: multicast,${{ matrix.os }},${{ matrix.python-version }}
name: multicast-github-${{ matrix.os }}-${{ matrix.python-version }}
verbose: true
fail_ci_if_error: false
- name: Upload Python ${{ matrix.python-version }} Artifact
uses: actions/upload-artifact@v4
with:
name: Test-Report-${{ matrix.os }}-${{ matrix.python-version }}
path: ./test-reports/
if-no-files-found: ignore
- name: code-climate for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then ./cc-test-reporter after-build --exit-code 0 || true ; else echo "SKIP code climate" ; fi ;
- name: deepsource for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then ./bin/deepsource report --analyzer test-coverage --key python --value-file ./coverage.xml 2>/dev/null || true ; else echo "SKIP deepsource" ; fi ;
- name: Post-Clean
id: post
run: make -j1 -f Makefile clean || true ;
if: ${{ always() }}
COVERAGE:
if: ${{ success() }}
needs: [BUILD, MATS, COVERAGE-MATS]
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
matrix:
os: [ubuntu-latest, macos-13, windows-latest]
python-version: [3.7, 3.8, 3.9, "3.10"]
env:
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
LANG: "en_US.utf-8"
COVERAGE_RCFILE: ./.coveragerc
COV_CORE_SOURCE: ./
COV_CORE_CONFIG: ./.coveragerc
COV_CORE_DATAFILE: ./coverage.xml
CODECLIMATE_REPO_TOKEN: ${{ secrets.CODECLIMATE_TOKEN }}
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
steps:
- uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for python ${{ matrix.python-version }} on ${{ matrix.os }}
run: |
pip install --upgrade --upgrade-strategy eager pip setuptools wheel ;
pip install --upgrade --upgrade-strategy eager -r ./requirements.txt ;
pip install --upgrade --upgrade-strategy eager pytest ;
pip install --upgrade --upgrade-strategy eager pytest-cov ;
pip install --upgrade --upgrade-strategy eager coverage ;
- name: Install code-climate tools for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter || true ; fi ;
if [ $OS == ubuntu-latest ] ; then chmod +x ./cc-test-reporter 2>/dev/null || true ; fi
if [ $OS == ubuntu-latest ] ; then ./cc-test-reporter before-build || true ; fi
- name: Install deepsource tools for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then (curl https://deepsource.io/cli | sh) || true ; else echo "SKIP deepsource" ; fi ;
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile clean || true ;
- name: Generate Coverage for py3.9 on ${{ matrix.os }}
if: ${{ runner.python-version }} == "3.9"
run: make -f Makefile test ;
- name: Generate Coverage for py${{ matrix.python-version }} on ${{ matrix.os }}
if: ${{ runner.python-version }} != "3.9"
run: make -f Makefile test-pytest ;
- name: Upload Python ${{ matrix.python-version }} coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
directory: .
flags: ${{ matrix.os }},${{ matrix.python-version }}
name: multicast-github-${{ matrix.os }}-${{ matrix.python-version }}
verbose: true
fail_ci_if_error: false
- name: Upload Python ${{ matrix.python-version }} Artifact
uses: actions/upload-artifact@v4
with:
name: Test-Report-${{ matrix.os }}-${{ matrix.python-version }}
path: ./test-reports/
if-no-files-found: ignore
- name: code-climate for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then ./cc-test-reporter after-build --exit-code 0 || true ; else echo "SKIP code climate" ; fi ;
- name: deepsource for ${{ matrix.python-version }}
if: ${{ runner.os }} == "Linux"
shell: bash
run: |
if [ $OS == ubuntu-latest ] ; then ./bin/deepsource report --analyzer test-coverage --key python --value-file ./coverage.xml 2>/dev/null || true ; else echo "SKIP deepsource" ; fi ;
- name: Post-Clean
id: post
run: make -j1 -f Makefile clean || true ;
if: ${{ always() }}
STYLE:
if: ${{ success() }}
needs: [BUILD, MATS]
runs-on: ubuntu-latest
timeout-minutes: 10
env:
PYTHON_VERSION: '3.10'
LANG: "en_US.utf-8"
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies for python Linters
run: |
pip install --upgrade pip setuptools build wheel
pip install -r ./requirements.txt ;
pip install flake8 ;
pip install pyflakes ;
pip install pep8 ;
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile clean || true ;
- name: Testing Style
id: style
run: make -j1 -f Makefile test-style ;
shell: bash
- name: Post-Clean
id: post
run: make -j1 -f Makefile clean || true ;
if: ${{ always() }}
INTEGRATION:
if: ${{ success() }}
needs: [MATS, COVERAGE]
runs-on: ${{ matrix.os }}
timeout-minutes: 10
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.10", "3.11", "3.12"]
env:
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
LANG: "en_US.utf-8"
LC_CTYPE: "en_US.utf-8"
COVERAGE_RCFILE: ./.coveragerc
COV_CORE_SOURCE: ./
COV_CORE_CONFIG: ./.coveragerc
COV_CORE_DATAFILE: .coverage
CODECLIMATE_REPO_TOKEN: ${{ secrets.CODECLIMATE_TOKEN }}
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
steps:
- uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies for python ${{ matrix.python-version }} on ${{ matrix.os }}
run: |
pip install --upgrade pip setuptools wheel
pip install -r ./requirements.txt ;
pip install coverage ;
pip install pytest ;
pip install pytest-cov ;
- name: Install code-climate tools for ${{ matrix.python-version }}
if: ${{ runner.os }} != "Linux"
run: |
if [ $OS == macos-latest ] ; then curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-darwin-amd64 > ./cc-test-reporter || true ; fi ;
if [ $OS == macos-latest ] ; then chmod +x ./cc-test-reporter 2>/dev/null || true ; fi
if [ $OS == macos-latest ] ; then ./cc-test-reporter before-build || true ; fi
shell: bash
- name: Pre-Clean
id: clean-prep
run: make -j1 -f Makefile clean ;
- name: Pre-build for Python ${{ matrix.python-version }} on ${{ matrix.os }}
run: make -j1 -f Makefile build ;
if: ${{ success() }}
- name: Pre-install for Python ${{ matrix.python-version }} on ${{ matrix.os }}
run: make -j1 -f Makefile user-install || true ;
if: ${{ success() }}
- name: Re-Generate Coverage for py${{ matrix.python-version }} on ${{ matrix.os }}
run: |
make -j1 -f Makefile test-pytest ;
cp -vf ./coverage.xml ./test-reports/coverage.xml || true ;
shell: bash
- name: Generate Extra Coverage for py${{ matrix.python-version }} on ${{ matrix.os }}
run: |
hash -p ./.github/tool_shlock_helper.sh shlock ;
./tests/check_integration_coverage || echo "::warning file=tests/check_integration_coverage,line=1,endLine=1,title=SKIPPED::SKIP Integration Tests." ;
shell: bash
- name: Upload Python ${{ matrix.python-version }} integration coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./test-reports/coverage_supplement.xml
directory: .
flags: ${{ matrix.os }},${{ matrix.python-version }},unittests
name: multicast-github-${{ matrix.os }}-${{ matrix.python-version }}
verbose: true
fail_ci_if_error: false
- name: Upload Extra Python ${{ matrix.python-version }} Artifact
uses: actions/upload-artifact@v4
with:
name: Integration-Test-Report-${{ matrix.os }}-${{ matrix.python-version }}
path: ./test-reports/
if-no-files-found: ignore
- name: code-climate for ${{ matrix.python-version }}
if: ${{ runner.os }} != "Linux"
run: |
if [ $OS == macos-latest ] ; then ./cc-test-reporter after-build --exit-code 0 || true ; else echo "SKIP code climate" ; fi ;
- name: Upload Python ${{ matrix.python-version }} integration test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./test-reports/junit.xml
directory: .
flags: ${{ matrix.os }},${{ matrix.python-version }},unittests
name: multicast-github-${{ matrix.os }}-${{ matrix.python-version }}-test-results
verbose: true
fail_ci_if_error: false
- name: Post-purge
id: post-uninstall
run: make -j1 -f Makefile purge || true ;
if: ${{ !cancelled() }}
- name: Post-Clean
id: post-z-end
run: make -j1 -f Makefile clean || true ;
if: ${{ !cancelled() }}
TOX:
if: ${{ success() }}
needs: [MATS, COVERAGE-MATS, STYLE, COVERAGE, INTEGRATION]
runs-on: ubuntu-latest
timeout-minutes: 30
env:
PYTHON_VERSION: '3.12'
LANG: 'en_US.utf-8'
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install dependencies for Tox
run: |
pip install --upgrade pip setuptools build wheel tox
pip install -r ./requirements.txt ;
pip install coverage ;
pip install codecov ;
pip install flake8 ;
pip install pyflakes ;
pip install pep8 ;
pip install tox ;
pip install six ;
- name: Pre-Clean
id: clean
run: make -j1 -f Makefile clean || true ;
- name: Testing Tox
run: make -j1 -f Makefile test-tox || true ;
- name: Post-Clean
id: post
run: make -j1 -f Makefile clean || true ;
if: ${{ always() }}