2727 inference_test_matrix : ${{ steps.config.outputs.inference_test_matrix }}
2828 serve_test_matrix : ${{ steps.config.outputs.serve_test_matrix }}
2929 rl_test_matrix : ${{ steps.config.outputs.rl_test_matrix }}
30+ benchmark_test_matrix : ${{ steps.config.outputs.benchmark_test_matrix }}
3031 pkg_mgr : ${{ steps.config.outputs.pkg_mgr }}
3132 env_path : ${{ steps.config.outputs.env_path }}
3233 env_name_train : ${{ steps.config.outputs.env_name_train }}
@@ -99,8 +100,22 @@ jobs:
99100 # Load configuration and group tests by task
100101 load_platform_config "$PLATFORM"
101102
102- unit_tests :
103+ # CLI validation runs first (outside virtual env) as a gate for all subsequent tests
104+ cli_validation :
103105 needs : checkout_and_config
106+ uses : ./.github/workflows/functional_tests_cli.yml
107+ with :
108+ platform : ${{ inputs.platform }}
109+ image : ${{ needs.checkout_and_config.outputs.ci_train_image }}
110+ runs_on : ${{ needs.checkout_and_config.outputs.runs_on }}
111+ container_volumes : ${{ needs.checkout_and_config.outputs.container_volumes }}
112+ container_options : ${{ needs.checkout_and_config.outputs.container_options }}
113+ source_artifact : flagscale-source-${{ github.sha }}
114+
115+ unit_tests :
116+ needs :
117+ - checkout_and_config
118+ - cli_validation
104119 strategy :
105120 fail-fast : false
106121 matrix :
@@ -155,7 +170,6 @@ jobs:
155170 env_name : ${{ needs.checkout_and_config.outputs.env_name_train }}
156171 env_path : ${{ needs.checkout_and_config.outputs.env_path }}
157172
158- # NOTE: Inference, serve, and rl functional tests are temporarily disabled
159173 functional_tests_inference :
160174 needs :
161175 - checkout_and_config
@@ -192,6 +206,7 @@ jobs:
192206 env_name : ${{ needs.checkout_and_config.outputs.env_name_serve }}
193207 env_path : ${{ needs.checkout_and_config.outputs.env_path }}
194208
209+ # NOTE: rl functional tests are temporarily disabled
195210 # functional_tests_rl:
196211 # needs:
197212 # - checkout_and_config
@@ -210,18 +225,38 @@ jobs:
210225 # env_name: ${{ needs.checkout_and_config.outputs.env_name_rl }}
211226 # env_path: ${{ needs.checkout_and_config.outputs.env_path }}
212227
228+ functional_tests_benchmark :
229+ needs :
230+ - checkout_and_config
231+ - unit_tests
232+ if : fromJson(needs.checkout_and_config.outputs.benchmark_test_matrix)[0] != null
233+ uses : ./.github/workflows/functional_tests_benchmark.yml
234+ with :
235+ platform : ${{ inputs.platform }}
236+ test_matrix : ${{ needs.checkout_and_config.outputs.benchmark_test_matrix }}
237+ image : ${{ needs.checkout_and_config.outputs.ci_train_image }}
238+ runs_on : ${{ needs.checkout_and_config.outputs.runs_on }}
239+ container_volumes : ${{ needs.checkout_and_config.outputs.container_volumes }}
240+ container_options : ${{ needs.checkout_and_config.outputs.container_options }}
241+ source_artifact : flagscale-source-${{ github.sha }}
242+ pkg_mgr : ${{ needs.checkout_and_config.outputs.pkg_mgr }}
243+ env_name : ${{ needs.checkout_and_config.outputs.env_name_train }}
244+ env_path : ${{ needs.checkout_and_config.outputs.env_path }}
245+
213246 all_tests_complete :
214247 defaults :
215248 run :
216249 shell : bash
217250 needs :
218251 - checkout_and_config
252+ - cli_validation
219253 - unit_tests
220254 - functional_tests_train
221255 - functional_tests_hetero_train
256+ - functional_tests_benchmark
257+ - functional_tests_inference
258+ - functional_tests_serve
222259 # NOTE: Disabled tests removed from needs
223- # - functional_tests_inference
224- # - functional_tests_serve
225260 # - functional_tests_rl
226261 runs-on : ubuntu-latest
227262 if : always()
@@ -236,6 +271,11 @@ jobs:
236271 failed=true
237272 fi
238273
274+ if [ "${{ needs.cli_validation.result }}" != "success" ]; then
275+ echo "❌ CLI validation failed"
276+ failed=true
277+ fi
278+
239279 # Only check functional tests if they ran
240280 if [ "${{ needs.functional_tests_train.result }}" != "success" ] && \
241281 [ "${{ needs.functional_tests_train.result }}" != "skipped" ]; then
@@ -249,19 +289,25 @@ jobs:
249289 failed=true
250290 fi
251291
252- # NOTE: Inference, serve, and rl checks disabled
253- # if [ "${{ needs.functional_tests_inference.result }}" != "success" ] && \
254- # [ "${{ needs.functional_tests_inference.result }}" != "skipped" ]; then
255- # echo "❌ Inference functional tests failed"
256- # failed=true
257- # fi
292+ if [ "${{ needs.functional_tests_benchmark.result }}" != "success" ] && \
293+ [ "${{ needs.functional_tests_benchmark.result }}" != "skipped" ]; then
294+ echo "❌ Benchmark tests failed"
295+ failed=true
296+ fi
258297
259- # if [ "${{ needs.functional_tests_serve .result }}" != "success" ] && \
260- # [ "${{ needs.functional_tests_serve .result }}" != "skipped" ]; then
261- # echo "❌ Serve functional tests failed"
262- # failed=true
263- # fi
298+ if [ "${{ needs.functional_tests_inference .result }}" != "success" ] && \
299+ [ "${{ needs.functional_tests_inference .result }}" != "skipped" ]; then
300+ echo "❌ Inference functional tests failed"
301+ failed=true
302+ fi
264303
304+ if [ "${{ needs.functional_tests_serve.result }}" != "success" ] && \
305+ [ "${{ needs.functional_tests_serve.result }}" != "skipped" ]; then
306+ echo "❌ Serve functional tests failed"
307+ failed=true
308+ fi
309+
310+ # NOTE: Inference, serve, and rl checks disabled
265311 # if [ "${{ needs.functional_tests_rl.result }}" != "success" ] && \
266312 # [ "${{ needs.functional_tests_rl.result }}" != "skipped" ]; then
267313 # echo "❌ RL functional tests failed"
0 commit comments