Skip to content

Build and deploy

Mauricio G. edited this page Oct 8, 2026 · 1 revision

Build and deploy

VitaRPS5 is built inside Docker with the VitaSDK. Always go through tools/build.sh; do not call Docker or the SDK by hand.

You need

  • Docker, running
  • Git
  • curl (only for deploy)

Get the code

git clone https://github.com/mauricio-gg/vitaki-vitarps5.git
cd vitaki-vitarps5

The first build creates the vitaki-fork-dev:latest Docker image automatically (a few minutes). Later builds reuse it.

Build commands

Command What you get
./tools/build.sh Release VPK, production profile (.env.prod). Logging is off.
./tools/build.sh --env testing VPK with the testing profile (.env.testing): runtime logs on, debug tools on. Use this for any on-device or streaming check.
./tools/build.sh debug Debug VPK with symbols. Needed for crash backtraces, see Crash dumps.
./tools/build.sh shell Interactive shell inside the build container.
./tools/build.sh test Compiles the test binary only. It does not run it and makes no VPK.
./tools/build.sh format Rewrites C/C++ files in vita/src and vita/include with clang-format. Run it before committing.
./tools/build.sh deploy <vita_ip> Uploads the last built VPK to the Vita over FTP (see below).

Also available: clean, lint, update (refresh the Docker image), build-image, version, help.

FORMAT_CHECK=1 ./tools/build.sh format only checks and fails if something would change (what CI does).

About test: the script's help text says "build and run", but it only builds vitarps5_tests, an arm-vita-eabi ELF that cannot run on your computer.

Build profiles

--env <name> loads .env.<name> from the repo root. With no flag the script loads .env.prod. --env-file <path> loads any file you point at. What the variables control is on the Logging page.

The testing profile also turns on plaintext storage of the PSN login tokens, so testers keep their login between builds. Never share a testing VPK or its chiaki.toml.

Where the VPK ends up

  • build/vitaki-fork.vpk: the build output
  • VitakiForkv0.1.<N>.vpk in the repo root: a copy with the version in the name

Every build/debug run bumps the number N first (the script edits itself), so the number is unique per build.

Install on the Vita

  1. Open VitaShell on the Vita and press SELECT to start its FTP server. Note the IP shown.
  2. Run ./tools/build.sh deploy <vita_ip>. It uploads build/vitaki-fork.vpk to ux0:/ on port 1337.
  3. In VitaShell, press X on the uploaded file to install it.

You can also copy the VPK across by any other means and install it from VitaShell.

Docker notes

  • The base image is vitasdk/vitasdk:2026.08-20260815 (Ubuntu 24.04). The version is pinned on purpose in the Dockerfile; tools/build.sh update pulls that same tag.
  • Containers run as your user (-u $(id -u):$(id -g), set as DOCKER_RUN_USER in tools/build.sh). The build folder is mounted from your machine, and if the container ran as a different user, CMake would fail with a permission error when creating files in it. A shell prompt showing "I have no name!" is expected.

PSN credentials

The PSN OAuth client ID and secret in .env.prod and .env.testing are public app identifiers, not personal secrets, and are committed on purpose. Your own login is never stored there. Why: https://github.com/mauricio-gg/vitaki-vitarps5/blob/main/docs/design/psn.md

Releases (maintainers)

On GitHub go to Actions, then Create Release, then Run workflow, and pick patch, minor or major. It must run from main. The workflow (.github/workflows/create_release.yml) builds a production VPK, tags it and publishes a GitHub release.

Clone this wiki locally