#!/bin/bash
set -e
set -o pipefail
set +x
echo "================================================"
echo " Pre-Commit CI 增量检查"
echo "================================================"
exit 0
PRE_COMMIT_CONFIG_YAML=".pre-commit-config.yaml"
if [ ! -f ${PRE_COMMIT_CONFIG_YAML} ]; then
echo "[SUCCESS] 未找到${PRE_COMMIT_CONFIG_YAML},检查终止"
exit 0
fi
echo -e "\n[INFO] 获取变更文件列表"
FILES_ARR=($(git diff --name-only --diff-filter=ACMR ${BEFORE_MERGE} HEAD | (grep '^src/' || true) |sort -u))
if [ ${#FILES_ARR[@]} -eq 0 ]; then
echo "[INFO] 无变更文件,检查通过"
exit 0
fi
echo -e "\n[INFO] 变更文件数量: ${#FILES_ARR[@]}"
echo "[INFO] 变更文件列表:"
for f in "${FILES_ARR[@]}"; do echo " $f"; done
echo -e "\n[INFO] 安装 pre-commit"
pip config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple
pip config set global.trusted-host repo.huaweicloud.com
pip install pre-commit
export PATH="/home/jenkins/.local/bin:$PATH"
pre-commit --version
pre-commit install --install-hooks
echo -e "\n[INFO] 开始 pre-commit 检查"
echo "[COMMAND] pre-commit run --files ${FILES_ARR[*]}"
set +e
pre-commit run --show-diff-on-failure --files "${FILES_ARR[@]}"
CODE=$?
set -e
echo -e "\n================================================================"
if [ ${CODE} -eq 0 ]; then
echo "[INFO] pre-commit 检查全部通过"
else
echo "[ERROR] pre-commit 检查失败"
echo "[INFO] 请在本地执行以下命令修复后重新提交:"
echo ""
echo "1. 安装/初始化环境"
echo "pip install pre-commit && pre-commit install --install-hooks"
echo ""
echo "2. 检查并修复变更文件"
echo "pre-commit run --files ${FILES_ARR[*]}"
fi
echo "================================================================"
exit ${CODE}