Skip to main content
Version: Latest

Build

Clone project

Clone project from GitHub

git clone https://github.com/Ranzeplay/PhiJudge

Docs

Prepare packages

  • Node.js (recommend to use latest LTS version)
  • pnpm package manager

Working directory

Go to directory Docs

Steps

Install packages by running the following script:

pnpm i

Make a production build by running the following script:

pnpm run build

To view build result, run script:

pnpm run serve

Supabase

Prepare packages

  • A supabase instance

Steps

Initiate a supabase instance, and get the following values:

  • Service Role key --> SupabaseServiceRoleKey
  • Anon key --> SupabaseAnonKey
  • Database connection string --> SupabasePostgresConnectionString
  • Instance API url --> SupabaseApiUrl

Central server

Prepare packages

  • Node.js (recommend to use latest LTS version)
  • pnpm package manager

Working directory

Go to directory Source/Central

Steps

Set environment variables in .env file:

DATABASE_URL="<SupabasePostgresConnectionString>"

NEXT_PUBLIC_SUPABASE_URL="<SupabaseApiUrl>"
NEXT_PUBLIC_SUPABASE_ANON_KEY="<SupabaseAnonKey>"
SUPABASE_SERVICE_ROLE_KEY="<SupabaseServiceRoleKey>"

Install packages by running the following script:

pnpm i

Make a production build by running the following script:

pnpm run build

To view build result, run script:

pnpm start

Agent

Prepare packages

Working directory

Go to directory Source/Agent

Steps

Build Executor to a single Docker image, run the following script:

docker build -f Executor/Dockerfile -t phijudge.agent .

Optional step

Build the plugin for C programming language

Go to relative directory Plugins/Language.C.

Run the following script:

dotnet publish -c Release

Get the target file at Plugins/Language.C/bin/Release/net8.0/publish/PhiJudge.Plugin.Language.C.dll