-
-
Notifications
You must be signed in to change notification settings - Fork 1
132 lines (114 loc) · 4.83 KB
/
Copy pathtest-tensorflow-switching.yml
File metadata and controls
132 lines (114 loc) · 4.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: "💥 Nuclear Test: TensorFlow Dependency Hot-Swap"
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 dependencies
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 - TensorFlow
id: run_demo
run: |
echo "--- Running Omnipkg Demo for TensorFlow (Complex Dependency Testing) ---"
mkdir -p /tmp/omnipkg-artifacts
# Use the direct ID '4' and --non-interactive flag to skip the menu.
# We capture PIPESTATUS[0] to get the actual exit code of omnipkg.
timeout 900 bash -c 'omnipkg demo 4 --non-interactive 2>&1 | tee /tmp/omnipkg-artifacts/tensorflow_demo_output.txt'
DEMO_EXIT_CODE=${PIPESTATUS[0]}
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
# Verify both the exit code and the specific TensorFlow success indicators
if [ $DEMO_EXIT_CODE -eq 0 ] && grep -q "Demo completed successfully" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt; then
echo "Demo completed successfully (verified by exit code and log content)."
echo "demo_outcome=success" >> $GITHUB_OUTPUT
else
echo "Demo failed (Exit Code: $DEMO_EXIT_CODE or success message not found)."
echo "demo_outcome=failure" >> $GITHUB_OUTPUT
cat /tmp/omnipkg-artifacts/tensorflow_demo_output.txt
exit 1
fi
# The success indicator is the text "TensorFlow escaped the matrix".
if grep -q "Demo completed successfully" /tmp/omnipkg-artifacts/tensorflow_demo_output.txt; then
echo "Demo completed successfully (verified by log content)."
echo "demo_outcome=success" >> $GITHUB_OUTPUT
else
echo "Demo failed (success message not found in log)."
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