Compare commits
No commits in common. "main" and "submit" have entirely different histories.
@ -33,7 +33,7 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "trigger=false" >> $GITHUB_OUTPUT
|
echo "trigger=false" >> $GITHUB_OUTPUT
|
||||||
echo "⛔ 只有包含“完成作业”的提交才会执行自动评分" >&2
|
echo "⛔ 只有包含“完成作业”的提交才会执行自动评分" >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
grade:
|
grade:
|
||||||
needs: check-trigger
|
needs: check-trigger
|
||||||
@ -63,7 +63,7 @@ jobs:
|
|||||||
pip3 install --break-system-packages python-dotenv requests markdown weasyprint -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
|
pip3 install --break-system-packages python-dotenv requests markdown weasyprint -i https://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
|
||||||
# 刷新字体缓存
|
# 刷新字体缓存
|
||||||
fc-cache -f -v > /dev/null 2>&1 || true
|
fc-cache -f -v > /dev/null 2>&1 || true
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
- name: Configure Gradle mirror (Aliyun)
|
- name: Configure Gradle mirror (Aliyun)
|
||||||
run: |
|
run: |
|
||||||
@ -80,7 +80,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
echo "✅ Gradle configured to use Aliyun mirror"
|
echo "✅ Gradle configured to use Aliyun mirror"
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
env:
|
env:
|
||||||
@ -93,7 +93,7 @@ jobs:
|
|||||||
AUTH_URL=$(echo "$REPO_URL" | sed "s|://|://${GITHUB_TOKEN}@|")
|
AUTH_URL=$(echo "$REPO_URL" | sed "s|://|://${GITHUB_TOKEN}@|")
|
||||||
git remote add origin "$AUTH_URL"
|
git remote add origin "$AUTH_URL"
|
||||||
git fetch --depth=1 origin ${{ github.sha }}
|
git fetch --depth=1 origin ${{ github.sha }}
|
||||||
git checkout ${{ github.sha }}
|
git checkout ${{ github.sha }}
|
||||||
|
|
||||||
- name: Fix permissions
|
- name: Fix permissions
|
||||||
run: chown -R $(whoami):$(whoami) ${{ github.workspace }} || true
|
run: chown -R $(whoami):$(whoami) ${{ github.workspace }} || true
|
||||||
@ -177,7 +177,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Cleanup
|
# Cleanup
|
||||||
rm -rf _priv_tests
|
rm -rf _priv_tests
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -190,7 +190,7 @@ jobs:
|
|||||||
# Also try to get a single combined report
|
# Also try to get a single combined report
|
||||||
if [ -f build/test-results/test/TEST-*.xml ]; then
|
if [ -f build/test-results/test/TEST-*.xml ]; then
|
||||||
cp build/test-results/test/TEST-*.xml junit.xml 2>/dev/null || true
|
cp build/test-results/test/TEST-*.xml junit.xml 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Grade programming tests
|
- name: Grade programming tests
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -200,7 +200,7 @@ jobs:
|
|||||||
--junit-dir build/test-results/test \
|
--junit-dir build/test-results/test \
|
||||||
--groups test_groups.json \
|
--groups test_groups.json \
|
||||||
--out grade.json \
|
--out grade.json \
|
||||||
--summary summary.md
|
--summary summary.md
|
||||||
|
|
||||||
- name: Grade REPORT.md
|
- name: Grade REPORT.md
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -217,7 +217,7 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo '{"total": 0, "flags": ["missing_file"]}' > report_grade.json
|
echo '{"total": 0, "flags": ["missing_file"]}' > report_grade.json
|
||||||
echo "⚠️ REPORT.md or rubric not found"
|
echo "⚠️ REPORT.md or rubric not found"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Grade FRONTEND.md
|
- name: Grade FRONTEND.md
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -234,7 +234,7 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo '{"total": 0, "flags": ["missing_file"]}' > frontend_grade.json
|
echo '{"total": 0, "flags": ["missing_file"]}' > frontend_grade.json
|
||||||
echo "⚠️ FRONTEND.md or rubric not found"
|
echo "⚠️ FRONTEND.md or rubric not found"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Aggregate grades
|
- name: Aggregate grades
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -244,7 +244,7 @@ jobs:
|
|||||||
--report report_grade.json \
|
--report report_grade.json \
|
||||||
--frontend frontend_grade.json \
|
--frontend frontend_grade.json \
|
||||||
--out final_grade.json \
|
--out final_grade.json \
|
||||||
--summary final_summary.md
|
--summary final_summary.md
|
||||||
|
|
||||||
- name: Generate PDF report
|
- name: Generate PDF report
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -279,7 +279,7 @@ jobs:
|
|||||||
--student-name "$STUDENT_NAME" \
|
--student-name "$STUDENT_NAME" \
|
||||||
--class-name "$CLASS_NAME" \
|
--class-name "$CLASS_NAME" \
|
||||||
--commit-sha "$COMMIT_SHA"
|
--commit-sha "$COMMIT_SHA"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload report to student repo
|
- name: Upload report to student repo
|
||||||
if: env.RUNNER_METADATA_TOKEN != ''
|
if: env.RUNNER_METADATA_TOKEN != ''
|
||||||
@ -350,7 +350,7 @@ jobs:
|
|||||||
|
|
||||||
# 清理临时文件
|
# 清理临时文件
|
||||||
rm -f /tmp/upload_request.json
|
rm -f /tmp/upload_request.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Create metadata
|
- name: Create metadata
|
||||||
working-directory: ${{ github.workspace }}
|
working-directory: ${{ github.workspace }}
|
||||||
@ -360,7 +360,7 @@ jobs:
|
|||||||
if [ -f final_grade.json ]; then
|
if [ -f final_grade.json ]; then
|
||||||
export GRADE_TYPE=final
|
export GRADE_TYPE=final
|
||||||
python3 ./.autograde/create_minimal_metadata.py > metadata.json || echo "{}" > metadata.json
|
python3 ./.autograde/create_minimal_metadata.py > metadata.json || echo "{}" > metadata.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload metadata
|
- name: Upload metadata
|
||||||
if: env.RUNNER_METADATA_TOKEN != ''
|
if: env.RUNNER_METADATA_TOKEN != ''
|
||||||
@ -386,4 +386,5 @@ jobs:
|
|||||||
--workflow grade \
|
--workflow grade \
|
||||||
--server-url "${SERVER_URL}" \
|
--server-url "${SERVER_URL}" \
|
||||||
--external-host "${EXTERNAL_GITEA_HOST}"
|
--external-host "${EXTERNAL_GITEA_HOST}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@ -16,9 +16,6 @@ java {
|
|||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven { url = uri("https://maven.aliyun.com/repository/public") }
|
maven { url = uri("https://maven.aliyun.com/repository/public") }
|
||||||
maven { url = uri("https://maven.aliyun.com/repository/central") }
|
|
||||||
maven { url = uri("https://maven.aliyun.com/repository/spring") }
|
|
||||||
maven { url = uri("https://maven.aliyun.com/repository/spring-plugin") }
|
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,9 +50,5 @@ tasks.withType<Test> {
|
|||||||
reports {
|
reports {
|
||||||
junitXml.required.set(true)
|
junitXml.required.set(true)
|
||||||
}
|
}
|
||||||
// Simplified configuration for Java 21 compatibility
|
|
||||||
enableAssertions = true
|
|
||||||
// Increase memory for tests
|
|
||||||
jvmArgs = listOf("-Xmx1024m", "-XX:+UseG1GC")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,8 @@
|
|||||||
# Disable Gradle Daemon
|
# Gradle settings
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=true
|
||||||
|
org.gradle.parallel=true
|
||||||
|
org.gradle.caching=true
|
||||||
|
|
||||||
# Disable parallel execution
|
# JDK 21 path - modify this to your actual installation path
|
||||||
org.gradle.parallel=false
|
org.gradle.java.home=F:/OpenJDK21U-jdk_x64_windows_hotspot/jdk-21.0.9.10-hotspot
|
||||||
|
|
||||||
# Disable configuration on demand
|
|
||||||
org.gradle.configureondemand=false
|
|
||||||
|
|
||||||
# Fix for Java 21 compatibility
|
|
||||||
org.gradle.jvmargs=-Xmx1024m -XX:+UseG1GC
|
|
||||||
|
|||||||
@ -3,12 +3,12 @@ package com.vibevault.model;
|
|||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 姝屾洸瀹炰綋绫?
|
* 歌曲实体类
|
||||||
*
|
*
|
||||||
* 闇€瑕佸疄鐜帮細
|
* 需要实现:
|
||||||
* - 灏嗘绫绘槧灏勪负鏁版嵁搴撹〃 "songs"
|
* - 将此类映射为数据库表 "songs"
|
||||||
* - id 浣滀负鑷涓婚敭
|
* - id 作为自增主键
|
||||||
* - 姣忛姝屾洸灞炰簬涓€涓瓕鍗曪紙澶氬涓€鍏崇郴锛?
|
* - 每首歌曲属于一个歌单(多对一关系)
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "songs")
|
@Table(name = "songs")
|
||||||
@ -18,13 +18,10 @@ public class Song {
|
|||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
private String artist;
|
private String artist;
|
||||||
|
|
||||||
@Column(nullable = false)
|
|
||||||
private int durationInSeconds;
|
private int durationInSeconds;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@ -63,4 +60,4 @@ public class Song {
|
|||||||
public void setPlaylist(Playlist playlist) {
|
public void setPlaylist(Playlist playlist) {
|
||||||
this.playlist = playlist;
|
this.playlist = playlist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user