No description
Find a file
philipp 8b58681c35
Some checks failed
deploy / deploy (push) Failing after 0s
Silence KafkaJS client logs
2026-04-01 01:07:10 +02:00
.forgejo/workflows Reduce ingest scope and bootstrap app deploy 2026-04-01 00:09:10 +02:00
deploy Reduce ingest scope and bootstrap app deploy 2026-04-01 00:09:10 +02:00
docs Reduce ingest scope and bootstrap app deploy 2026-04-01 00:09:10 +02:00
scripts/deploy Fix Forgejo push auth bootstrap 2026-04-01 01:02:14 +02:00
src Silence KafkaJS client logs 2026-04-01 01:07:10 +02:00
.dockerignore refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
.env.example Reduce ingest scope and bootstrap app deploy 2026-04-01 00:09:10 +02:00
.gitignore feat: add standalone app deploy workflow 2026-03-30 17:39:15 +02:00
compose.yml refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
Dockerfile refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
index.mjs refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
package-lock.json refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
package.json refactor: isolate unrip project into projects folder 2026-03-29 14:33:19 +02:00
README.md Fix Forgejo push auth bootstrap 2026-04-01 01:02:14 +02:00

unrip project

This repository contains the unrip trading-system code and its project-specific deployment assets.

Contents

  • src/ — application code
  • package.json / package-lock.json — Node package manifest
  • Dockerfile / .dockerignore — app container build
  • .env.example — local app runtime example
  • compose.yml — local development stack
  • deploy/k8s/base/ — project-specific Kubernetes manifests
  • deploy/redpanda/rpk-topics.txt — project topic reference
  • docs/ — project-specific design and contract docs

Local development

npm install
cp .env.example .env
# edit .env

docker compose up -d --build

Useful commands:

docker compose ps
docker compose logs -f
docker compose logs -f near-intents-ingest dummy-reactor dummy-executor dummy-consumer
npm run near-intents:ingest
npm run dummy-reactor
npm run dummy-executor
npm run dummy-consumer

App image

The app image is now built from this directory.

Examples:

docker build -t unrip:dev .

Kubernetes manifests

Project manifests live under:

  • deploy/k8s/base/

The shared cluster/platform resources live in the separate infra repository.

Deployment

This repo is the app-side deployment repo. The shared Hetzner/k3s bootstrap, Forgejo runner, registry, and other platform services live in the separate platform repo.

See docs/deployment.md for the full operator path.

One-time app bootstrap

Bootstrap the app namespace, secrets, and Forgejo repo settings from this repo:

bash scripts/deploy/bootstrap.sh

That bootstrap also refreshes the local forgejo remote URL for HTTPS pushes when it has enough auth material to do so.

By default, the script uses the adjacent platform checkout at ../unrip3 for:

  • kubeconfig.yaml
  • kubeconfig.incluster.yaml
  • registry credentials
  • the NEAR_INTENTS_API_KEY fallback from ../unrip3/.env

If you are not using that local split, provide the values yourself via env vars such as KUBECONFIG_PATH, CI_KUBECONFIG_PATH, REGISTRY_HOST, REGISTRY_USERNAME, REGISTRY_PASSWORD, NEAR_INTENTS_API_KEY, and either FORGEJO_TOKEN or FORGEJO_ADMIN_USERNAME / FORGEJO_ADMIN_PASSWORD.

Routine deploy

After bootstrap, deployment is just a push to Forgejo main:

git push forgejo main

.forgejo/workflows/deploy.yml then:

  • applies deploy/k8s/base
  • builds the image from this repo root inside the cluster with Kaniko
  • pushes it to the shared registry
  • rolls the unrip deployments

Observe rollout

KUBECONFIG=../unrip3/.state/hetzner/kubeconfig.yaml kubectl -n unrip get deploy,pods,job
KUBECONFIG=../unrip3/.state/hetzner/kubeconfig.yaml kubectl -n unrip rollout status deploy/near-intents-ingest
KUBECONFIG=../unrip3/.state/hetzner/kubeconfig.yaml kubectl -n unrip rollout status deploy/dummy-reactor
KUBECONFIG=../unrip3/.state/hetzner/kubeconfig.yaml kubectl -n unrip rollout status deploy/dummy-executor
KUBECONFIG=../unrip3/.state/hetzner/kubeconfig.yaml kubectl -n unrip rollout status deploy/dummy-consumer