generated from Java-2025Fall/final-vibevault-template
完成作业
This commit is contained in:
parent
80d369b038
commit
d292459e9a
@ -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
|
||||
5
validate_yaml.py
Normal file
5
validate_yaml.py
Normal 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!")
|
||||
Loading…
Reference in New Issue
Block a user