20
20
schedule :
21
21
# If changing the cron schedule, update the provider in the test-matrix job
22
22
- cron : ' 0 0 * * *' # (test latest client) Daily at 12 AM UTC
23
- - cron : ' 1 0 * * 0' # (test vllm) Weekly on Sunday at 1 AM UTC
24
23
workflow_dispatch :
25
24
inputs :
26
25
test-all-client-versions :
@@ -38,28 +37,7 @@ concurrency:
38
37
cancel-in-progress : true
39
38
40
39
jobs :
41
- discover-tests :
42
- runs-on : ubuntu-latest
43
- outputs :
44
- test-types : ${{ steps.generate-test-types.outputs.test-types }}
45
-
46
- steps :
47
- - name : Checkout repository
48
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
49
-
50
- - name : Generate test types
51
- id : generate-test-types
52
- run : |
53
- # Get test directories dynamically, excluding non-test directories
54
- # NOTE: we are excluding post_training since the tests take too long
55
- TEST_TYPES=$(find tests/integration -maxdepth 1 -mindepth 1 -type d |
56
- sed 's|tests/integration/||' |
57
- grep -Ev "^(__pycache__|fixtures|test_cases|recordings|non_ci|post_training)$" |
58
- sort | jq -R -s -c 'split("\n")[:-1]')
59
- echo "test-types=$TEST_TYPES" >> $GITHUB_OUTPUT
60
-
61
40
run-replay-mode-tests :
62
- needs : discover-tests
63
41
runs-on : ubuntu-latest
64
42
name : ${{ format('Integration Tests ({0}, {1}, {2}, client={3}, vision={4})', matrix.client-type, matrix.provider, matrix.python-version, matrix.client-version, matrix.run-vision-tests) }}
65
43
@@ -68,11 +46,14 @@ jobs:
68
46
matrix :
69
47
client-type : [library, server]
70
48
# Use vllm on weekly schedule, otherwise use test-provider input (defaults to ollama)
71
- provider : ${{ (github.event.schedule == '1 0 * * 0') && fromJSON('["vllm"]') || fromJSON(format('["{0}"]', github.event.inputs.test-provider || 'ollama')) }}
49
+ provider : [ollama, vllm]
72
50
# Use Python 3.13 only on nightly schedule (daily latest client test), otherwise use 3.12
73
51
python-version : ${{ github.event.schedule == '0 0 * * *' && fromJSON('["3.12", "3.13"]') || fromJSON('["3.12"]') }}
74
52
client-version : ${{ (github.event.schedule == '0 0 * * *' || github.event.inputs.test-all-client-versions == 'true') && fromJSON('["published", "latest"]') || fromJSON('["latest"]') }}
75
53
run-vision-tests : [true, false]
54
+ exclude :
55
+ - provider : vllm
56
+ run-vision-tests : true
76
57
77
58
steps :
78
59
- name : Checkout repository
@@ -87,10 +68,27 @@ jobs:
87
68
run-vision-tests : ${{ matrix.run-vision-tests }}
88
69
inference-mode : ' replay'
89
70
71
+ - name : Generate test types
72
+ id : generate-test-types
73
+ run : |
74
+ # Only run inference tests for vllm as these are more likely to exercise the vllm provider
75
+ # TODO: Add agent tests for vllm
76
+ if [ ${{ matrix.provider }} == "vllm" ]; then
77
+ echo "test-types=[\"inference\"]" >> $GITHUB_OUTPUT
78
+ exit 0
79
+ fi
80
+ # Get test directories dynamically, excluding non-test directories
81
+ # NOTE: we are excluding post_training since the tests take too long
82
+ TEST_TYPES=$(find tests/integration -maxdepth 1 -mindepth 1 -type d |
83
+ sed 's|tests/integration/||' |
84
+ grep -Ev "^(__pycache__|fixtures|test_cases|recordings|non_ci|post_training)$" |
85
+ sort | jq -R -s -c 'split("\n")[:-1]')
86
+ echo "test-types=$TEST_TYPES" >> $GITHUB_OUTPUT
87
+
90
88
- name : Run tests
91
89
uses : ./.github/actions/run-and-record-tests
92
90
with :
93
- test-types : ${{ needs.discover-tests .outputs.test-types }}
91
+ test-types : ${{ steps.generate-test-types .outputs.test-types }}
94
92
stack-config : ${{ matrix.client-type == 'library' && 'ci-tests' || 'server:ci-tests' }}
95
93
provider : ${{ matrix.provider }}
96
94
inference-mode : ' replay'
0 commit comments