| 1 | #!/usr/bin/env bash |
| 2 | # Fast structural smoke test for the full ROCm CI image. |
| 3 | |
| 4 | set -euo pipefail |
| 5 | |
| 6 | run_smoke_checks() { |
| 7 | local required_dir="" |
| 8 | |
| 9 | for required_dir in \ |
| 10 | /vllm-workspace \ |
| 11 | /vllm-workspace/tests \ |
| 12 | /vllm-workspace/src/vllm; do |
| 13 | if [[ ! -d "${required_dir}" ]]; then |
| 14 | echo "Missing directory: ${required_dir}" >&2 |
| 15 | return 1 |
| 16 | fi |
| 17 | done |
| 18 | if [[ ! -x /vllm-workspace/src/vllm/vllm-rs ]]; then |
| 19 | echo "Missing executable: /vllm-workspace/src/vllm/vllm-rs" >&2 |
| 20 | return 1 |
| 21 | fi |
| 22 | |
| 23 | command -v python3 |
| 24 | command -v uv |
| 25 | command -v pytest |
| 26 | |
| 27 | if ! command -v amd-smi >/dev/null 2>&1 \ |
| 28 | && ! command -v rocminfo >/dev/null 2>&1; then |
| 29 | echo "No ROCm CLI found in image" >&2 |
| 30 | return 1 |
| 31 | fi |
| 32 | |
| 33 | PYTHONDONTWRITEBYTECODE=1 python3 - <<'PY' |
| 34 | import torch |
| 35 | import vllm |
| 36 | |
| 37 | print(torch.__version__) |
| 38 | print(vllm.__version__) |
| 39 | PY |
| 40 | |
| 41 | echo "AMD image smoke OK" |
| 42 | } |
| 43 | |
| 44 | if [[ "${1:-}" == "--inside" ]]; then |
| 45 | run_smoke_checks |
| 46 | exit |
| 47 | fi |
| 48 | if (($#)); then |
| 49 | echo "Usage: $0 [--inside]" >&2 |
| 50 | exit 2 |
| 51 | fi |
| 52 | |
| 53 | if [[ "${ROCM_CI_ARTIFACT_ONLY:-0}" == "1" ]]; then |
| 54 | base_refreshed="" |
| 55 | if command -v buildkite-agent >/dev/null 2>&1; then |
| 56 | base_refreshed="$(buildkite-agent meta-data get rocm-base-refresh 2>/dev/null || true)" |
| 57 | fi |
| 58 | if [[ "${base_refreshed}" != "1" ]]; then |
| 59 | echo "ROCM_CI_ARTIFACT_ONLY=1; no full image was built, skipping smoke test" |
| 60 | exit 0 |
| 61 | fi |
| 62 | fi |
| 63 | |
| 64 | smoke_marker="./build/rocm-smoke-export/vllm-smoke-ok" |
| 65 | expected_smoke_id="${BUILDKITE_BUILD_ID:-local}" |
| 66 | if [[ -f "${smoke_marker}" \ |
| 67 | && ( -z "${VLLM_CI_SMOKE_IMAGE:-}" \ |
| 68 | || "${VLLM_CI_SMOKE_IMAGE}" == "${IMAGE_TAG:-}" ) ]]; then |
| 69 | actual_smoke_id="$(< "${smoke_marker}")" |
| 70 | if [[ "${actual_smoke_id}" != "${expected_smoke_id}" ]]; then |
| 71 | echo "ROCm smoke marker belongs to ${actual_smoke_id}, not ${expected_smoke_id}" \ |
| 72 | >&2 |
| 73 | exit 1 |
| 74 | fi |
| 75 | echo "AMD image smoke OK (verified inside BuildKit)" |
| 76 | rm -f -- "${smoke_marker}" |
| 77 | rmdir -- "$(dirname "${smoke_marker}")" 2>/dev/null || true |
| 78 | exit |
| 79 | fi |
| 80 | |
| 81 | image_ref="${VLLM_CI_SMOKE_IMAGE:-${IMAGE_TAG:-rocm/vllm-ci:${BUILDKITE_COMMIT:?BUILDKITE_COMMIT is required}}}" |
| 82 | |
| 83 | docker run --rm -i --network=none --entrypoint /bin/bash "${image_ref}" \ |
| 84 | -s -- --inside < "${BASH_SOURCE[0]}" |