pipeline dag visualization + Dashboard command center upgrade + command palette wiring. fixed repo pipeline page.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
ForgeBucket is a self-hosted, federated developer operations platform. Where other Git platforms show you a list of files, ForgeBucket surfaces deployments, pipeline health, environment drift, and operational context directly alongside your code. Repositories are runtime systems. The dashboard is a command center.
|
||||
|
||||
**Status:** Early development. Core Git hosting, collaboration, and auth are functional. CI/CD and GitOps integrations are next.
|
||||
**Status:** Phase 2C in progress. CI/CD execution backend is fully operational. Pipeline visualization and dashboard integration are being wired up now.
|
||||
|
||||
---
|
||||
|
||||
@@ -32,6 +32,7 @@ ForgeBucket is a self-hosted, federated developer operations platform. Where oth
|
||||
| OIDC / OAuth2 (optional) | Done |
|
||||
| Access tokens (scoped, expiring) | Done |
|
||||
| Deploy keys | Done |
|
||||
| Audit log | Done |
|
||||
|
||||
### Git Hosting
|
||||
| Feature | Status |
|
||||
@@ -52,44 +53,50 @@ ForgeBucket is a self-hosted, federated developer operations platform. Where oth
|
||||
| Side-by-side + unified diff viewer | Done |
|
||||
| Reviewer assignment | Done |
|
||||
| Merge strategies (merge/squash/rebase) | Done |
|
||||
| Webhooks | Done (model + routes) |
|
||||
| Webhooks | Done |
|
||||
| Repository RBAC (read/write/admin) | Done |
|
||||
|
||||
### CI/CD
|
||||
| Feature | Status |
|
||||
|---------|--------|
|
||||
| Pipeline DAG visualization | In progress |
|
||||
| CI orchestrator | Planned (Phase 2) |
|
||||
| Runner manager | Planned (Phase 2) |
|
||||
| Artifact registry | Planned (Phase 2) |
|
||||
| Forgejo Actions integration (gRPC) | Planned (Phase 2) |
|
||||
| Flaky test detection | Planned (Phase 2) |
|
||||
| CI orchestrator (DAG pipeline execution) | Done (Phase 2B) |
|
||||
| Runner manager (Docker backend) | Done (Phase 2B) |
|
||||
| Build artifact storage | Done (Phase 2B) |
|
||||
| Pipeline cancellation + job retry | Done (Phase 2B) |
|
||||
| NATS event bus + WebSocket live push | Done (Phase 2A) |
|
||||
| Pipeline DAG visualization (frontend) | **In progress (Phase 2C)** |
|
||||
| Dashboard CI command center | **In progress (Phase 2C)** |
|
||||
| Pipeline log viewer (per-step, collapsible) | **In progress (Phase 2C)** |
|
||||
| Kubernetes / Firecracker runner backends | Planned (Phase 2D) |
|
||||
| Forgejo Actions gRPC integration | Planned |
|
||||
| Matrix builds + reusable workflow templates | Planned |
|
||||
| Flaky test detection | Planned |
|
||||
|
||||
### GitOps + Environments
|
||||
| Feature | Status |
|
||||
|---------|--------|
|
||||
| GitOps controller | Planned (Phase 3) |
|
||||
| Environment management | Planned (Phase 3) |
|
||||
| Drift detection | Planned (Phase 3) |
|
||||
| Deployment promotion workflows | Planned (Phase 3) |
|
||||
| Rollback visualization | Planned (Phase 3) |
|
||||
| Canary / blue-green support | Planned (Phase 3) |
|
||||
| Environment model + deployment tracking | Planned (Phase 3A) |
|
||||
| Unified operational timeline | Planned (Phase 3B) |
|
||||
| Secret management hierarchy | Planned (Phase 3C) |
|
||||
| GitOps controller + drift detection | Planned (Phase 3D) |
|
||||
| Deployment promotion workflows | Planned (Phase 3D) |
|
||||
| Rollback visualization | Planned (Phase 3D) |
|
||||
| Canary / blue-green support | Planned (Phase 3D) |
|
||||
|
||||
### Observability + Security
|
||||
| Feature | Status |
|
||||
|---------|--------|
|
||||
| Unified operational timeline | Planned (Phase 3) |
|
||||
| Secret scanning | Planned (Phase 3) |
|
||||
| Dependency scanning | Planned (Phase 3) |
|
||||
| Prometheus endpoint + health sparklines | Planned (Phase 3E) |
|
||||
| Secret scanning | Planned (Phase 4) |
|
||||
| Dependency scanning | Planned (Phase 4) |
|
||||
| Signed artifacts (Sigstore/Cosign) | Planned (Phase 4) |
|
||||
| Audit log | Planned (Phase 3) |
|
||||
|
||||
### Federation
|
||||
| Feature | Status |
|
||||
|---------|--------|
|
||||
| ActivityPub actor model | Done (data layer) |
|
||||
| Federation handlers / inbox / outbox | Planned (Phase 3) |
|
||||
| Cross-instance pull requests | Planned (Phase 3) |
|
||||
| Federation handlers / inbox / outbox | Planned (Phase 3F) |
|
||||
| Cross-instance pull requests | Planned (Phase 3F) |
|
||||
|
||||
---
|
||||
|
||||
@@ -101,7 +108,7 @@ git clone https://github.com/forgeo/forgebucket.git
|
||||
cd forgebucket
|
||||
cp .env.example .env # fill in SESSION_SECRET and CSRF_SECRET
|
||||
|
||||
# 2. Start PostgreSQL
|
||||
# 2. Start PostgreSQL + NATS
|
||||
make docker-up
|
||||
|
||||
# 3. Run DB migrations
|
||||
@@ -113,6 +120,8 @@ make dev
|
||||
|
||||
The Go API runs at `http://localhost:8080`. The Vite dev server runs at `http://localhost:5173` and proxies API requests.
|
||||
|
||||
> **Local dev note:** `DATABASE_URL` must use `localhost` (not `postgres`) and `NATS_URL` must be set to `nats://localhost:4222`. The `.env` file ships with correct defaults for local development. See `.env.example` for all variables.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
@@ -124,8 +133,9 @@ ForgeBucket
|
||||
├── Repository Service (git HTTP, branches, LFS — internal/domain/git/)
|
||||
├── Pull Request Service (PRs, reviews, merge — internal/api/handlers/)
|
||||
├── Issue Service (issues, labels — internal/api/handlers/)
|
||||
├── Federation Layer (ActivityPub actors — internal/domain/federation/) ← stub
|
||||
├── CI Orchestrator (pipeline scheduling — internal/domain/ci/) ← stub
|
||||
├── CI Orchestrator (DAG execution, Docker runner — internal/domain/ci/) ← Phase 2B done
|
||||
├── Event Bus (NATS core, NoOp fallback — internal/events/) ← Phase 2A done
|
||||
├── Federation Layer (ActivityPub actors — internal/domain/federation/) ← Phase 3F stub
|
||||
├── Secret Manager (env-based, scoped tokens — internal/config/)
|
||||
├── Database (PostgreSQL + XORM — internal/models/)
|
||||
└── Web Frontend (React 18 + TypeScript, embedded via //go:embed — web/)
|
||||
@@ -133,7 +143,7 @@ ForgeBucket
|
||||
|
||||
**Middleware chain (every request):**
|
||||
```
|
||||
Logger → RealIP → Recoverer → CORS → CSRF → SessionAuth → RBAC → Handler
|
||||
Logger → RealIP → Recoverer → CORS → CSRF → SessionAuth → RBAC → AuditLog → Handler
|
||||
```
|
||||
|
||||
---
|
||||
@@ -145,13 +155,15 @@ Logger → RealIP → Recoverer → CORS → CSRF → SessionAuth → RBAC → H
|
||||
| Language | Go 1.21+ |
|
||||
| Router | Chi |
|
||||
| ORM / Migrations | XORM + PostgreSQL |
|
||||
| Event bus | NATS (core; JetStream planned for Phase 2B durability) |
|
||||
| Real-time | WebSockets (nhooyr.io/websocket) |
|
||||
| CI execution | Docker (`docker run --rm`) |
|
||||
| Frontend framework | React 18 + TypeScript |
|
||||
| Build tool | Vite |
|
||||
| Styling | Tailwind CSS v4 |
|
||||
| Code editing | CodeMirror |
|
||||
| Real-time | WebSockets |
|
||||
| Container | Docker Compose (dev) |
|
||||
| Federation | ActivityPub / ForgeFed |
|
||||
| Federation | ActivityPub / ForgeFed (data layer only) |
|
||||
|
||||
---
|
||||
|
||||
@@ -174,17 +186,18 @@ ForgeBucket has its own design language — intentionally distinct from GitHub a
|
||||
|
||||
| Variable | Required | Description |
|
||||
|----------|----------|-------------|
|
||||
| `DATABASE_URL` | Yes | PostgreSQL connection string |
|
||||
| `DATABASE_URL` | Yes | PostgreSQL connection string — use `localhost` for local dev |
|
||||
| `SESSION_SECRET` | Yes | Session signing key, ≥ 32 chars (`openssl rand -hex 32`) |
|
||||
| `CSRF_SECRET` | Yes | CSRF key, exactly 32 chars (`openssl rand -hex 16`) |
|
||||
| `PORT` | No | HTTP port, default `8080` |
|
||||
| `REPO_ROOT` | Yes | Absolute path for bare git repository storage |
|
||||
| `NATS_URL` | No | NATS connection URL (e.g. `nats://localhost:4222`). If unset, CI runs in no-op mode |
|
||||
| `INSTANCE_URL` | Yes | Public URL of this instance (no trailing slash) |
|
||||
| `INSTANCE_NAME` | No | Display name, default `ForgeBucket` |
|
||||
| `OIDC_ISSUER` | No | OIDC provider URL |
|
||||
| `OIDC_CLIENT_ID` | No | OIDC client ID |
|
||||
| `OIDC_CLIENT_SECRET` | No | OIDC client secret |
|
||||
| `DEBUG` | No | Disables Secure cookies, enables verbose logging |
|
||||
| `DEBUG` | No | Disables Secure cookies, enables verbose logging, proxies frontend to Vite |
|
||||
|
||||
---
|
||||
|
||||
@@ -197,7 +210,7 @@ ForgeBucket has its own design language — intentionally distinct from GitHub a
|
||||
| `make migrate` | Sync XORM schemas to PostgreSQL |
|
||||
| `make test` | Run Go tests + Vitest |
|
||||
| `make lint` | `go vet` + ESLint |
|
||||
| `make docker-up` | Start PostgreSQL via Docker Compose |
|
||||
| `make docker-up` | Start PostgreSQL + NATS via Docker Compose |
|
||||
|
||||
---
|
||||
|
||||
@@ -206,9 +219,11 @@ ForgeBucket has its own design language — intentionally distinct from GitHub a
|
||||
| Phase | Focus | Status |
|
||||
|-------|-------|--------|
|
||||
| Phase 1 | Core Git hosting, auth, PRs, issues, RBAC, design system | Done |
|
||||
| Phase 2 | CI/CD orchestrator, runner manager, pipeline visualization, artifact registry | In progress |
|
||||
| Phase 3 | GitOps controller, environments, observability, federation handlers, audit log | Planned |
|
||||
| Phase 4 | Command palette, AI diagnostics, signed artifacts, package registry | Planned |
|
||||
| Phase 2A | NATS event bus, WebSocket hub, audit log | Done |
|
||||
| Phase 2B | CI orchestrator, runner manager, Docker backend, artifact registry | Done |
|
||||
| Phase 2C | Pipeline DAG visualization, dashboard CI upgrade, command palette | **In progress** |
|
||||
| Phase 3A–F | GitOps, environments, timeline, secrets, drift detection, federation | Planned |
|
||||
| Phase 4 | AI diagnostics, signed artifacts, OCI registry, dep scanning | Planned |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user