Update docs, sprint plans, and compose configuration
Add 12 new sprint files (Integrations, Graph, JobEngine, FE, Router, AdvisoryAI), archive completed scheduler UI sprint, update module architecture docs (router, graph, jobengine, web, integrations), and add Gitea entrypoint script for local dev. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,7 @@ Add to `C:\Windows\System32\drivers\etc\hosts`:
|
||||
127.1.2.5 registry.stella-ops.local
|
||||
127.1.2.6 minio.stella-ops.local
|
||||
127.1.2.7 gitlab.stella-ops.local
|
||||
127.1.2.8 consul.stella-ops.local
|
||||
```
|
||||
|
||||
### 2. Start services
|
||||
@@ -52,7 +53,7 @@ Add to `C:\Windows\System32\drivers\etc\hosts`:
|
||||
```bash
|
||||
cd devops/compose
|
||||
|
||||
# Start all lightweight services (recommended)
|
||||
# Start the default low-idle services (recommended)
|
||||
docker compose -f docker-compose.integrations.yml up -d
|
||||
|
||||
# Or start specific services only
|
||||
@@ -64,8 +65,15 @@ docker compose \
|
||||
-f docker-compose.integration-fixtures.yml \
|
||||
up -d
|
||||
|
||||
# Start Consul only when validating the Consul connector
|
||||
docker compose -f docker-compose.integrations.yml --profile consul up -d consul
|
||||
|
||||
# Start GitLab CE (heavy, 4 GB+ RAM, ~3 min startup)
|
||||
docker compose -f docker-compose.integrations.yml --profile heavy up -d gitlab
|
||||
|
||||
# Re-enable GitLab registry/package surfaces for registry-specific tests
|
||||
GITLAB_ENABLE_REGISTRY=true GITLAB_ENABLE_PACKAGES=true \
|
||||
docker compose -f docker-compose.integrations.yml --profile heavy up -d gitlab
|
||||
```
|
||||
|
||||
### 3. Verify services
|
||||
@@ -73,8 +81,13 @@ docker compose -f docker-compose.integrations.yml --profile heavy up -d gitlab
|
||||
```bash
|
||||
# Quick health check for all services
|
||||
docker compose -f docker-compose.integrations.yml ps
|
||||
|
||||
# Gitea is only complete once the container is healthy
|
||||
docker compose -f docker-compose.integrations.yml ps gitea
|
||||
```
|
||||
|
||||
`docker-compose.testing.yml` is the separate infrastructure-test lane. It starts `postgres-test`, `valkey-test`, mocks, and an isolated Gitea profile on different ports; it does not start Consul or GitLab.
|
||||
|
||||
---
|
||||
|
||||
## Service Reference
|
||||
@@ -86,7 +99,8 @@ docker compose -f docker-compose.integrations.yml ps
|
||||
| URL | http://gitea.stella-ops.local:3000 |
|
||||
| API | http://gitea.stella-ops.local:3000/api/v1 |
|
||||
| SSH | gitea.stella-ops.local:2222 |
|
||||
| First-run | Create admin account via web UI |
|
||||
| Admin | `stellaops` / `Stella2026!` on fresh volumes |
|
||||
| Bootstrap | Container entrypoint seeds the repo root and first admin before health goes green |
|
||||
| Swagger | http://gitea.stella-ops.local:3000/api/swagger |
|
||||
| Integration type | SCM (Gitea provider) |
|
||||
| Docker DNS | `gitea.stella-ops.local` |
|
||||
@@ -97,10 +111,12 @@ docker compose -f docker-compose.integrations.yml ps
|
||||
- Organization: *(your Gitea org name)*
|
||||
|
||||
**Create an API token:**
|
||||
1. Log in to Gitea
|
||||
1. Log in to Gitea as `stellaops` / `Stella2026!` on a fresh volume, or use the existing admin user if this environment was already initialized.
|
||||
2. Settings > Applications > Generate Token
|
||||
3. Store in Vault at `secret/gitea` with key `api-token`
|
||||
|
||||
> The previous local-service flow was contradictory: the compose profile marked Gitea as install-locked while the docs still described a manual first-login admin creation path. The compose bootstrap now makes the service deterministic and leaves only PAT creation as a manual step.
|
||||
|
||||
---
|
||||
|
||||
### Jenkins (CI/CD)
|
||||
@@ -193,6 +209,32 @@ vault kv put secret/nexus admin-password="your-nexus-password"
|
||||
|
||||
---
|
||||
|
||||
### Consul (Optional KV / Settings Store)
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| URL | http://consul.stella-ops.local:8500 |
|
||||
| API | http://consul.stella-ops.local:8500/v1/status/leader |
|
||||
| Auth | None (single-node local server) |
|
||||
| Start mode | `--profile consul` only |
|
||||
| Integration type | Settings / KV (`Consul` provider) |
|
||||
| Docker DNS | `consul.stella-ops.local` |
|
||||
|
||||
**Start Consul only when needed:**
|
||||
```bash
|
||||
docker compose -f docker-compose.integrations.yml --profile consul up -d consul
|
||||
```
|
||||
|
||||
**Why opt-in:** even in its lower-idle local mode, Consul is still an extra control-plane service that most local connector checks do not need. The default integration lane keeps it off unless you are explicitly validating the Consul connector.
|
||||
|
||||
**Runtime mode:** the local compose profile now runs Consul as a persistent single-node server with the UI enabled instead of `agent -dev`. That preserves the HTTP KV surface while materially lowering idle CPU.
|
||||
|
||||
**Stella Ops integration config:**
|
||||
- Endpoint: `http://consul.stella-ops.local:8500`
|
||||
- AuthRef: *(none required in local mode)*
|
||||
|
||||
---
|
||||
|
||||
### Docker Registry (OCI v2)
|
||||
|
||||
| Property | Value |
|
||||
@@ -226,6 +268,7 @@ curl http://registry.stella-ops.local:5000/v2/_catalog
|
||||
| S3 API | http://minio.stella-ops.local:9000 |
|
||||
| Access key | `stellaops` |
|
||||
| Secret key | `Stella2026!` |
|
||||
| Integration type | Object Storage (`S3Compatible` provider) |
|
||||
| Docker DNS | `minio.stella-ops.local` |
|
||||
|
||||
**Create buckets for Stella Ops:**
|
||||
@@ -240,6 +283,12 @@ docker exec stellaops-minio mc mb local/scan-results
|
||||
docker exec stellaops-minio mc mb local/sbom-archive
|
||||
```
|
||||
|
||||
**Stella Ops integration config:**
|
||||
- Endpoint: `http://minio.stella-ops.local:9000`
|
||||
- Type: `ObjectStorage`
|
||||
- Provider: `S3Compatible`
|
||||
- AuthRef: optional for the default local health probe
|
||||
|
||||
---
|
||||
|
||||
### GitLab CE (Heavy, Optional)
|
||||
@@ -249,7 +298,7 @@ docker exec stellaops-minio mc mb local/sbom-archive
|
||||
| URL | http://gitlab.stella-ops.local:8929 |
|
||||
| Admin | root / `Stella2026!` |
|
||||
| SSH | gitlab.stella-ops.local:2224 |
|
||||
| Container Registry | gitlab.stella-ops.local:5050 |
|
||||
| Container Registry | gitlab.stella-ops.local:5050 (`GITLAB_ENABLE_REGISTRY=true` only) |
|
||||
| RAM required | 4 GB+ |
|
||||
| Startup time | ~3-5 minutes |
|
||||
| Integration type | SCM + CI/CD + Registry |
|
||||
@@ -260,6 +309,17 @@ docker exec stellaops-minio mc mb local/sbom-archive
|
||||
docker compose -f docker-compose.integrations.yml --profile heavy up -d gitlab
|
||||
```
|
||||
|
||||
**Default local tuning:**
|
||||
- SCM/API coverage stays available.
|
||||
- Registry and package surfaces are disabled by default to reduce idle CPU.
|
||||
- Puma and Sidekiq run in reduced-concurrency mode for local connector checks.
|
||||
|
||||
**Enable registry/package coverage explicitly when needed:**
|
||||
```bash
|
||||
GITLAB_ENABLE_REGISTRY=true GITLAB_ENABLE_PACKAGES=true \
|
||||
docker compose -f docker-compose.integrations.yml --profile heavy up -d gitlab
|
||||
```
|
||||
|
||||
**Stella Ops integration config (SCM):**
|
||||
- Endpoint: `http://gitlab.stella-ops.local:8929`
|
||||
- AuthRef: `authref://vault/gitlab#access-token`
|
||||
@@ -326,16 +386,27 @@ docker compose -f docker-compose.integrations.yml down -v
|
||||
| **Registry** | Harbor | harbor-fixture (mock) | Ready |
|
||||
| **Registry** | Docker Hub / OCI | docker-registry | Ready |
|
||||
| **Registry** | Nexus | nexus | Ready |
|
||||
| **Registry** | GitLab Registry | gitlab (heavy) | Optional |
|
||||
| **Registry** | GitLab Registry | gitlab (heavy) | Ready when `GITLAB_ENABLE_REGISTRY=true` |
|
||||
| **SCM** | GitHub App | github-app-fixture (mock) | Ready |
|
||||
| **SCM** | Gitea | gitea | Ready |
|
||||
| **SCM** | GitLab Server | gitlab (heavy) | Optional |
|
||||
| **CI/CD** | Jenkins | jenkins | Ready (needs plugin) |
|
||||
| **CI/CD** | GitLab CI | gitlab (heavy) | Optional (needs plugin) |
|
||||
| **SCM** | GitLab Server | gitlab (heavy) | Ready with Vault-backed PAT |
|
||||
| **CI/CD** | Jenkins | jenkins | Ready |
|
||||
| **CI/CD** | GitLab CI | gitlab (heavy) | Ready with reduced local concurrency |
|
||||
| **Secrets** | Vault | vault | Ready |
|
||||
| **Storage** | S3 (MinIO) | minio | Ready |
|
||||
| **Secrets** | Consul | consul | Opt-in (`--profile consul`) |
|
||||
| **Runtime Host** | eBPF Agent | runtime-host-fixture (mock) | Ready |
|
||||
| **Feed Mirror** | StellaOps / NVD / OSV mirror | concelier | Ready |
|
||||
| **Storage** | S3-compatible (MinIO) | minio | Ready |
|
||||
| **Advisory & VEX** | 74 sources | advisory-fixture + live | 74/74 healthy |
|
||||
|
||||
> **Note:** CI/CD and Runtime Host integrations require backend connector plugins to be loaded
|
||||
> in the Integrations service. Currently only Harbor, GitHub App, GitLab, and InMemory plugins
|
||||
> are compiled into the service.
|
||||
> **Current provider list:** the local Integrations service currently reports connector plugins for Harbor,
|
||||
> Docker Registry, GitLab Container Registry, Nexus, GitHub App, Gitea, GitLab Server,
|
||||
> GitLab CI, Jenkins, Vault, Consul, eBPF Agent, the `S3Compatible` object-storage provider, the feed mirror providers
|
||||
> (`StellaOpsMirror`, `NvdMirror`, `OsvMirror`), and the test-only InMemory provider.
|
||||
>
|
||||
> **Storage note:** the `S3Compatible` connector defaults to probing `/minio/health/live`
|
||||
> when the configured endpoint is the service root, which matches the local MinIO fixture.
|
||||
>
|
||||
> **Auth caveat:** several connector plugins validate public health/version endpoints only. A green connection
|
||||
> test proves reachability and the plugin wiring, but it does not guarantee that privileged API operations are
|
||||
> fully configured unless you also provision the corresponding secret material in Vault.
|
||||
|
||||
Reference in New Issue
Block a user