Judge server / API server のソースコードです
- Docker
- Ubuntu 22.04 (Judge Server)
- Go 1.24+
./launch_local.sh
APIサーバー(localhost:50051)とSQL(PostgreSQL)がDocker Composeで立ち上がり、aplusb, unionfind
がデプロイされる。
言語イメージ(judge が使用)は起動前にビルドが必要です。./launch_local.sh
は既定で最小セット(gcc + python3)をビルドしてから起動します。全言語や任意サブセットをビルドしたい場合は LC_LANGS
を指定してください。
例:
# 最小(既定)
./launch_local.sh
# 全言語(重量級を含む)
LC_LANGS=all ./launch_local.sh
# 任意サブセット
LC_LANGS="gcc python3 rust" ./launch_local.sh
gRPC-web のAPIサーバーが起動します。
- gRPC API: localhost:50051
- gRPC-web API: localhost:12380
- REST API (separate service): localhost:12381
- REST (partial):
OpenAPI (partial, for REST) is defined at:
- restapi/openapi/openapi.yaml
evans --host localhost --port 50051 api/proto/library_checker.proto
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
など
Judge serverは各種プログラミング言語の実行環境が必要です。詳細はlangs/langs.tomlを参照してください。
cd library-checker-judge/judge
go run .
- library-checker-problems / library-chcker-judge は同じディレクトリにcloneしておくこと
全モジュールのテストを一括実行。PostgreSQL等の環境も自動で起動/停止します。
./test-all.sh
このスクリプトは以下を実行します:
./launch_local.sh
による環境起動(必要に応じて)- Database, API, Storage モジュールのテスト
- 静的解析(go vet, gofmt)
- ビルド確認
- 環境のクリーンアップ(必要に応じて)
個別モジュールテストを実行する場合は、事前に ./launch_local.sh
でPostgreSQL等を起動しておく必要があります。
実行中のAPIサーバーに対してテストを実行します。
cd api
go test . -v
cd database
go test . -v
cd storage
go test . -v
cd judge
go test . -v
gcloud auth application-default login
cd packer
packer build .
Library Checkerで稼働するジャッジサーバーのイメージはpackerでビルドされている。
なんでも歓迎
- problems: library-checker-problems
- judge: library-checker-judge
- frontend: library-checker-frontend