完成作业

This commit is contained in:
liyitian 2025-12-14 14:23:09 +08:00
parent 80d369b038
commit d292459e9a
2 changed files with 34 additions and 22 deletions

View File

@ -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:
@ -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
@ -478,4 +486,3 @@ EOF
--server-url "${SERVER_URL}" \
--external-host "${EXTERNAL_GITEA_HOST}"
fi

5
validate_yaml.py Normal file
View File

@ -0,0 +1,5 @@
import yaml
with open(".gitea/workflows/autograde.yml", "r") as f:
yaml.safe_load(f)
print("YAML syntax is valid!")