mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2026-05-11 20:51:22 +08:00
[CI] add polling for precompiled wheel in python_only_compile.sh, fix index generation for releases (#30781)
Signed-off-by: Shengqi Chen <harry-chen@outlook.com>
This commit is contained in:
parent
bd6d5a7475
commit
2cf91c2ea4
@ -291,6 +291,7 @@ if __name__ == "__main__":
|
|||||||
"""
|
"""
|
||||||
Arguments:
|
Arguments:
|
||||||
--version <version> : version string for the current build (e.g., commit hash)
|
--version <version> : version string for the current build (e.g., commit hash)
|
||||||
|
--wheel-dir <wheel_directory> : directory containing wheel files (default to be same as `version`)
|
||||||
--current-objects <path_to_json> : path to JSON file containing current S3 objects listing in this version directory
|
--current-objects <path_to_json> : path to JSON file containing current S3 objects listing in this version directory
|
||||||
--output-dir <output_directory> : directory to store generated index files
|
--output-dir <output_directory> : directory to store generated index files
|
||||||
--alias-to-default <alias_variant_name> : (optional) alias variant name for the default variant
|
--alias-to-default <alias_variant_name> : (optional) alias variant name for the default variant
|
||||||
@ -318,6 +319,12 @@ if __name__ == "__main__":
|
|||||||
required=True,
|
required=True,
|
||||||
help="Directory to store generated index files",
|
help="Directory to store generated index files",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--wheel-dir",
|
||||||
|
type=str,
|
||||||
|
default=None,
|
||||||
|
help="Directory containing wheel files (default to be same as `version`)",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--alias-to-default",
|
"--alias-to-default",
|
||||||
type=str,
|
type=str,
|
||||||
@ -384,9 +391,10 @@ if __name__ == "__main__":
|
|||||||
print("Nightly version detected, keeping all wheel files.")
|
print("Nightly version detected, keeping all wheel files.")
|
||||||
|
|
||||||
# Generate index and metadata, assuming wheels and indices are stored as:
|
# Generate index and metadata, assuming wheels and indices are stored as:
|
||||||
# s3://vllm-wheels/{version}/<wheel files>
|
# s3://vllm-wheels/{wheel_dir}/<wheel files>
|
||||||
# s3://vllm-wheels/<anything>/<index files>
|
# s3://vllm-wheels/<anything>/<index files>
|
||||||
wheel_base_dir = Path(output_dir).parent / version
|
wheel_dir = args.wheel_dir or version
|
||||||
|
wheel_base_dir = Path(output_dir).parent / wheel_dir.strip().rstrip("/")
|
||||||
index_base_dir = Path(output_dir)
|
index_base_dir = Path(output_dir)
|
||||||
|
|
||||||
generate_index_and_metadata(
|
generate_index_and_metadata(
|
||||||
|
|||||||
@ -102,6 +102,7 @@ if [[ "$version" != *"dev"* ]]; then
|
|||||||
echo "Re-generating indices for /$pure_version/"
|
echo "Re-generating indices for /$pure_version/"
|
||||||
rm -rf "$INDICES_OUTPUT_DIR/*"
|
rm -rf "$INDICES_OUTPUT_DIR/*"
|
||||||
mkdir -p "$INDICES_OUTPUT_DIR"
|
mkdir -p "$INDICES_OUTPUT_DIR"
|
||||||
$PYTHON .buildkite/scripts/generate-nightly-index.py --version "$pure_version" --current-objects "$obj_json" --output-dir "$INDICES_OUTPUT_DIR" --comment "version $pure_version" $alias_arg
|
# wheel-dir is overridden to be the commit directory, so that the indices point to the correct wheel path
|
||||||
|
$PYTHON .buildkite/scripts/generate-nightly-index.py --version "$pure_version" --wheel-dir "$SUBPATH" --current-objects "$obj_json" --output-dir "$INDICES_OUTPUT_DIR" --comment "version $pure_version" $alias_arg
|
||||||
aws s3 cp --recursive "$INDICES_OUTPUT_DIR/" "s3://$BUCKET/$pure_version/"
|
aws s3 cp --recursive "$INDICES_OUTPUT_DIR/" "s3://$BUCKET/$pure_version/"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -18,25 +18,37 @@ for i in {1..5}; do
|
|||||||
echo "Checking metadata.json URL (attempt $i)..."
|
echo "Checking metadata.json URL (attempt $i)..."
|
||||||
if curl --fail "$meta_json_url" > metadata.json; then
|
if curl --fail "$meta_json_url" > metadata.json; then
|
||||||
echo "INFO: metadata.json URL is valid."
|
echo "INFO: metadata.json URL is valid."
|
||||||
# check whether it is valid json by python
|
# check whether it is valid json by python (printed to stdout)
|
||||||
if python3 -m json.tool metadata.json; then
|
if python3 -m json.tool metadata.json; then
|
||||||
echo "INFO: metadata.json is valid JSON. Proceeding with the test."
|
echo "INFO: metadata.json is valid JSON. Proceeding with the check."
|
||||||
|
# check whether there is an object in the json matching:
|
||||||
|
# "package_name": "vllm", and "platform_tag" matches the current architecture
|
||||||
|
# see `determine_wheel_url` in setup.py for more details
|
||||||
|
if python3 -c "import platform as p,json as j,sys as s; d = j.load(open('metadata.json')); \
|
||||||
|
s.exit(int(not any(o.get('package_name') == 'vllm' and p.machine() in o.get('platform_tag') \
|
||||||
|
for o in d)))" 2>/dev/null; then
|
||||||
|
echo "INFO: metadata.json contains a pre-compiled wheel for the current architecture."
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo "WARN: metadata.json does not have a pre-compiled wheel for the current architecture."
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "CRITICAL: metadata.json exists but is not valid JSON, please do report in #sig-ci channel!"
|
echo "CRITICAL: metadata.json exists but is not valid JSON, please do report in #sig-ci channel!"
|
||||||
|
echo "INFO: metadata.json content:"
|
||||||
|
cat metadata.json
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
break
|
|
||||||
fi
|
fi
|
||||||
# failure handling
|
# failure handling & retry logic
|
||||||
if [ $i -eq 5 ]; then
|
if [ $i -eq 5 ]; then
|
||||||
echo "ERROR: metadata.json URL is still not valid after 5 attempts."
|
echo "ERROR: metadata is still not available after 5 attempts."
|
||||||
echo "ERROR: Please check whether the precompiled wheel for commit $merge_base_commit exists."
|
echo "ERROR: Please check whether the precompiled wheel for commit $merge_base_commit is available."
|
||||||
echo " NOTE: If $merge_base_commit is a new commit on main, maybe try again after its release pipeline finishes."
|
echo " NOTE: If $merge_base_commit is a new commit on main, maybe try again after its release pipeline finishes."
|
||||||
echo " NOTE: If it fails, please report in #sig-ci channel."
|
echo " NOTE: If it fails, please report in #sig-ci channel."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "WARNING: metadata.json URL is not valid. Retrying in 3 minutes..."
|
echo "WARNING: metadata is not available. Retrying after 5 minutes..."
|
||||||
sleep 180
|
sleep 300
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user