Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9df42d2000 | ||
|
|
8d151aa148 | ||
|
|
11a13b0fd3 |
@@ -31,7 +31,7 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
# #NOTE: torch_cuda_arch_list is derived from upstream PyTorch build files here:
|
# #NOTE: torch_cuda_arch_list is derived from upstream PyTorch build files here:
|
||||||
# https://github.com/pytorch/pytorch/blob/main/.ci/aarch64_linux/aarch64_ci_build.sh#L7
|
# https://github.com/pytorch/pytorch/blob/main/.ci/aarch64_linux/aarch64_ci_build.sh#L7
|
||||||
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0' --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
|
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg BUILDER_CUDA_VERSION=13.0.1 --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0' --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
|
||||||
- "mkdir artifacts"
|
- "mkdir artifacts"
|
||||||
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
|
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
|
||||||
- "bash .buildkite/scripts/upload-nightly-wheels.sh manylinux_2_35"
|
- "bash .buildkite/scripts/upload-nightly-wheels.sh manylinux_2_35"
|
||||||
@@ -70,7 +70,7 @@ steps:
|
|||||||
agents:
|
agents:
|
||||||
queue: cpu_queue_postmerge
|
queue: cpu_queue_postmerge
|
||||||
commands:
|
commands:
|
||||||
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
|
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg BUILDER_CUDA_VERSION=13.0.1 --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag vllm-ci:build-image --target build --progress plain -f docker/Dockerfile ."
|
||||||
- "mkdir artifacts"
|
- "mkdir artifacts"
|
||||||
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
|
- "docker run --rm -v $(pwd)/artifacts:/artifacts_host vllm-ci:build-image bash -c 'cp -r dist /artifacts_host && chmod -R a+rw /artifacts_host'"
|
||||||
- "bash .buildkite/scripts/upload-nightly-wheels.sh manylinux_2_35"
|
- "bash .buildkite/scripts/upload-nightly-wheels.sh manylinux_2_35"
|
||||||
@@ -123,7 +123,7 @@ steps:
|
|||||||
queue: cpu_queue_postmerge
|
queue: cpu_queue_postmerge
|
||||||
commands:
|
commands:
|
||||||
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
|
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
|
||||||
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 --target vllm-openai --progress plain -f docker/Dockerfile ."
|
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg BUILDER_CUDA_VERSION=13.0.1 --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 --target vllm-openai --progress plain -f docker/Dockerfile ."
|
||||||
- "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130"
|
- "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130"
|
||||||
# re-tag to default image tag and push, just in case arm64 build fails
|
# re-tag to default image tag and push, just in case arm64 build fails
|
||||||
- "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130"
|
- "docker tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-cu130"
|
||||||
@@ -137,7 +137,7 @@ steps:
|
|||||||
commands:
|
commands:
|
||||||
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
|
- "aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/q9t5s3a7"
|
||||||
# compute capability 12.0 for RTX-50 series / RTX PRO 6000 Blackwell, 12.1 for DGX Spark
|
# compute capability 12.0 for RTX-50 series / RTX PRO 6000 Blackwell, 12.1 for DGX Spark
|
||||||
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0 12.1' --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 --target vllm-openai --progress plain -f docker/Dockerfile ."
|
- "DOCKER_BUILDKIT=1 docker build --build-arg max_jobs=16 --build-arg USE_SCCACHE=1 --build-arg GIT_REPO_CHECK=1 --build-arg CUDA_VERSION=13.0.1 --build-arg BUILDER_CUDA_VERSION=13.0.1 --build-arg torch_cuda_arch_list='8.7 8.9 9.0 10.0+PTX 12.0 12.1' --build-arg INSTALL_KV_CONNECTORS=true --build-arg BUILD_BASE_IMAGE=nvidia/cuda:13.0.1-devel-ubuntu22.04 --tag public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130 --target vllm-openai --progress plain -f docker/Dockerfile ."
|
||||||
- "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130"
|
- "docker push public.ecr.aws/q9t5s3a7/vllm-release-repo:$BUILDKITE_COMMIT-$(uname -m)-cu130"
|
||||||
|
|
||||||
- block: "Build release image for x86_64 CPU"
|
- block: "Build release image for x86_64 CPU"
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ repos:
|
|||||||
rev: 0.9.1
|
rev: 0.9.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: pip-compile
|
- id: pip-compile
|
||||||
args: [requirements/test.in, -o, requirements/test.txt, --index-strategy, unsafe-best-match, --torch-backend, cu129, --python-platform, x86_64-manylinux_2_28, --python-version, "3.12"]
|
args: [requirements/test.in, -o, requirements/test.txt, --index-strategy, unsafe-best-match, --torch-backend, cu128, --python-platform, x86_64-manylinux_2_28, --python-version, "3.12"]
|
||||||
files: ^requirements/test\.(in|txt)$
|
files: ^requirements/test\.(in|txt)$
|
||||||
- repo: local
|
- repo: local
|
||||||
hooks:
|
hooks:
|
||||||
|
|||||||
+15
-5
@@ -22,7 +22,12 @@
|
|||||||
# docker buildx bake -f docker/docker-bake.hcl -f docker/versions.json
|
# docker buildx bake -f docker/docker-bake.hcl -f docker/versions.json
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
||||||
ARG CUDA_VERSION=12.9.1
|
ARG CUDA_VERSION=12.8.1
|
||||||
|
# BUILDER_CUDA_VERSION controls the CUDA toolkit used to compile csrc/ and
|
||||||
|
# extensions (DeepGEMM, EP kernels). It can differ from CUDA_VERSION, which
|
||||||
|
# is the CUDA version shipped in the final runtime image and used to select
|
||||||
|
# the matching PyTorch wheel.
|
||||||
|
ARG BUILDER_CUDA_VERSION=12.9.1
|
||||||
ARG PYTHON_VERSION=3.12
|
ARG PYTHON_VERSION=3.12
|
||||||
|
|
||||||
# By parameterizing the base images, we allow third-party to use their own
|
# By parameterizing the base images, we allow third-party to use their own
|
||||||
@@ -36,7 +41,7 @@ ARG PYTHON_VERSION=3.12
|
|||||||
# compatibility with other Linux OSes. The main reason for this is that the
|
# compatibility with other Linux OSes. The main reason for this is that the
|
||||||
# glibc version is baked into the distro, and binaries built with one glibc
|
# glibc version is baked into the distro, and binaries built with one glibc
|
||||||
# version are not backwards compatible with OSes that use an earlier version.
|
# version are not backwards compatible with OSes that use an earlier version.
|
||||||
ARG BUILD_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04
|
ARG BUILD_BASE_IMAGE=nvidia/cuda:${BUILDER_CUDA_VERSION}-devel-ubuntu20.04
|
||||||
# Using cuda base image with minimal dependencies necessary for JIT compilation (FlashInfer, DeepGEMM, EP kernels)
|
# Using cuda base image with minimal dependencies necessary for JIT compilation (FlashInfer, DeepGEMM, EP kernels)
|
||||||
ARG FINAL_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-base-ubuntu22.04
|
ARG FINAL_BASE_IMAGE=nvidia/cuda:${CUDA_VERSION}-base-ubuntu22.04
|
||||||
|
|
||||||
@@ -92,8 +97,13 @@ ARG INSTALL_KV_CONNECTORS=false
|
|||||||
FROM ${BUILD_BASE_IMAGE} AS base
|
FROM ${BUILD_BASE_IMAGE} AS base
|
||||||
|
|
||||||
ARG CUDA_VERSION
|
ARG CUDA_VERSION
|
||||||
|
ARG BUILDER_CUDA_VERSION
|
||||||
ARG PYTHON_VERSION
|
ARG PYTHON_VERSION
|
||||||
|
|
||||||
|
# Override the CUDA_VERSION env var inherited from the nvidia base image
|
||||||
|
# (which equals BUILDER_CUDA_VERSION) so that $CUDA_VERSION in RUN commands
|
||||||
|
# resolves to the runtime CUDA version used for PyTorch wheel selection.
|
||||||
|
ENV CUDA_VERSION=${CUDA_VERSION}
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
# Install system dependencies including build tools
|
# Install system dependencies including build tools
|
||||||
@@ -133,7 +143,7 @@ ENV UV_LINK_MODE=copy
|
|||||||
RUN gcc --version
|
RUN gcc --version
|
||||||
|
|
||||||
# Ensure CUDA compatibility library is loaded
|
# Ensure CUDA compatibility library is loaded
|
||||||
RUN echo "/usr/local/cuda-$(echo "$CUDA_VERSION" | cut -d. -f1,2)/compat/" > /etc/ld.so.conf.d/cuda-compat.conf && ldconfig
|
RUN echo "/usr/local/cuda-$(echo "$BUILDER_CUDA_VERSION" | cut -d. -f1,2)/compat/" > /etc/ld.so.conf.d/cuda-compat.conf && ldconfig
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# SLOW-CHANGING DEPENDENCIES BELOW
|
# SLOW-CHANGING DEPENDENCIES BELOW
|
||||||
@@ -309,7 +319,7 @@ RUN --mount=type=cache,target=/root/.cache/ccache \
|
|||||||
# Build DeepGEMM, pplx-kernels, DeepEP - runs in PARALLEL with csrc-build
|
# Build DeepGEMM, pplx-kernels, DeepEP - runs in PARALLEL with csrc-build
|
||||||
# This stage is independent and doesn't affect csrc cache
|
# This stage is independent and doesn't affect csrc cache
|
||||||
FROM base AS extensions-build
|
FROM base AS extensions-build
|
||||||
ARG CUDA_VERSION
|
ARG BUILDER_CUDA_VERSION
|
||||||
|
|
||||||
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
# This timeout (in seconds) is necessary when installing some dependencies via uv since it's likely to time out
|
||||||
ENV UV_HTTP_TIMEOUT=500
|
ENV UV_HTTP_TIMEOUT=500
|
||||||
@@ -325,7 +335,7 @@ COPY tools/install_deepgemm.sh /tmp/install_deepgemm.sh
|
|||||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||||
mkdir -p /tmp/deepgemm/dist && \
|
mkdir -p /tmp/deepgemm/dist && \
|
||||||
VLLM_DOCKER_BUILD_CONTEXT=1 TORCH_CUDA_ARCH_LIST="9.0a 10.0a" /tmp/install_deepgemm.sh \
|
VLLM_DOCKER_BUILD_CONTEXT=1 TORCH_CUDA_ARCH_LIST="9.0a 10.0a" /tmp/install_deepgemm.sh \
|
||||||
--cuda-version "${CUDA_VERSION}" \
|
--cuda-version "${BUILDER_CUDA_VERSION}" \
|
||||||
${DEEPGEMM_GIT_REF:+--ref "$DEEPGEMM_GIT_REF"} \
|
${DEEPGEMM_GIT_REF:+--ref "$DEEPGEMM_GIT_REF"} \
|
||||||
--wheel-dir /tmp/deepgemm/dist || \
|
--wheel-dir /tmp/deepgemm/dist || \
|
||||||
echo "DeepGEMM build skipped (CUDA version requirement not met)"
|
echo "DeepGEMM build skipped (CUDA version requirement not met)"
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
"_comment": "Auto-generated from Dockerfile ARGs. Do not edit manually. Run: python tools/generate_versions_json.py",
|
"_comment": "Auto-generated from Dockerfile ARGs. Do not edit manually. Run: python tools/generate_versions_json.py",
|
||||||
"variable": {
|
"variable": {
|
||||||
"CUDA_VERSION": {
|
"CUDA_VERSION": {
|
||||||
|
"default": "12.8.1"
|
||||||
|
},
|
||||||
|
"BUILDER_CUDA_VERSION": {
|
||||||
"default": "12.9.1"
|
"default": "12.9.1"
|
||||||
},
|
},
|
||||||
"PYTHON_VERSION": {
|
"PYTHON_VERSION": {
|
||||||
@@ -11,7 +14,7 @@
|
|||||||
"default": "nvidia/cuda:12.9.1-devel-ubuntu20.04"
|
"default": "nvidia/cuda:12.9.1-devel-ubuntu20.04"
|
||||||
},
|
},
|
||||||
"FINAL_BASE_IMAGE": {
|
"FINAL_BASE_IMAGE": {
|
||||||
"default": "nvidia/cuda:12.9.1-base-ubuntu22.04"
|
"default": "nvidia/cuda:12.8.1-base-ubuntu22.04"
|
||||||
},
|
},
|
||||||
"GET_PIP_URL": {
|
"GET_PIP_URL": {
|
||||||
"default": "https://bootstrap.pypa.io/get-pip.py"
|
"default": "https://bootstrap.pypa.io/get-pip.py"
|
||||||
|
|||||||
+15
-15
@@ -1,5 +1,5 @@
|
|||||||
# This file was autogenerated by uv via the following command:
|
# This file was autogenerated by uv via the following command:
|
||||||
# uv pip compile requirements/test.in -o requirements/test.txt --index-strategy unsafe-best-match --torch-backend cu129 --python-platform x86_64-manylinux_2_28 --python-version 3.12
|
# uv pip compile requirements/test.in -o requirements/test.txt --index-strategy unsafe-best-match --torch-backend cu128 --python-platform x86_64-manylinux_2_28 --python-version 3.12
|
||||||
absl-py==2.1.0
|
absl-py==2.1.0
|
||||||
# via
|
# via
|
||||||
# rouge-score
|
# rouge-score
|
||||||
@@ -574,28 +574,28 @@ numpy==2.2.6
|
|||||||
# tritonclient
|
# tritonclient
|
||||||
# vocos
|
# vocos
|
||||||
# xarray
|
# xarray
|
||||||
nvidia-cublas-cu12==12.9.1.4
|
nvidia-cublas-cu12==12.8.4.1
|
||||||
# via
|
# via
|
||||||
# nvidia-cudnn-cu12
|
# nvidia-cudnn-cu12
|
||||||
# nvidia-cusolver-cu12
|
# nvidia-cusolver-cu12
|
||||||
# torch
|
# torch
|
||||||
nvidia-cuda-cupti-cu12==12.9.79
|
nvidia-cuda-cupti-cu12==12.8.90
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cuda-nvrtc-cu12==12.9.86
|
nvidia-cuda-nvrtc-cu12==12.8.93
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cuda-runtime-cu12==12.9.79
|
nvidia-cuda-runtime-cu12==12.8.90
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cudnn-cu12==9.10.2.21
|
nvidia-cudnn-cu12==9.10.2.21
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cufft-cu12==11.4.1.4
|
nvidia-cufft-cu12==11.3.3.83
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cufile-cu12==1.14.1.1
|
nvidia-cufile-cu12==1.13.1.3
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-curand-cu12==10.3.10.19
|
nvidia-curand-cu12==10.3.9.90
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cusolver-cu12==11.7.5.82
|
nvidia-cusolver-cu12==11.7.3.90
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-cusparse-cu12==12.5.10.65
|
nvidia-cusparse-cu12==12.5.8.93
|
||||||
# via
|
# via
|
||||||
# nvidia-cusolver-cu12
|
# nvidia-cusolver-cu12
|
||||||
# torch
|
# torch
|
||||||
@@ -603,7 +603,7 @@ nvidia-cusparselt-cu12==0.7.1
|
|||||||
# via torch
|
# via torch
|
||||||
nvidia-nccl-cu12==2.27.5
|
nvidia-nccl-cu12==2.27.5
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-nvjitlink-cu12==12.9.86
|
nvidia-nvjitlink-cu12==12.8.93
|
||||||
# via
|
# via
|
||||||
# nvidia-cufft-cu12
|
# nvidia-cufft-cu12
|
||||||
# nvidia-cusolver-cu12
|
# nvidia-cusolver-cu12
|
||||||
@@ -611,7 +611,7 @@ nvidia-nvjitlink-cu12==12.9.86
|
|||||||
# torch
|
# torch
|
||||||
nvidia-nvshmem-cu12==3.4.5
|
nvidia-nvshmem-cu12==3.4.5
|
||||||
# via torch
|
# via torch
|
||||||
nvidia-nvtx-cu12==12.9.79
|
nvidia-nvtx-cu12==12.8.90
|
||||||
# via torch
|
# via torch
|
||||||
omegaconf==2.3.0
|
omegaconf==2.3.0
|
||||||
# via
|
# via
|
||||||
@@ -1154,7 +1154,7 @@ tomli==2.2.1
|
|||||||
# via schemathesis
|
# via schemathesis
|
||||||
tomli-w==1.2.0
|
tomli-w==1.2.0
|
||||||
# via schemathesis
|
# via schemathesis
|
||||||
torch==2.10.0+cu129
|
torch==2.10.0+cu128
|
||||||
# via
|
# via
|
||||||
# -r requirements/test.in
|
# -r requirements/test.in
|
||||||
# accelerate
|
# accelerate
|
||||||
@@ -1179,7 +1179,7 @@ torch==2.10.0+cu129
|
|||||||
# torchvision
|
# torchvision
|
||||||
# vector-quantize-pytorch
|
# vector-quantize-pytorch
|
||||||
# vocos
|
# vocos
|
||||||
torchaudio==2.10.0+cu129
|
torchaudio==2.10.0+cu128
|
||||||
# via
|
# via
|
||||||
# -r requirements/test.in
|
# -r requirements/test.in
|
||||||
# encodec
|
# encodec
|
||||||
@@ -1192,7 +1192,7 @@ torchmetrics==1.7.4
|
|||||||
# pytorch-lightning
|
# pytorch-lightning
|
||||||
# terratorch
|
# terratorch
|
||||||
# torchgeo
|
# torchgeo
|
||||||
torchvision==0.25.0+cu129
|
torchvision==0.25.0+cu128
|
||||||
# via
|
# via
|
||||||
# -r requirements/test.in
|
# -r requirements/test.in
|
||||||
# lightly
|
# lightly
|
||||||
|
|||||||
Reference in New Issue
Block a user