name: 类变更检测 run-name: ${{ gitea.actor }}的类变更检测 on: [push] jobs: class-change-check: if: ${{ gitea.ref != 'refs/heads/pre' && gitea.ref != 'refs/heads/dev' && gitea.ref != 'refs/heads/master-2.0' }} runs-on: ubuntu-latest steps: - name: 检出代码 run: | git config --global http.sslVerify false git clone "https://${{ gitea.token }}@git.niujiekeji.com/${{ gitea.repository }}.git" . git checkout ${{ gitea.sha }} echo "当前提交: $(git rev-parse HEAD)" echo "上一提交: $(git rev-parse HEAD~1 2>/dev/null || echo '无')" - name: 检查配置文件 run: | if [ ! -f .gitea/config.yaml ]; then echo "错误: 缺少 .gitea/config.yaml" exit 1 fi - name: 安装 JDK 和 Maven run: | if ! command -v java >/dev/null 2>&1; then apt-get update -qq apt-get install -y openjdk-11-jdk fi if ! command -v mvn >/dev/null 2>&1; then apt-get update -qq apt-get install -y maven fi echo "Java: $(java -version 2>&1 | head -1)" echo "Maven: $(mvn -version 2>&1 | head -1)" - name: 编译检测工具 run: mvn -q -f .gitea/class-checker/pom.xml package -DskipTests - name: 执行类变更检测 run: | OLD_SHA=$(git rev-parse HEAD~1 2>/dev/null || echo "") if [ -z "$OLD_SHA" ]; then echo "首次提交,跳过类变更检测" exit 0 fi COMMIT_TIME=$(git log -1 --format=%cd --date=format:'%Y-%m-%d %H:%M:%S') java -jar .gitea/class-checker/target/class-checker.jar \ --config .gitea/config.yaml \ --repo-root . \ --old-sha "$OLD_SHA" \ --new-sha "$(git rev-parse HEAD)" \ --modifier "${{ gitea.actor }}" \ --modify-time "$COMMIT_TIME"