-
Notifications
You must be signed in to change notification settings - Fork 1.3k
92 lines (80 loc) · 2.9 KB
/
Copy pathtest-external.yml
File metadata and controls
92 lines (80 loc) · 2.9 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
name: Test External API and Providers
run-name: Test the External API and Provider mechanisms
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
paths:
- 'src/ogx/**'
- '!src/ogx_ui/**'
- 'tests/integration/**'
- 'uv.lock'
- 'pyproject.toml'
- 'requirements.txt'
- 'tests/external/*'
- '.github/workflows/test-external.yml' # This workflow
jobs:
test-external:
runs-on: ubuntu-latest
strategy:
matrix:
image-type: [venv]
# We don't do container yet, it's tricky to install a package from the host into the
# container and point 'uv pip install' to the correct path...
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install dependencies
uses: ./.github/actions/setup-runner
- name: Create API configuration
run: |
mkdir -p /home/runner/.ogx/apis.d
cp tests/external/weather.yaml /home/runner/.ogx/apis.d/weather.yaml
- name: Create provider configuration
run: |
mkdir -p /home/runner/.ogx/providers.d/remote/weather
cp tests/external/kaze.yaml /home/runner/.ogx/providers.d/remote/weather/kaze.yaml
- name: Print distro dependencies
run: |
uv run --no-sync ogx stack list-deps tests/external/config.yaml
- name: Build distro from config file
run: |
uv venv ci-test
source ci-test/bin/activate
uv pip install -e .
OGX_LOGGING=all=CRITICAL ogx stack list-deps tests/external/config.yaml | xargs -L1 uv pip install
- name: Start OGX server in background
if: matrix.image-type == 'venv'
env:
INFERENCE_MODEL: "meta-llama/Llama-3.2-3B-Instruct"
OGX_LOG_FILE: "server.log"
run: |
# Use the virtual environment created by the build step (name comes from build config)
source ci-test/bin/activate
uv pip list
nohup ogx stack run tests/external/config.yaml > server.log 2>&1 &
- name: Wait for OGX server to be ready
run: |
echo "Waiting for OGX server..."
for _ in {1..30}; do
if curl -sSf http://localhost:8321/v1/health | grep -q "OK"; then
echo "OGX server is up!"
exit 0
fi
sleep 1
done
echo "OGX server failed to start"
cat server.log
exit 1
- name: Test external API
run: |
curl -sSf http://localhost:8321/v1/weather/locations
- name: Upload all logs to artifacts
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: logs-${{ github.run_id }}-${{ github.run_attempt }}-external-test
path: |
*.log
retention-days: 1