[CI] support nightly ci for per pr by labels (#6483)
### What this PR does / why we need it?
This PR refactors the nightly CI workflows (A2 and A3) to support
running tests against a specific PR's code, in addition to the existing
scheduled/dispatch runs using pre-built images.
#### Motivation:
Previously, nightly tests could only be triggered by schedule or
workflow_dispatch, always using the pre-built nightly image. This change
allows developers to trigger nightly tests against their own PR's source
code, enabling early validation without waiting for a nightly build.
#### Changes
Trigger logic (parse-trigger job)
A new parse-trigger job is introduced in both
schedule_nightly_test_a2.yaml and schedule_nightly_test_a3.yaml to
centralize trigger evaluation:
`schedule / workflow_dispatch`: runs all tests with the pre-built image
(existing behavior preserved)
`pull_request (labeled + synchronize)`: runs only when:The PR has the
nightly-test label, and /nightly [test-names] comment exists (latest one
wins)
1. /nightly or /nightly all — runs all tests
2. /nightly test1 test2 — runs only named tests (comma-wrapped for exact
matching)
#### How to trigger
1. Add the nightly-test label to your PR
2. Comment /nightly (all tests) or /nightly test1 test2 (specific tests)
4. Re-triggering: add another /nightly comment and push a new commit
(synchronize event)
### Does this PR introduce _any_ user-facing change?
None
### How was this patch tested?
- vLLM version: v0.14.1
- vLLM main:
dc917cceb8
---------
Signed-off-by: hfadzxy <starmoon_zhang@163.com>
This commit is contained in:
34
.github/workflows/_e2e_nightly_multi_node.yaml
vendored
34
.github/workflows/_e2e_nightly_multi_node.yaml
vendored
@@ -45,6 +45,12 @@ on:
|
||||
default: main
|
||||
type: string
|
||||
description: used for pr level tests
|
||||
is_pr_test:
|
||||
required: true
|
||||
type: boolean
|
||||
is_run:
|
||||
required: true
|
||||
type: boolean
|
||||
secrets:
|
||||
KUBECONFIG_B64:
|
||||
required: true
|
||||
@@ -68,6 +74,7 @@ jobs:
|
||||
name: ${{ inputs.config_file_path }}
|
||||
# This is the runner with no NPU for k8s controller
|
||||
runs-on: ${{ inputs.runner }}
|
||||
if: ${{ inputs.is_run }}
|
||||
container:
|
||||
image: swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/vllm-ascend:nightly-cpu
|
||||
env:
|
||||
@@ -78,8 +85,19 @@ jobs:
|
||||
- name: Decode kubeconfig from secrets
|
||||
run: |
|
||||
# Decode and save kubeconfig
|
||||
echo "${{ secrets.KUBECONFIG_B64 }}" | base64 -d > "$KUBECONFIG"
|
||||
|
||||
if [ "${{ inputs.is_pr_test }}" = "true" ]; then
|
||||
echo "PR test mode"
|
||||
if [ "${{ inputs.soc_version }}" = "a3" ]; then
|
||||
echo "Using A3 cached kubeconfig"
|
||||
cp /root/.cache/.kube/kubeconfig.yaml "$KUBECONFIG"
|
||||
else
|
||||
echo "Using A2 cached kubeconfig"
|
||||
cp /root/.cache/.kube/hk_001_kb.yaml "$KUBECONFIG"
|
||||
fi
|
||||
else
|
||||
echo "Decoding kubeconfig from secrets"
|
||||
echo "${{ secrets.KUBECONFIG_B64 }}" | base64 -d > "$KUBECONFIG"
|
||||
fi
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v6
|
||||
|
||||
@@ -133,9 +151,13 @@ jobs:
|
||||
image="${{ inputs.image }}"
|
||||
config_file_path="${{ inputs.config_file_path }}"
|
||||
fail_tag=FAIL_TAG_"${{ inputs.config_file_path }}"
|
||||
echo "FAIL_TAG=${fail_tag}" >> "$GITHUB_ENV"
|
||||
is_pr_test="${{ inputs.is_pr_test }}"
|
||||
vllm_version="${{ inputs.vllm_version }}"
|
||||
vllm_ascend_ref="${{ inputs.vllm_ascend_ref }}"
|
||||
vllm_ascend_remote_url="${{ inputs.vllm_ascend_remote_url }}"
|
||||
echo "FAIL_TAG=${fail_tag}" >> $GITHUB_ENV
|
||||
|
||||
required_params=("size" "replicas" "image" "config_file_path")
|
||||
required_params=("size" "replicas" "image" "config_file_path" "is_pr_test" "vllm_version" "vllm_ascend_ref" "vllm_ascend_remote_url")
|
||||
for param in "${required_params[@]}"; do
|
||||
if [ -z "${!param}" ]; then
|
||||
echo "Error: Parameter '$param' is required but empty"
|
||||
@@ -158,6 +180,10 @@ jobs:
|
||||
-D config_file_path="$config_file_path" \
|
||||
-D npu_per_node="$npu_per_node" \
|
||||
-D fail_tag="$fail_tag" \
|
||||
-D is_pr_test="$is_pr_test" \
|
||||
-D vllm_version="$vllm_version" \
|
||||
-D vllm_ascend_ref="$vllm_ascend_ref" \
|
||||
-D vllm_ascend_remote_url="$vllm_ascend_remote_url" \
|
||||
--outfile lws.yaml
|
||||
|
||||
kubectl apply -f ./lws.yaml
|
||||
|
||||
Reference in New Issue
Block a user