Cấu hình Judge
Judge được cấu hình thông qua file YAML, chứa thông tin về ngôn ngữ lập trình, thư mục bài tập và các thiết lập khác.
File cấu hình mẫu: judge_conf.yml
Cấu trúc file cấu hình
ID - Tên judge
Tên hiển thị của judge, phải trùng với tên đã tạo trên website:
id: judge1Key - Mã xác thực
Mã bảo mật để judge kết nối với bridge, phải trùng với mã trên website:
key: your_secret_key_hereProblem Storage - Thư mục bài tập
Danh sách các thư mục chứa bài tập. Mỗi thư mục bài tập phải có file init.yml:
problem_storage_globs:
- /problems/*
- /problems/archive/**Ví dụ:
/problems/*- Tìm tất cả thư mục con trực tiếp trong/problems- Khớp:
/problems/bai1,/problems/bai2 - Không khớp:
/problems/folder/bai3
- Khớp:
/problems/archive/**- Tìm tất cả thư mục con (bao gồm thư mục lồng nhau)- Khớp:
/problems/archive/2023/bai1,/problems/archive/bai2
- Khớp:
/problems/year20[0-9][0-9]- Tìm thư mục theo pattern- Khớp:
/problems/year2023,/problems/year2024
- Khớp:
Runtimes - Ngôn ngữ lập trình
Cấu hình các ngôn ngữ lập trình được hỗ trợ:
runtime:
python3: /usr/bin/python3
gcc: /usr/bin/gcc
g++: /usr/bin/g++Lưu ý:
- Hầu hết ngôn ngữ được tự động phát hiện bằng lệnh
dmoj-autoconf - Chỉ cần cấu hình thủ công nếu chương trình không nằm trong
$PATH
File cấu hình đầy đủ
Ví dụ file judge.yml hoàn chỉnh:
id: judge1
key: my_secret_authentication_key
problem_storage_globs:
- /problems/*
runtime:
python3: /usr/bin/python3
python2: /usr/bin/python2
gcc: /usr/bin/gcc
g++: /usr/bin/g++
java: /usr/bin/javaTự động phát hiện ngôn ngữ
Để tự động phát hiện các ngôn ngữ có sẵn trên hệ thống:
dmoj-autoconf > judge.ymlSau đó chỉnh sửa file judge.yml để thêm id, key và problem_storage_globs.
Kiểm tra cấu hình
Sau khi chỉnh sửa file cấu hình, khởi động lại judge:
docker restart judgeKiểm tra log để đảm bảo không có lỗi:
docker logs judge