1- linux-distros-podman-critical :
1+ name : Cross-Platform Build Verification
2+
3+ on :
4+ release :
5+ types : [published]
6+ workflow_dispatch :
7+ inputs :
8+ target_ref :
9+ description : ' Git Ref to verify (e.g. v2.0.6). Leave empty to use current ref.'
10+ required : false
11+ type : string
12+ default : ' '
13+
14+ jobs :
15+ # ═══════════════════════════════════════════════════════════════════
16+ # 1. BUILD MATRIX
17+ # ═══════════════════════════════════════════════════════════════════
18+ build-matrix :
19+ name : ${{ matrix.label }}
20+ runs-on : ${{ matrix.runner }}
21+ strategy :
22+ fail-fast : false
23+ matrix :
24+ include :
25+ - runner : [self-hosted, linux, x64]
26+ label : " Linux x86_64 (self-hosted)"
27+ - runner : [self-hosted, macos, x64]
28+ label : " macOS x86_64 Intel (self-hosted)"
29+ - runner : ubuntu-latest
30+ label : " Ubuntu x86_64"
31+ - runner : windows-latest
32+ label : " Windows x86_64"
33+ - runner : macos-14
34+ label : " macOS ARM64 (Apple Silicon)"
35+
36+ steps :
37+ - name : Checkout
38+ uses : actions/checkout@v4
39+ with :
40+ ref : ${{ inputs.target_ref || github.ref }}
41+
42+ - name : Set up Python 3.11
43+ if : ${{ !contains(matrix.runner, 'self-hosted') }}
44+ uses : actions/setup-python@v5
45+ with :
46+ python-version : ' 3.11'
47+
48+ - name : Verify Architecture
49+ id : arch
50+ shell : bash
51+ run : |
52+ ARCH=$(uname -m)
53+ OS=$(uname -s)
54+ echo "Detected: $OS $ARCH"
55+
56+ - name : Build and Test (Self-Hosted Linux)
57+ if : contains(matrix.runner, 'self-hosted') && contains(matrix.runner, 'linux')
58+ shell : bash
59+ env :
60+ PYTHONUNBUFFERED : " 1"
61+ run : |
62+ set -x
63+
64+ # 1. Find a Python to bootstrap (Conda or System)
65+ if [ -f "$HOME/miniconda3/envs/evocoder_env/bin/python3.11" ]; then
66+ BASE_PY="$HOME/miniconda3/envs/evocoder_env/bin/python3.11"
67+ echo "🔧 Bootstrapping from: $BASE_PY"
68+ elif command -v python3.11 >/dev/null 2>&1; then
69+ BASE_PY=python3.11
70+ else
71+ BASE_PY=python3
72+ fi
73+
74+ # 2. Create ISOLATED venv (Protects your lollama/tensorflow env)
75+ echo "🛡️ Creating fresh .venv..."
76+ rm -rf .venv
77+ $BASE_PY -m venv .venv
78+
79+ # 3. Activate venv
80+ source .venv/bin/activate
81+
82+ # 4. Install & Build INSIDE venv
83+ echo "🔥 Installing build tools..."
84+ python -m pip install --upgrade pip build
85+
86+ echo "📦 Building package..."
87+ python -m build
88+
89+ echo "💿 Installing package (Isolated)..."
90+ python -m pip install dist/*.whl
91+
92+ # 5. Test
93+ echo "🧪 Testing..."
94+ omnipkg --version
95+ omnipkg list
96+
97+ - name : Build and Test (Other Platforms)
98+ if : ${{ !(contains(matrix.runner, 'self-hosted') && contains(matrix.runner, 'linux')) }}
99+ shell : bash
100+ run : |
101+ if command -v python3 &>/dev/null; then PY=python3; else PY=python; fi
102+ if ! $PY -m venv .venv; then
103+ $PY -m venv .venv --without-pip
104+ curl -sS https://bootstrap.pypa.io/get-pip.py | .venv/bin/python
105+ fi
106+ if [ -f ".venv/bin/activate" ]; then source .venv/bin/activate; else source .venv/Scripts/activate; fi
107+
108+ python -m pip install --upgrade pip build
109+ python -m build
110+ pip install dist/*.whl
111+ omnipkg --version
112+ omnipkg list
113+ # ═══════════════════════════════════════════════════════════════════
114+ # 2. CRITICAL TESTS (Podman)
115+ # ═══════════════════════════════════════════════════════════════════
116+ linux-distros-podman-critical :
2117 name : Podman - ${{ matrix.distro }} (${{ matrix.platform }})
3118 runs-on : [self-hosted, linux, x64]
4119 timeout-minutes : 25
@@ -14,7 +129,7 @@ linux-distros-podman-critical:
14129 - distro : fedora:39
15130 platform : linux/amd64
16131
17- # ARM64 QEMU (Debian & Rocky ONLY)
132+ # ARM64 QEMU (Debian & Rocky ONLY - Removed Ubuntu & Alpine )
18133 - distro : debian:12
19134 platform : linux/arm64
20135 - distro : rockylinux:9
@@ -28,21 +143,8 @@ linux-distros-podman-critical:
28143
29144 - name : Test
30145 run : |
31- # Use the workspace directly - no temp dir needed
32- # GitHub Actions already provides an isolated workspace per job
33- WORKSPACE_DIR="$(pwd)"
34-
35- echo "Testing in workspace: $WORKSPACE_DIR"
36-
37- if [[ "${{ matrix.distro }}" == *"alpine"* ]]; then SHELL_CMD="/bin/sh"; else SHELL_CMD="/bin/bash"; fi
38-
39- # Mount the current workspace directly
40- # This avoids temp directory issues entirely
41- podman run --rm \
42- --security-opt label=disable \
43- -v "$WORKSPACE_DIR:/workspace:rw" \
44- --platform ${{ matrix.platform }} \
45- ${{ matrix.distro }} $SHELL_CMD -c "
146+ if [[ "${{ matrix.distro }}" == *"alpine"* ]]; then SHELL="/bin/sh"; else SHELL="/bin/bash"; fi
147+ podman run --rm -v $(pwd):/workspace:Z --platform ${{ matrix.platform }} ${{ matrix.distro }} $SHELL -c "
46148 cd /workspace
47149
48150 # Install build dependencies based on distro
@@ -60,3 +162,114 @@ linux-distros-podman-critical:
60162 omnipkg --version
61163 omnipkg list
62164 "
165+ # ═══════════════════════════════════════════════════════════════════
166+ # 3. DOCKER JOBS
167+ # ═══════════════════════════════════════════════════════════════════
168+ linux-distros-docker-debian :
169+ name : Docker - Debian/Ubuntu
170+ runs-on : ubuntu-latest
171+ strategy :
172+ fail-fast : false
173+ matrix :
174+ distro : [debian:12, debian:11, ubuntu:24.04, ubuntu:22.04, ubuntu:20.04]
175+ steps :
176+ - name : Checkout
177+ uses : actions/checkout@v4
178+ with :
179+ ref : ${{ inputs.target_ref || github.ref }}
180+ - name : Test
181+ run : |
182+ docker run --rm -v $(pwd):/workspace ${{ matrix.distro }} /bin/bash -c "
183+ cd /workspace
184+ apt-get update && apt-get install -y python3 python3-pip python3-venv build-essential python3-dev gcc
185+ python3 -m pip install --upgrade pip build || python3 -m pip install --break-system-packages pip build
186+ python3 -m build
187+ python3 -m pip install --break-system-packages dist/*.whl
188+ omnipkg --version
189+ omnipkg list
190+ "
191+ linux-distros-docker-rhel :
192+ name : Docker - RHEL/Fedora
193+ runs-on : ubuntu-latest
194+ strategy :
195+ fail-fast : false
196+ matrix :
197+ distro : [fedora:39, fedora:38, rockylinux:9, rockylinux:8, almalinux:9]
198+ steps :
199+ - name : Checkout
200+ uses : actions/checkout@v4
201+ with :
202+ ref : ${{ inputs.target_ref || github.ref }}
203+ - name : Test
204+ run : |
205+ docker run --rm -v $(pwd):/workspace ${{ matrix.distro }} /bin/bash -c "
206+ cd /workspace
207+ if grep -q 'release 8' /etc/redhat-release; then
208+ dnf install -y python39 python39-pip gcc python3-devel && ln -sf /usr/bin/python3.9 /usr/bin/python3 && ln -sf /usr/bin/pip3.9 /usr/bin/pip3
209+ else
210+ dnf install -y python3 python3-pip gcc python3-devel
211+ fi
212+ python3 -m pip install --upgrade pip build
213+ python3 -m build
214+ python3 -m pip install dist/*.whl
215+ omnipkg --version
216+ omnipkg list
217+ "
218+ linux-distros-docker-other :
219+ name : Docker - Arch/Alpine
220+ runs-on : ubuntu-latest
221+ strategy :
222+ fail-fast : false
223+ matrix :
224+ distro : [archlinux:latest, alpine:latest]
225+ steps :
226+ - name : Checkout
227+ uses : actions/checkout@v4
228+ with :
229+ ref : ${{ inputs.target_ref || github.ref }}
230+ - name : Test
231+ run : |
232+ docker run --rm -v $(pwd):/workspace ${{ matrix.distro }} /bin/sh -c "
233+ cd /workspace
234+ if command -v pacman &> /dev/null; then
235+ pacman -Sy --noconfirm python python-pip base-devel gcc
236+ elif command -v apk &> /dev/null; then
237+ apk add --no-cache python3 py3-pip py3-build gcc python3-dev musl-dev linux-headers
238+ fi
239+ python3 -m pip install --break-system-packages --upgrade pip build
240+ python3 -m build
241+ python3 -m pip install --break-system-packages dist/*.whl
242+ omnipkg --version
243+ omnipkg list
244+ "
245+ # ═══════════════════════════════════════════════════════════════════
246+ # 4. README STATS
247+ # ═══════════════════════════════════════════════════════════════════
248+ update-readme-stats :
249+ name : " 📝 Update README Platform Stats"
250+ needs : [build-matrix, linux-distros-podman-critical, linux-distros-docker-debian, linux-distros-docker-rhel, linux-distros-docker-other]
251+ runs-on : ubuntu-latest
252+ if : success()
253+ continue-on-error : true
254+ steps :
255+ - name : Checkout
256+ uses : actions/checkout@v4
257+ with :
258+ fetch-depth : 0
259+ ref : ${{ inputs.target_ref || github.ref }}
260+ - name : Update Stats
261+ run : |
262+ sed -i "s/platforms-[0-9]*%20verified/platforms-22%20verified/" README.md
263+ if ! grep -q "macOS ARM64" README.md; then
264+ sed -i '/macOS Intel.*x86_64.*Intel/a | macOS ARM64 | ARM64 (Apple Silicon) | ✅ | Native installation |' README.md
265+ fi
266+ - name : Commit and Push
267+ run : |
268+ git config user.name "github-actions[bot]"
269+ git config user.email "github-actions[bot]@users.noreply.github.com"
270+ if ! git diff --quiet README.md; then
271+ git add README.md
272+ git commit -m "🤖 Auto-update: Platform verification stats [skip ci]"
273+ git pull --rebase origin main || echo "⚠️ Rebase conflict, overwriting..."
274+ git push || echo "⚠️ Push failed, ignoring."
275+ fi
0 commit comments