mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-06 00:57:33 +08:00
Optimize CI execution workflow (#3371)
* Optimize CI execution workflow * fix
This commit is contained in:
37
.github/workflows/_base_test.yml
vendored
37
.github/workflows/_base_test.yml
vendored
@@ -71,18 +71,14 @@ jobs:
|
|||||||
MODEL_CACHE_DIR: ${{ inputs.MODEL_CACHE_DIR }}
|
MODEL_CACHE_DIR: ${{ inputs.MODEL_CACHE_DIR }}
|
||||||
run: |
|
run: |
|
||||||
runner_name="${{ runner.name }}"
|
runner_name="${{ runner.name }}"
|
||||||
last_char="${runner_name: -1}"
|
CARD_ID=$(echo "${runner_name}" | awk -F'-' '{print $NF}')
|
||||||
|
DEVICES=$(echo "$CARD_ID" | fold -w1 | paste -sd,)
|
||||||
|
DEVICE_PORT=$(echo "$DEVICES" | cut -d',' -f1)
|
||||||
|
|
||||||
if [[ "$last_char" =~ [0-7] ]]; then
|
FLASK_PORT=$((42068 + DEVICE_PORT * 100))
|
||||||
DEVICES="$last_char"
|
FD_API_PORT=$((42088 + DEVICE_PORT * 100))
|
||||||
else
|
FD_ENGINE_QUEUE_PORT=$((42058 + DEVICE_PORT * 100))
|
||||||
DEVICES="0"
|
FD_METRICS_PORT=$((42078 + DEVICE_PORT * 100))
|
||||||
fi
|
|
||||||
|
|
||||||
FLASK_PORT=$((42068 + DEVICES * 100))
|
|
||||||
FD_API_PORT=$((42088 + DEVICES * 100))
|
|
||||||
FD_ENGINE_QUEUE_PORT=$((42058 + DEVICES * 100))
|
|
||||||
FD_METRICS_PORT=$((42078 + DEVICES * 100))
|
|
||||||
echo "Test ENV Parameter:"
|
echo "Test ENV Parameter:"
|
||||||
echo "========================================================="
|
echo "========================================================="
|
||||||
echo "FLASK_PORT=${FLASK_PORT}"
|
echo "FLASK_PORT=${FLASK_PORT}"
|
||||||
@@ -102,7 +98,24 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PARENT_DIR=$(dirname "$WORKSPACE")
|
PORTS=($FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT)
|
||||||
|
LOG_FILE="./port_cleanup_$(date +%Y%m%d_%H%M%S).log"
|
||||||
|
echo "==== LOG_FILE is ${LOG_FILE} ===="
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN BEFORE TASK RUN ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
|
for port in "${PORTS[@]}"; do
|
||||||
|
PIDS=$(lsof -t -i :$port || true)
|
||||||
|
if [ -n "$PIDS" ]; then
|
||||||
|
echo "Port $port is occupied by PID(s): $PIDS" | tee -a $LOG_FILE
|
||||||
|
echo "$PIDS" | xargs -r kill -9
|
||||||
|
echo "Port $port cleared" | tee -a $LOG_FILE
|
||||||
|
else
|
||||||
|
echo "Port $port is free" | tee -a $LOG_FILE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN COMPLETE ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
docker run --rm --ipc=host --pid=host --net=host \
|
docker run --rm --ipc=host --pid=host --net=host \
|
||||||
-v $(pwd):/workspace \
|
-v $(pwd):/workspace \
|
||||||
|
39
.github/workflows/_logprob_test_linux.yml
vendored
39
.github/workflows/_logprob_test_linux.yml
vendored
@@ -62,18 +62,14 @@ jobs:
|
|||||||
MODEL_CACHE_DIR: ${{ inputs.MODEL_CACHE_DIR }}
|
MODEL_CACHE_DIR: ${{ inputs.MODEL_CACHE_DIR }}
|
||||||
run: |
|
run: |
|
||||||
runner_name="${{ runner.name }}"
|
runner_name="${{ runner.name }}"
|
||||||
last_char="${runner_name: -1}"
|
CARD_ID=$(echo "${runner_name}" | awk -F'-' '{print $NF}')
|
||||||
|
DEVICES=$(echo "$CARD_ID" | fold -w1 | paste -sd,)
|
||||||
|
DEVICE_PORT=$(echo "$DEVICES" | cut -d',' -f1)
|
||||||
|
|
||||||
if [[ "$last_char" =~ [0-7] ]]; then
|
FLASK_PORT=$((42068 + DEVICE_PORT * 100))
|
||||||
DEVICES="$last_char"
|
FD_API_PORT=$((42088 + DEVICE_PORT * 100))
|
||||||
else
|
FD_ENGINE_QUEUE_PORT=$((42058 + DEVICE_PORT * 100))
|
||||||
DEVICES="0"
|
FD_METRICS_PORT=$((42078 + DEVICE_PORT * 100))
|
||||||
fi
|
|
||||||
|
|
||||||
FLASK_PORT=$((42068 + DEVICES * 100))
|
|
||||||
FD_API_PORT=$((42088 + DEVICES * 100))
|
|
||||||
FD_ENGINE_QUEUE_PORT=$((42058 + DEVICES * 100))
|
|
||||||
FD_METRICS_PORT=$((42078 + DEVICES * 100))
|
|
||||||
echo "Test ENV Parameter:"
|
echo "Test ENV Parameter:"
|
||||||
echo "========================================================="
|
echo "========================================================="
|
||||||
echo "FLASK_PORT=${FLASK_PORT}"
|
echo "FLASK_PORT=${FLASK_PORT}"
|
||||||
@@ -93,9 +89,24 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PARENT_DIR=$(dirname "$WORKSPACE")
|
PORTS=($FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT)
|
||||||
unset http_proxy
|
LOG_FILE="./port_cleanup_$(date +%Y%m%d_%H%M%S).log"
|
||||||
unset https_proxy
|
echo "==== LOG_FILE is ${LOG_FILE} ===="
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN BEFORE TASK RUN ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
|
for port in "${PORTS[@]}"; do
|
||||||
|
PIDS=$(lsof -t -i :$port || true)
|
||||||
|
if [ -n "$PIDS" ]; then
|
||||||
|
echo "Port $port is occupied by PID(s): $PIDS" | tee -a $LOG_FILE
|
||||||
|
echo "$PIDS" | xargs -r kill -9
|
||||||
|
echo "Port $port cleared" | tee -a $LOG_FILE
|
||||||
|
else
|
||||||
|
echo "Port $port is free" | tee -a $LOG_FILE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN COMPLETE ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
docker run --rm --ipc=host --pid=host --net=host \
|
docker run --rm --ipc=host --pid=host --net=host \
|
||||||
-v $(pwd):/workspace \
|
-v $(pwd):/workspace \
|
||||||
|
22
.github/workflows/_pre_ce_test.yml
vendored
22
.github/workflows/_pre_ce_test.yml
vendored
@@ -99,6 +99,25 @@ jobs:
|
|||||||
touch "${CACHE_DIR}/gitconfig"
|
touch "${CACHE_DIR}/gitconfig"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
PORTS=($FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT)
|
||||||
|
LOG_FILE="./port_cleanup_$(date +%Y%m%d_%H%M%S).log"
|
||||||
|
echo "==== LOG_FILE is ${LOG_FILE} ===="
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN BEFORE TASK RUN ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
|
for port in "${PORTS[@]}"; do
|
||||||
|
PIDS=$(lsof -t -i :$port || true)
|
||||||
|
if [ -n "$PIDS" ]; then
|
||||||
|
echo "Port $port is occupied by PID(s): $PIDS" | tee -a $LOG_FILE
|
||||||
|
echo "$PIDS" | xargs -r kill -9
|
||||||
|
echo "Port $port cleared" | tee -a $LOG_FILE
|
||||||
|
else
|
||||||
|
echo "Port $port is free" | tee -a $LOG_FILE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN COMPLETE ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
docker run --rm --net=host -v $(pwd):/workspace -w /workspace \
|
docker run --rm --net=host -v $(pwd):/workspace -w /workspace \
|
||||||
-v "${CACHE_DIR}/gitconfig:/etc/gitconfig:ro" \
|
-v "${CACHE_DIR}/gitconfig:/etc/gitconfig:ro" \
|
||||||
-v "${CACHE_DIR}/.cache:/root/.cache" \
|
-v "${CACHE_DIR}/.cache:/root/.cache" \
|
||||||
@@ -115,8 +134,5 @@ jobs:
|
|||||||
cd FastDeploy
|
cd FastDeploy
|
||||||
python -m pip install --pre paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/nightly/cu126/
|
python -m pip install --pre paddlepaddle-gpu -i https://www.paddlepaddle.org.cn/packages/nightly/cu126/
|
||||||
python -m pip install ${fd_wheel_url}
|
python -m pip install ${fd_wheel_url}
|
||||||
for port in $FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT; do
|
|
||||||
lsof -t -i :$port | xargs -r kill -9 || true
|
|
||||||
done
|
|
||||||
bash scripts/run_pre_ce.sh
|
bash scripts/run_pre_ce.sh
|
||||||
'
|
'
|
||||||
|
24
.github/workflows/_unit_test_coverage.yml
vendored
24
.github/workflows/_unit_test_coverage.yml
vendored
@@ -98,10 +98,28 @@ jobs:
|
|||||||
if [ ! -f "${CACHE_DIR}/gitconfig" ]; then
|
if [ ! -f "${CACHE_DIR}/gitconfig" ]; then
|
||||||
touch "${CACHE_DIR}/gitconfig"
|
touch "${CACHE_DIR}/gitconfig"
|
||||||
fi
|
fi
|
||||||
PARENT_DIR=$(dirname "$WORKSPACE")
|
|
||||||
echo "PARENT_DIR:$PARENT_DIR"
|
PORTS=($FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT)
|
||||||
|
LOG_FILE="./port_cleanup_$(date +%Y%m%d_%H%M%S).log"
|
||||||
|
echo "==== LOG_FILE is ${LOG_FILE} ===="
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN BEFORE TASK RUN ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
|
for port in "${PORTS[@]}"; do
|
||||||
|
PIDS=$(lsof -t -i :$port || true)
|
||||||
|
if [ -n "$PIDS" ]; then
|
||||||
|
echo "Port $port is occupied by PID(s): $PIDS" | tee -a $LOG_FILE
|
||||||
|
echo "$PIDS" | xargs -r kill -9
|
||||||
|
echo "Port $port cleared" | tee -a $LOG_FILE
|
||||||
|
else
|
||||||
|
echo "Port $port is free" | tee -a $LOG_FILE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "==== PORT CLEAN COMPLETE ====" | tee -a $LOG_FILE
|
||||||
|
|
||||||
docker run --rm --net=host \
|
docker run --rm --net=host \
|
||||||
--cap-add=SYS_PTRACE --privileged --shm-size=64G \
|
--cap-add=SYS_PTRACE --shm-size=64G \
|
||||||
-v $(pwd):/workspace -w /workspace \
|
-v $(pwd):/workspace -w /workspace \
|
||||||
-v "${CACHE_DIR}/gitconfig:/etc/gitconfig:ro" \
|
-v "${CACHE_DIR}/gitconfig:/etc/gitconfig:ro" \
|
||||||
-v "${CACHE_DIR}/.cache:/root/.cache" \
|
-v "${CACHE_DIR}/.cache:/root/.cache" \
|
||||||
|
@@ -65,11 +65,25 @@ for dir in "${dirs[@]}"; do
|
|||||||
echo "Skipping disabled test: $test_file"
|
echo "Skipping disabled test: $test_file"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
# TODO: Add a framework to manage unit test execution time
|
||||||
python -m coverage run "$test_file"
|
timeout 600 python -m coverage run "$test_file"
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "$test_file" >> "$failed_tests_file"
|
echo "$test_file" >> "$failed_tests_file"
|
||||||
fail=$((fail + 1))
|
fail=$((fail + 1))
|
||||||
|
|
||||||
|
PORTS=($FLASK_PORT $FD_API_PORT $FD_ENGINE_QUEUE_PORT $FD_METRICS_PORT)
|
||||||
|
echo "==== PORT CLEAN AFTER UT FAILED ===="
|
||||||
|
|
||||||
|
for port in "${PORTS[@]}"; do
|
||||||
|
PIDS=$(lsof -t -i :$port)
|
||||||
|
if [ -n "$PIDS" ]; then
|
||||||
|
echo "Port $port is occupied by PID(s): $PIDS"
|
||||||
|
echo "$PIDS" | xargs -r kill -9
|
||||||
|
echo "Port $port cleared"
|
||||||
|
else
|
||||||
|
echo "Port $port is free"
|
||||||
|
fi
|
||||||
|
done
|
||||||
else
|
else
|
||||||
success=$((success + 1))
|
success=$((success + 1))
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user