Remove omnipkg configuration from workflow #1355
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: "🔥 Live NumPy/SciPy Hot-Swapping" | |
| on: | |
| push: | |
| branches: [ development ] | |
| pull_request: | |
| branches: [ development ] | |
| workflow_dispatch: | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| services: | |
| redis: | |
| image: redis:7 | |
| options: >- | |
| --health-cmd "redis-cli ping" | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| ports: | |
| - 6379:6379 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.11 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: 📦 Install omnipkg (editable) and Redis client | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e . redis | |
| - name: Configure omnipkg for non-interactive use | |
| run: | | |
| python - << 'EOF' | |
| import sys | |
| import site | |
| import json | |
| from pathlib import Path | |
| import os | |
| import sysconfig | |
| try: | |
| site_packages_path = site.getsitepackages()[0] | |
| except (IndexError, AttributeError): | |
| site_packages_path = sysconfig.get_paths()['purelib'] | |
| project_root = Path(os.environ['GITHUB_WORKSPACE']) | |
| builder_script = project_root / 'src' / 'omnipkg' / 'package_meta_builder.py' | |
| if not builder_script.exists(): | |
| print(f"Error: {builder_script} does not exist") | |
| sys.exit(1) | |
| config_data = { | |
| 'site_packages_path': site_packages_path, | |
| 'multiversion_base': str(Path(site_packages_path) / '.omnipkg_versions'), | |
| 'python_executable': sys.executable, | |
| 'builder_script_path': str(builder_script), | |
| 'redis_host': 'localhost', | |
| 'redis_port': 6379, | |
| 'redis_key_prefix': 'omnipkg:pkg:', | |
| 'paths_to_index': [str(Path(sys.executable).parent), '/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin'], | |
| 'auto_cleanup': True, | |
| 'cleanup_threshold_days': 30 | |
| } | |
| config_dir = Path.home() / '.config' / 'omnipkg' | |
| config_dir.mkdir(parents=True, exist_ok=True) | |
| config_path = config_dir / 'config.json' | |
| try: | |
| with open(config_path, 'w') as f: | |
| json.dump(config_data, f, indent=2) | |
| print(f'omnipkg config created at {config_path}:') | |
| print(json.dumps(config_data, indent=2)) | |
| except Exception as e: | |
| print(f"Error writing config: {e}") | |
| sys.exit(1) | |
| EOF | |
| - name: Run the Demo - NumPy + SciPy | |
| id: run_demo | |
| run: | | |
| echo "--- Running Omnipkg Demo for NumPy + SciPy (C Extension Nuclear Testing) ---" | |
| mkdir -p /tmp/omnipkg-artifacts | |
| # Use the modern, non-interactive argument instead of a pipe | |
| timeout 900 bash -c 'omnipkg demo 3 --non-interactive 2>&1 | tee /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt' | |
| DEMO_EXIT_CODE=${PIPESTATUS} # Use PIPESTATUS to get the exit code of the first command in the pipe | |
| echo "## NumPy + SciPy Demo Output" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| cat /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| if [ $DEMO_EXIT_CODE -eq 0 ] || \ | |
| (grep -q "ALL TESTS PASSED!" /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt && \ | |
| grep -q "OMNIPKG SURVIVED NUCLEAR TESTING" /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt && \ | |
| grep -q "Demo completed successfully" /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt); then | |
| echo "Demo completed successfully (exit code $DEMO_EXIT_CODE, logs verified)." | |
| echo "demo_outcome=success" >> $GITHUB_OUTPUT | |
| PASSED_COUNT=$(grep -c "PASSED" /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt || echo "0") | |
| if [ "$PASSED_COUNT" -ge 6 ]; then | |
| echo "NumPy + SciPy demo verified: Found $PASSED_COUNT PASSED results (expected at least 6)!" | |
| else | |
| echo "Error: Expected at least 6 PASSED results, but found only $PASSED_COUNT." | |
| cat /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt | |
| exit 1 | |
| fi | |
| else | |
| echo "Demo failed with exit code $DEMO_EXIT_CODE." | |
| echo "demo_outcome=failure" >> $GITHUB_OUTPUT | |
| cat /tmp/omnipkg-artifacts/numpy_scipy_demo_output.txt | |
| exit 1 | |
| fi | |
| - name: Archive Demo Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: omnipkg-numpy-scipy-demo-output | |
| path: /tmp/omnipkg-artifacts/ | |
| retention-days: 7 | |
| compression-level: 6 |