koba-e964 / library-checker-judge

Home Page:https://judge.yosupo.jp/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Library Checker Judge

Judge server / API server のソースコードです

Requirements

  • docker
  • Ubuntu 22.04(Judge Server)

API Server

準備

dockerグループに自分を登録することでsudoなしでdockerが使えるようになる Reference sudoをつけて実行してもいいが、色んなところにrootでフォルダが作られて面倒な事になるので、非推奨

sudo gpasswd -a $USER docker
sudo systemctl restart docker

APIサーバー(localhost:50051)とSQL(Postgre SQL)がdocker-composeで立ち上がり、aplusb, unionfindがデプロイされる。

APIサーバーへは gRPC でアクセスします。例えばクライアントとして evans を使うなら、以下のようにアクセス

起動

./launch_local.sh

launch_local.sh は default だと aplusb しかデプロイしないので、必要ならば deploy/problems_deploy.py も叩くとよい。

動作確認

grpc-web のAPIサーバーが建つ

evans --host localhost --port 18080 api/proto/library_checker.proto --web

Judge Server

Judge serverはgoで書かれたAPIサーバーと通信するクライアント(/judge)と、このクライアントが呼び出す軽量コンテナ(/executor)からなる。

準備

sudo apt install postgresql-client libpq-dev python3 python3-dev python3-pip g++ cgroup-tools libcap2-bin
pip3 install termcolor toml psycopg2 psutil
pip3 install -r deploy/requirements.txt
pip3 install -r ../library-checker-problems/requirements.txt

など

executorをinstallする

executorのREADMEを参照。Ubuntu以外で動作確認をしていない、かつ色々準備が必要なので注意。 executor をビルドして PATH の通ったところに置く。

cd library-checker-judge/executor
cargo install --path . --features sandbox
# or: cargo build --release --features sandbox && cp target/release/executor_rust path/to/...

実行環境を作る

設定情報が書かれたファイル judge/secret.toml を作る。

cd library-checker-judge/judge
./make_secret.sh

ユーザの提出を実行するための処理系をインストールする。 api/langs.toml を見ながら適当にする。

sudo apt install g++ clang++ python3.8 pypy3 openjdk-11-jdk haskell-stack sbcl ...

起動

cd library-checker-judge/judge
go run .

Local Test

  • library-checker-problems / library-chcker-judge は同じディレクトリにcloneしておくこと

API Server のテスト

今のgo sourceではなく、今立ち上がってるAPIサーバーに対してテストすることに注意

cd library-checker-judge/api
go test . -v

Judge Server のテスト

cd library-checker-judge/judge
sudo go run *.go

各種機能をガンガン使うのでrootじゃないと動かない 多分

Build Judge Image for GCP

gcloud auth application-default login
cd packer
packer build .

Library Checkerで稼働するジャッジサーバーのイメージはpackerでビルドされている。

Contribution

なんでも歓迎

library-checker-project

About

https://judge.yosupo.jp/

License:Apache License 2.0


Languages

Language:C++ 47.7%Language:Go 39.4%Language:HCL 8.0%Language:Python 2.0%Language:Shell 1.1%Language:Haskell 0.8%Language:Rust 0.4%Language:Java 0.2%Language:NewLisp 0.1%Language:Ruby 0.1%Language:C# 0.1%Language:Dockerfile 0.0%Language:D 0.0%Language:Crystal 0.0%Language:C 0.0%