Add Kimi K2.5 support #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| name: NVIDIA Dynamo Github Validation | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - release/*.*.* | |
| pull_request: | |
| # Cancel any previous check runs for the same pull request to avoid redundant workflows. | |
| concurrency: | |
| group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow, github.event.pull_request.number) || format('{0}-{1}', github.workflow, github.run_id) }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| changed-files: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| core: ${{ steps.changes.outputs.core }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check for changes | |
| id: changes | |
| uses: ./.github/actions/changed-files | |
| with: | |
| gh_token: ${{ github.token }} | |
| dynamo-status-check: | |
| runs-on: ubuntu-latest | |
| needs: [changed-files, build-test] | |
| if: always() | |
| steps: | |
| - name: "Check all dependent jobs" | |
| run: | | |
| echo '${{ toJson(needs) }}' | jq -e 'to_entries | map(.value.result) | all(. as $result | ["success", "skipped"] | any($result == .))' | |
| build-test: | |
| needs: changed-files | |
| if: needs.changed-files.outputs.core == 'true' | |
| runs-on: | |
| group: Fastchecker | |
| name: Build and Test - dynamo | |
| env: | |
| CONTAINER_ID: test_${{ github.run_id }}_${{ github.run_attempt }}_${{ github.job }}_dynamo | |
| PYTEST_XML_FILE: pytest_test_report.xml | |
| PYTEST_PARALLEL_XML_FILE: pytest_parallel.xml | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| lfs: true | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Login to NGC | |
| if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' | |
| uses: ./.github/actions/docker-login | |
| with: | |
| ngc_ci_access_token: ${{ secrets.NGC_CI_ACCESS_TOKEN }} | |
| - name: Define Image Tag | |
| id: define_image_tag | |
| run: | | |
| echo "image_tag=dynamo:latest-dev" >> $GITHUB_OUTPUT | |
| - name: Generate Dockerfile | |
| shell: bash | |
| run: | | |
| echo "Generating Dockerfile for target: ${{ inputs.target }} and framework: ${{ inputs.framework }}" | |
| python ./container/render.py \ | |
| --target=dev \ | |
| --framework=dynamo \ | |
| --platform=amd64 \ | |
| --show-result \ | |
| --output-short-filename | |
| - name: Build image | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.CI_TOKEN }} | |
| run: | | |
| docker buildx build \ | |
| --progress=plain \ | |
| --tag ${{ steps.define_image_tag.outputs.image_tag }} \ | |
| -f ./container/rendered.Dockerfile \ | |
| --build-arg ENABLE_MEDIA_FFMPEG=true \ | |
| --build-arg ENABLE_KVBM=true \ | |
| --load . | |
| - name: Start services with docker-compose | |
| working-directory: ./deploy | |
| run: | | |
| docker compose up -d nats-server etcd-server | |
| - name: Run Rust checks (block-manager + media-ffmpeg + integration tests) | |
| run: | | |
| docker run --rm -w /workspace/lib/llm \ | |
| --name ${{ env.CONTAINER_ID }}_rust_checks \ | |
| ${{ steps.define_image_tag.outputs.image_tag }} \ | |
| bash -ec 'rustup component add rustfmt clippy && \ | |
| cargo fmt -- --check && \ | |
| cargo clippy --features block-manager,media-ffmpeg --no-deps --all-targets -- -D warnings && \ | |
| cargo test --locked --all-targets --features=block-manager,media-ffmpeg,testing-nixl && \ | |
| cargo test --locked --features integration -- --nocapture' | |
| - name: Cleanup services | |
| if: always() | |
| working-directory: ./deploy | |
| run: | | |
| docker compose down | |
| - name: Run pytest (parallel tests with xdist) | |
| env: | |
| PYTEST_MARKS: "pre_merge and parallel and not (vllm or sglang or trtllm) and (gpu_0 or gpu_1)" | |
| run: | | |
| docker run -w /workspace \ | |
| --name ${{ env.CONTAINER_ID }}_pytest_parallel \ | |
| ${{ steps.define_image_tag.outputs.image_tag }} \ | |
| bash -c "pytest --mypy --basetemp=/tmp/pytest-parallel --junitxml=${{ env.PYTEST_PARALLEL_XML_FILE }} --durations=10 -n 4 -m \"${{ env.PYTEST_MARKS }}\"" | |
| - name: Copy parallel test report from Container | |
| if: always() | |
| run: | | |
| docker cp ${{ env.CONTAINER_ID }}_pytest_parallel:/workspace/${{ env.PYTEST_PARALLEL_XML_FILE }} . || echo "No parallel test report found" | |
| - name: Run pytest (sequential tests) | |
| env: | |
| PYTEST_MARKS: "pre_merge and not parallel and not (vllm or sglang or trtllm) and (gpu_0 or gpu_1)" | |
| run: | | |
| docker run -w /workspace \ | |
| --name ${{ env.CONTAINER_ID }}_pytest \ | |
| ${{ steps.define_image_tag.outputs.image_tag }} \ | |
| bash -c "pytest --mypy --basetemp=/tmp --junitxml=${{ env.PYTEST_XML_FILE }} --durations=10 -m \"${{ env.PYTEST_MARKS }}\" " | |
| - name: Copy test report from test Container | |
| if: always() | |
| run: | | |
| docker cp ${{ env.CONTAINER_ID }}_pytest:/workspace/${{ env.PYTEST_XML_FILE }} . | |
| - name: Archive test report | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: dynamo-python-test-results | |
| if-no-files-found: error | |
| path: | | |
| ${{ env.PYTEST_XML_FILE }} | |
| ${{ env.PYTEST_PARALLEL_XML_FILE }} | |
| event_file: | |
| name: "Event File" | |
| runs-on: ubuntu-latest | |
| if: ${{ github.event_name == 'pull_request' }} | |
| steps: | |
| - name: Upload | |
| uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 | |
| with: | |
| name: Event File | |
| path: ${{ github.event_path }} |