From d292459e9a4c87d12cbf689ac491457a9898ec0d Mon Sep 17 00:00:00 2001 From: liyitian <2717355959@qq.com> Date: Sun, 14 Dec 2025 14:23:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/autograde.yml | 51 +++++++++++++++++++--------------- validate_yaml.py | 5 ++++ 2 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 validate_yaml.py diff --git a/.gitea/workflows/autograde.yml b/.gitea/workflows/autograde.yml index 7cdb19d..2cdad4b 100644 --- a/.gitea/workflows/autograde.yml +++ b/.gitea/workflows/autograde.yml @@ -14,7 +14,7 @@ permissions: pull-requests: write jobs: - # 检查是否应该触发 CI(仅在 commit message 包含 “完成作业” 时执行) + # 检查是否应该触发 CI(仅在 commit message 包含 "完成作业" 时执行) check-trigger: runs-on: docker container: @@ -32,7 +32,7 @@ jobs: echo "✅ Commit contains \"完成作业\",即将执行评分" else echo "trigger=false" >> $GITHUB_OUTPUT - echo "⛔ 只有包含“完成作业”的提交才会执行自动评分" >&2 + echo "⛔ 只有包含"完成作业"的提交才会执行自动评分" >&2 fi grade: @@ -69,17 +69,17 @@ jobs: run: | mkdir -p ~/.gradle cat > ~/.gradle/init.gradle << 'EOF' - allprojects { - repositories { - mavenLocal() - maven { url 'https://maven.aliyun.com/repository/public' } - maven { url 'https://maven.aliyun.com/repository/spring' } - maven { url 'https://maven.aliyun.com/repository/spring-plugin' } - maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } - mavenCentral() - } - } - EOF +allprojects { + repositories { + mavenLocal() + maven { url 'https://maven.aliyun.com/repository/public' } + maven { url 'https://maven.aliyun.com/repository/spring' } + maven { url 'https://maven.aliyun.com/repository/spring-plugin' } + maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } + mavenCentral() + } +} +EOF echo "✅ Gradle configured to use Aliyun mirror" - name: Checkout code @@ -134,29 +134,33 @@ jobs: # Proceed with fetching from external repo if local scripts not found GITEA_TOKEN="${{ secrets.GITEA_TOKEN }}" - # Resolve Gitea Host + # Resolve Gitea Host - 修复关键部分开始 if [ -n "$EXTERNAL_GITEA_HOST" ]; then HOST="$EXTERNAL_GITEA_HOST" elif [ -n "$GITEA_ROOT_URL" ]; then HOST=$(echo "$GITEA_ROOT_URL" | sed 's|https\?://||' | sed 's|/$||') else - HOST=$(echo "${{ github.server_url }}" | sed 's|https\?://||' | cut -d'/' -f1) + # 直接指定正确的 Gitea 服务器地址和端口 + HOST="49.234.193.192:3000" fi ORG=$(echo "${{ github.repository }}" | cut -d'/' -f1) REPO_NAME=$(echo "${{ github.repository }}" | cut -d'/' -f2) - # Extract assignment ID + # Extract assignment ID - 确保拼写正确 if echo "$REPO_NAME" | grep -q -- '-stu_'; then ASSIGNMENT_ID=$(echo "$REPO_NAME" | sed 's/-stu_.*//') elif echo "$REPO_NAME" | grep -q -- '-template'; then ASSIGNMENT_ID=$(echo "$REPO_NAME" | sed 's/-template.*//') else + # 使用正确的作业ID ASSIGNMENT_ID="final-vibevault" fi - # Try different test repo naming conventions - TEST_REPO_NAMES=("${ASSIGNMENT_ID}-tests" "tests-${ASSIGNMENT_ID}" "grading-${ASSIGNMENT_ID}") + # 直接使用正确的测试仓库名(修复拼写错误) + TEST_REPO_NAMES=("final-vibevault-tests" "${ASSIGNMENT_ID}-tests" "tests-${ASSIGNMENT_ID}" "grading-${ASSIGNMENT_ID}") + + echo "🔍 Looking for test repos at host: $HOST, org: $ORG" for TEST_REPO in "${TEST_REPO_NAMES[@]}"; do echo "📥 Trying to fetch from ${ORG}/${TEST_REPO}..." @@ -170,6 +174,8 @@ jobs: echo "Using no authentication..." fi + echo "Clone URL: $AUTH_URL" + if git -c http.sslVerify=false clone --depth=1 "$AUTH_URL" _priv_tests 2>&1; then echo "✅ Successfully fetched hidden tests and grading scripts from ${ORG}/${TEST_REPO}" @@ -213,6 +219,8 @@ jobs: if [ $SUCCESS -eq 1 ]; then exit 0 fi + else + echo "❌ Failed to clone ${ORG}/${TEST_REPO}" fi done @@ -230,7 +238,7 @@ jobs: mkdir -p .autograde # Create minimal grade_grouped.py script - cat > .autograde/grade_grouped.py <<- 'EOF' + cat > .autograde/grade_grouped.py << 'EOF' import json import sys import argparse @@ -399,7 +407,7 @@ EOF CONTENT=$(base64 -w 0 "$REPORT_FILE") # 创建请求 JSON 文件 - cat > /tmp/upload_request.json << EOF + cat > /tmp/upload_request.json << EOF {"message": "Add grade report for $SHORT_SHA", "content": "$CONTENT"} EOF @@ -477,5 +485,4 @@ EOF --workflow grade \ --server-url "${SERVER_URL}" \ --external-host "${EXTERNAL_GITEA_HOST}" - fi - + fi \ No newline at end of file diff --git a/validate_yaml.py b/validate_yaml.py new file mode 100644 index 0000000..c2dd7ae --- /dev/null +++ b/validate_yaml.py @@ -0,0 +1,5 @@ +import yaml + +with open(".gitea/workflows/autograde.yml", "r") as f: + yaml.safe_load(f) + print("YAML syntax is valid!")