Skip to content

Commit 9e1000a

Browse files
[MERGE] Version Bump to v2.0.3
6 parents 74e526a + eedf835 + fdaffda + 2074c0d + 1c6294f + ad75b9b commit 9e1000a

34 files changed

+1375
-357
lines changed

.github/workflows/CI-BUILD.yml

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
---
2+
name: CI-BUILD
3+
# Continuous Integration workflow for building, the project
4+
#
5+
# Jobs included:
6+
# - BUILD: Ensures the project compiles correctly
7+
# - BOOTSTRAP: Tests installation across Python versions and locales
8+
#
9+
# Required Secrets:
10+
# NONE
11+
12+
on: # yamllint disable-line rule:truthy
13+
push:
14+
branches: ["**"] # matches any branch
15+
tags: ["v*"]
16+
17+
# Declare default permissions as none.
18+
permissions: {}
19+
20+
env:
21+
ENVIRONMENT: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/stable' || startsWith(github.ref, 'refs/tags/v')) && 'Deployment' || (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/feature') || startsWith(github.ref, 'refs/heads/patch-') || startsWith(github.ref, 'refs/tags/v')) && 'Testing' || 'Experimenting' }}
22+
23+
jobs:
24+
BUILD:
25+
permissions:
26+
actions: read
27+
contents: read
28+
statuses: write
29+
packages: none
30+
pull-requests: read
31+
security-events: none
32+
if: ${{ !cancelled() && (github.repository == 'reactive-firewall/multicast') }}
33+
runs-on: ubuntu-latest
34+
environment: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/stable' || startsWith(github.ref, 'refs/tags/v')) && 'Deployment' || (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/feature') || startsWith(github.ref, 'refs/heads/patch-') || startsWith(github.ref, 'refs/tags/v')) && 'Testing' || 'Experimenting' }}
35+
defaults:
36+
run:
37+
shell: bash
38+
env:
39+
LANG: "en_US.UTF-8"
40+
outputs:
41+
build_status: ${{ steps.build.outcome }}
42+
steps:
43+
- name: Checkout repository
44+
uses: actions/checkout@v4
45+
with:
46+
persist-credentials: false
47+
- uses: actions/setup-python@v5
48+
with:
49+
python-version: "3.12"
50+
- name: Pre-Clean
51+
id: clean
52+
run: make -j1 -f Makefile purge 2>/dev/null || true
53+
- name: Test Build
54+
id: build
55+
run: make -j1 -f Makefile build
56+
- name: Post-Clean
57+
id: post
58+
run: make -j1 -f Makefile purge || true
59+
60+
BOOTSTRAP:
61+
permissions:
62+
actions: read
63+
contents: read
64+
statuses: write
65+
packages: none
66+
pull-requests: read
67+
security-events: none
68+
if: ${{ !cancelled() }}
69+
needs: BUILD
70+
runs-on: ubuntu-latest
71+
environment: ${{ needs.BUILD.environment }}
72+
defaults:
73+
run:
74+
shell: bash
75+
timeout-minutes: 5
76+
continue-on-error: ${{ matrix.experimental }}
77+
strategy:
78+
fail-fast: false
79+
matrix:
80+
python-version: ["3.10", "3.11", "3.12"]
81+
lang-var: ["de.utf-8", "jp.utf-8"]
82+
experimental: [true]
83+
include:
84+
- python-version: "3.10"
85+
lang-var: "de.utf-8"
86+
experimental: false
87+
- python-version: "3.10"
88+
lang-var: "jp.utf-8"
89+
experimental: false
90+
- python-version: "3.10"
91+
lang-var: "en_US.utf-8"
92+
experimental: false
93+
- python-version: "3.11"
94+
lang-var: "en_US.utf-8"
95+
experimental: false
96+
- python-version: "3.11"
97+
lang-var: "en_US.utf-8"
98+
experimental: false
99+
- python-version: "3.12"
100+
lang-var: "en_US.utf-8"
101+
experimental: false
102+
outputs:
103+
bootstrap_status: ${{ steps.bootstrap.outcome }}
104+
env:
105+
PYTHON_VERSION: ${{ matrix.python-version }}
106+
LANG: ${{ matrix.lang-var }}
107+
steps:
108+
- name: Checkout repository
109+
uses: actions/checkout@v4
110+
with:
111+
persist-credentials: false
112+
- name: Set up Python
113+
uses: actions/setup-python@v5
114+
with:
115+
python-version: ${{ matrix.python-version }}
116+
- name: Set up dependencies
117+
run: |
118+
pip install --upgrade "pip>=24.3.1" "setuptools>=75.0" "wheel>=0.44" "build>=1.2.1";
119+
pip install -r ./requirements.txt ;
120+
- name: Pre-build
121+
id: bootstrap
122+
run: |
123+
make -j1 -f Makefile clean || true ;
124+
make -j1 -f Makefile build ;
125+
shell: bash
126+
- name: Summerize Building
127+
id: sumerize-py-build
128+
run: |
129+
echo "- Building works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
130+
if: ${{ success() }}
131+
shell: bash
132+
- name: Run Tests
133+
id: test-user-install
134+
run: make -j1 -f Makefile user-install ;
135+
shell: bash
136+
- name: Summerize Install
137+
id: sumerize-user-install
138+
run: |
139+
echo "- User Installing works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
140+
if: ${{ success() }}
141+
shell: bash
142+
- name: Test Info
143+
id: test-info
144+
run: python -m setup --name --version --license || true ;
145+
- name: Post-Clean
146+
id: post-bootstrap
147+
run: |
148+
make -j1 -f Makefile purge || true ;
149+
make -j1 -f Makefile clean || true ;
150+
if: ${{ always() }}
151+
shell: bash
152+
153+
BUILD_STATUS:
154+
permissions:
155+
actions: read
156+
pull-requests: read
157+
needs: [BUILD, BOOTSTRAP]
158+
runs-on: ubuntu-latest
159+
if: ${{ !cancelled() }}
160+
outputs:
161+
didBUILD: ${{ steps.check_status.outputs.build_success }}
162+
steps:
163+
- id: check_status
164+
run: |
165+
if [[ "${{ needs.BUILD.result }}" == "success" && "${{ needs.BOOTSTRAP.result }}" == "success" ]]; then
166+
echo "build_success=true" >> $GITHUB_OUTPUT
167+
else
168+
echo "build_success=false" >> $GITHUB_OUTPUT
169+
fi

.github/workflows/CI-DOCS.yml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
---
2+
name: CI-DOCS
3+
# Continuous Integration workflow for Testing Documentation Building.
4+
#
5+
# Jobs included:
6+
# - DOCS: Builds and lints documentation
7+
#
8+
# Required Secrets:
9+
# - DOCS_BUILD_REF: Automatic
10+
11+
permissions: {}
12+
13+
on: # yamllint disable-line rule:truthy
14+
push:
15+
branches: ["main", "master", "stable"]
16+
tags: ["v*"]
17+
pull_request:
18+
types: [opened, reopened, ready_for_review]
19+
branches: ["feature-*", "patch-*", "HOTFIX-*"]
20+
pull_request_target:
21+
types: [opened, edited, reopened, ready_for_review]
22+
branches: ["main", "master", "stable"]
23+
24+
jobs:
25+
DOCS:
26+
permissions:
27+
actions: read
28+
contents: read
29+
statuses: write
30+
packages: none
31+
pull-requests: read
32+
security-events: none
33+
environment: Deployment
34+
runs-on: ${{ matrix.os }}
35+
strategy:
36+
matrix:
37+
os: [ubuntu-latest, macos-latest, windows-latest]
38+
python-version: ["3.10", "3.11", "3.12"]
39+
env:
40+
OS: ${{ matrix.os }}
41+
PYTHON_VERSION: ${{ matrix.python-version }}
42+
LANG: "en_US.utf-8"
43+
LC_CTYPE: "en_US.utf-8"
44+
DOCS_BUILD_REF: ${{ github.sha }}
45+
steps:
46+
- uses: actions/checkout@v4
47+
- name: Set up Python ${{ matrix.python-version }}
48+
uses: actions/setup-python@v5
49+
with:
50+
python-version: ${{ matrix.python-version }}
51+
- name: Fix braindead windows ${{ matrix.python-version }} on ${{ matrix.os }}
52+
if: ${{ !cancelled() && runner.os == 'Windows' }}
53+
run: python -m pip install --upgrade pip
54+
- name: Install dependencies for python ${{ matrix.python-version }} on ${{ matrix.os }}
55+
run: |
56+
pip install --upgrade "pip>=24.3.1" "setuptools>=75.0" "wheel>=0.44" "build>=1.2.1";
57+
pip install -r ./requirements.txt ;
58+
pip install -r ./tests/requirements.txt || true ;
59+
- name: Pre-Clean
60+
id: clean-prep
61+
run: make -j1 -f Makefile clean ;
62+
- name: Pre-build for Python ${{ matrix.python-version }} on ${{ matrix.os }}
63+
run: make -j1 -f Makefile build ;
64+
if: ${{ success() }}
65+
- name: Generate documentation with py${{ matrix.python-version }} on ${{ matrix.os }}
66+
run: make -j1 -f Makefile build-docs 2>&1 >> $GITHUB_STEP_SUMMARY ;
67+
if: ${{ !cancelled() }}
68+
- name: Lint documentation
69+
run: |
70+
pip install --upgrade sphinx-lint
71+
sphinx-lint docs/ 2>&1 >> $GITHUB_STEP_SUMMARY || true ;
72+
if: ${{ !cancelled() }}
73+
- name: Upload Docs Artifact with Python ${{ matrix.python-version }} on ${{ matrix.os }}
74+
uses: actions/upload-artifact@v4
75+
with:
76+
name: Multicast-Documentation-${{ github.sha }}-${{ matrix.os }}-${{ matrix.python-version }}
77+
path: ./docs/www/
78+
if-no-files-found: ignore
79+
- name: Post-purge
80+
id: post-uninstall
81+
run: make -j1 -f Makefile purge || true ;
82+
if: ${{ !cancelled() }}
83+
- name: Post-Clean
84+
id: post-end
85+
run: make -j1 -f Makefile clean || true ;
86+
if: ${{ !cancelled() }}

.github/workflows/CI-MATs.yml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
---
2+
name: CI-MATs
3+
# Continuous Integration workflow for Minimal Acceptance Tests.
4+
#
5+
# Jobs included:
6+
# - MATS: Runs Machine Acceptance Tests
7+
#
8+
# Required Secrets:
9+
# NONE
10+
11+
on: # yamllint disable-line rule:truthy
12+
workflow_run:
13+
workflows: ["CI-BUILD"]
14+
types:
15+
- completed
16+
17+
# Declare default permissions as none.
18+
permissions: {}
19+
20+
jobs:
21+
check_build:
22+
permissions:
23+
actions: read
24+
pull-requests: read
25+
checks: write
26+
runs-on: ubuntu-latest
27+
outputs:
28+
should_run: ${{ steps.check.outputs.should_run }}
29+
build_environment: ${{ steps.get_env.outputs.environment }}
30+
steps:
31+
- id: check
32+
run: |
33+
if [[ "${{ github.event.workflow_run.conclusion }}" == "success" ]]; then
34+
echo "should_run=true" >> $GITHUB_OUTPUT
35+
else
36+
echo "should_run=false" >> $GITHUB_OUTPUT
37+
fi
38+
- id: get_env
39+
run: |
40+
ENV_VALUE=$(gh api "${{ github.event.workflow_run.artifacts_url }}" --jq '.environment')
41+
if [[ -n "$ENV_VALUE" ]]; then
42+
echo "environment=$ENV_VALUE" >> $GITHUB_OUTPUT
43+
else
44+
echo "environment=Experimenting" >> $GITHUB_OUTPUT # Default fallback
45+
fi
46+
47+
MATS:
48+
permissions:
49+
actions: read
50+
contents: read
51+
statuses: write
52+
needs: check_build
53+
if: ${{ !cancelled() && (needs.check_build.outputs.should_run == 'true') }}
54+
runs-on: ubuntu-latest
55+
environment: ${{ needs.check_build.outputs.build_environment }}
56+
defaults:
57+
run:
58+
shell: bash
59+
timeout-minutes: 8
60+
strategy:
61+
matrix:
62+
python-version: ["3.10", "3.11", "3.12"]
63+
outputs:
64+
mats_status: ${{ steps.tests.outcome }}
65+
env:
66+
PYTHON_VERSION: ${{ matrix.python-version }}
67+
LANG: "en_US.utf-8"
68+
steps:
69+
- name: Checkout repository
70+
uses: actions/checkout@v4
71+
with:
72+
persist-credentials: false
73+
- name: Set up Python ${{ matrix.python-version }}
74+
uses: actions/setup-python@v5
75+
with:
76+
python-version: ${{ matrix.python-version }}
77+
- name: Install dependencies for ${{ matrix.python-version }}
78+
run: |
79+
pip install --upgrade "pip>=24.3.1" "setuptools>=75.0" "wheel>=0.44" "build>=1.2.1";
80+
pip install -r ./requirements.txt ;
81+
pip install -r ./tests/requirements.txt || true ;
82+
pip install --upgrade -r ./docs/requirements.txt || true ;
83+
- name: Pre-Clean
84+
id: clean
85+
run: make -j1 -f Makefile clean || true ;
86+
- name: Run Tests for python ${{ matrix.python-version }}
87+
id: tests
88+
run: make -j1 -f Makefile test ;
89+
- name: Summerize MATs for python ${{ matrix.python-version }}
90+
id: sumerize-mats
91+
run: |
92+
echo "- MATS works on python version ${{ matrix.python-version }}" >> $GITHUB_STEP_SUMMARY
93+
if: ${{ success() }}
94+
- name: Post-Clean
95+
id: post
96+
run: make -j1 -f Makefile clean || true ;
97+
if: ${{ always() }}
98+
99+
MATS_STATUS:
100+
permissions:
101+
actions: read
102+
needs: [check_build, MATS]
103+
runs-on: ubuntu-latest
104+
if: ${{ !cancelled() }}
105+
outputs:
106+
passedMATs: ${{ steps.check_status.outputs.mats_success }}
107+
didBUILD: ${{ needs.check_build.outputs.should_run }}
108+
steps:
109+
- id: check_status
110+
run: |
111+
if [[ "${{ needs.MATS.result }}" == "success" ]]; then
112+
echo "mats_success=true" >> $GITHUB_OUTPUT
113+
else
114+
echo "mats_success=false" >> $GITHUB_OUTPUT
115+
fi

0 commit comments

Comments
 (0)