Documentation

Pertisk Gits Docs

Self-hosted Git platform with CI/CD pipelines and an OCI container registry.

Overview

Pertisk Gits is a Git platform built with Rust, React, and PostgreSQL — hosting, collaboration, CI/CD, and an org-scoped OCI registry behind a Pingora gateway (optional HTTP/3).

Live demo: gitdev.tools.pertisk.com

Area What you get
Git Smart HTTP + SSH, file browser/editor, commits, branches/tags
Collab Issues, labels, milestones, merge requests + reviews
CI/CD .pertisk-ci.yaml, pertisk-runner, live logs, artifacts, PR checks
Registry OCI /v2/* per org, token auth, UI, GC, S3/MinIO or local blobs
Edge Pingora gateway; optional pertisk-h3-gateway (Quiche)

Quick start

git clone https://github.com/pertisktech/pertisk-gits.git
cd pertisk-gits
cp .env.example .env

# Dev — Postgres + API + built UI on :8080
make dev

# Or hot-reload UI on :5173, API on :8080
make dev-vite

Requires Docker and cargo-watch (cargo install cargo-watch). Stop with make dev-stop.

Clone & push

  1. Open a project in the UI → Clone shows the HTTP URL
  2. git clone http://localhost:8080/{group}/{project}.git
  3. Push with your username + account password when prompted

Private projects require auth for clone and push. Git Smart HTTP is built into the API for local dev.

CI/CD

Pipelines are defined in .pertisk-ci.yaml (push / pull_request). Runners (pertisk-runner) execute shell steps, stream logs, and upload artifacts. Register runners from the UI or API with labels that match runs-on.

# Linux service (after registering a token)
sudo systemctl enable --now pertisk-runner

# Or Docker / Helm — see repo docs
make runner-image && make runner-compose-up

Deep dive: CICD.md

Container registry

OCI registry per organization (registry.host/org/image:tag) via pertisk-registry — push/pull manifests and blobs, token auth, group UI, and garbage collection. Storage: local REGISTRY_ROOT or S3/MinIO.

See REGISTRY.md

Deploy

Packages (DEB/RPM, amd64 + arm64) similar to Pertisk Proxy:

VERSION=0.1.0 ./scripts/build.sh
make deploy DEPLOY_HOST=user@host VERSION=0.1.0

Service pertisk-gits listens on 8080 (UI + API + Git HTTP). Config: /etc/pertisk-gits/pertisk-gits.conf — set DATABASE_URL, JWT_SECRET, GIT_PUBLIC_BASE_URL.

Screenshots

Shot File Shows
Hero repos.jpg Repo code browser
Runners runners.jpg CI runners admin
Registry registry.jpg OCI container registry

Optional follow-ups: merge request + pipeline run detail.