Update test-tensorflow-switching.yml #38
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: TensorFlow Complex Dependency Test | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| 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 dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e . redis tensorflow==2.13.0 | |
| - 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 / '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 - TensorFlow | |
| id: run_demo | |
| run: | | |
| echo "--- Running Omnipkg Demo for TensorFlow (Complex Dependency Testing) ---" | |
| mkdir -p /tmp/omnipkg-artifacts | |
| timeout 900 bash -c 'echo "4" | omnipkg demo 2>&1 | tee /tmp/omnipkg-artifacts/tensorflow_demo_output.txt' | |
| DEMO_EXIT_CODE=$? | |
| echo "## TensorFlow Demo Output" >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| cat /tmp/omnipkg-artifacts/tensorflow_demo_output.txt >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| if [ $DEMO_EXIT_CODE -eq 0 ] || \ | |
| (grep -q "ALL TESTS PASSED!" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt && \ | |
| grep -q "Demo completed successfully" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt); then | |
| echo "Demo completed successfully (exit code $DEMO_EXIT_CODE, logs verified)." | |
| echo "demo_outcome=success" >> $GITHUB_OUTPUT | |
| if grep -q "tensorflow==" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt && \ | |
| grep -q "ALL TESTS PASSED!" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt; then | |
| echo "TensorFlow demo verified: TensorFlow versions switched successfully, all tests passed!" | |
| else | |
| echo "Error: Expected TensorFlow demo output not found." | |
| echo "Missing one of: 'tensorflow==', or 'ALL TESTS PASSED!'" | |
| cat /tmp/omnipkg-artifacts/tensorflow_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/tensorflow_demo_output.txt | |
| exit 1 | |
| fi | |
| - name: Archive Demo Output | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: omnipkg-tensorflow-demo-output | |
| path: /tmp/omnipkg-artifacts/ | |
| retention-days: 7 | |
| compression-level: 6 |