11 Commits

Author SHA1 Message Date
0xWheatyz 98807884b1 fix(ci): authenticate registry push with package-scoped REGISTRY_TOKEN
Validate Flux manifests / kustomize-build (pull_request) Successful in 22s
The auto GITEA_TOKEN has no package-registry scope, so docker login to
gitea.leeworks.dev returned 'unauthorized'. Use a dedicated PAT (REGISTRY_TOKEN,
write:package) with the token-owner username. Helper script now mints both
SIBLING_REPOS_TOKEN and REGISTRY_TOKEN from one password prompt.
2026-06-20 17:53:28 -04:00
0xWheatyz 3cb8f648a1 fix(ci): push docs-site image to gitea.leeworks.dev registry
Validate Flux manifests / kustomize-build (pull_request) Successful in 25s
registry.leeworks.dev serves Traefik's default self-signed cert (TLS verify
fails). Gitea's built-in container registry at gitea.leeworks.dev has a valid
Let's Encrypt cert, so push there instead.
2026-06-20 17:49:43 -04:00
0xWheatyz 3f648cd5a0 fix(ci): install docker CLI in build-docs before registry steps
Validate Flux manifests / kustomize-build (pull_request) Successful in 22s
2026-06-20 17:41:09 -04:00
0xWheatyz 58e7a8e319 fix(ci): install kustomize via pinned release tarball with retries
Validate Flux manifests / kustomize-build (pull_request) Successful in 22s
2026-06-20 17:29:28 -04:00
0xWheatyz ff7c9cfb7e fix(ci): repair failing Gitea Actions 2026-06-20 17:20:26 -04:00
agent-company 254ebf28e7 ci: add vin-decoder spec to build-docs.yaml aggregation step
Validate Flux manifests / kustomize-build (pull_request) Failing after 24s
Add checkout step for leeworks-agents/vin-decoder and copy
vin-decoder/openapi.yaml into docs-site/public/specs/vin-decoder.yaml
so the vin-decoder.astro Redoc page renders correctly.

Closes leeworks-agents/api-company#148
2026-05-31 15:02:54 +00:00
agent-company 2d8ad295d4 feat: extend publish-openapi pipeline to include VIN Decoder API
Validate Flux manifests / kustomize-build (pull_request) Failing after 20s
Add vin-decoder as 4th entry to the APIS array in scripts/publish-openapi.js
and add RAPIDAPI_VIN_API_ID / RAPIDAPI_VIN_VERSION_ID secrets to the
publish-openapi.yaml CI workflow env block.

Closes leeworks-agents/api-company#138
2026-05-31 05:03:51 +00:00
agent-company 9370d2c898 [Phase 6] ci: add scripts/publish-openapi.js and publish-openapi workflow
Validate Flux manifests / kustomize-build (pull_request) Failing after 8s
Closes leeworks-agents/api-company#100

- scripts/publish-openapi.js: Node.js script using only built-in modules
  (https, fs, path — no extra deps) that uploads each API's openapi.yaml
  to the RapidAPI Platform API via PUT multipart/form-data.
  - Reads RAPIDAPI_KEY/RAPIDAPI_PLATFORM_KEY from environment.
  - Skips silently per API if API ID / version ID not set.
  - Skips all uploads if RAPIDAPI_KEY not set (exits 0).
  - Exits non-zero on any HTTP error.
  - Logs: '✓ Published {api-name} spec to RapidAPI' on success.
  - Passes 'node --check' syntax validation.
- .gitea/workflows/publish-openapi.yaml: triggers on push to main when
  apis/*/openapi.yaml changes.
  - Runs Redocly CLI lint (fails pipeline on spec errors).
  - Detects changed specs via git diff.
  - Calls publish-openapi.js; no secrets = skip, not crash.
2026-05-29 20:04:26 +00:00
agent-company 2f249a9e18 [Phase 0] ci: add no-op smoke-test workflow to verify Act Runner
Validate Flux manifests / kustomize-build (pull_request) Failing after 21s
Adds .gitea/workflows/smoke-test.yaml as a manual workflow_dispatch trigger
that runs four echo commands.  When the Act Runner comes online (#77) the
operator can fire this from the Gitea Actions UI to confirm runner
registration and job dispatch work before any real tooling is needed.

Closes leeworks-agents/api-company#96
2026-05-29 15:03:14 +00:00
agent-company d9a13d8c29 ci: add Gitea Actions workflow to validate kustomize build on every PR (Closes leeworks-agents/api-company#69)
Validate Flux manifests / kustomize-build (pull_request) Failing after 46s
2026-05-28 00:01:52 +00:00
agent-company a615b7ebfd feat: implement docs-site, legal docs, metrics standard, flux manifests
Closes leeworks-agents/api-company#5  (docs-site Astro scaffold)
Closes leeworks-agents/api-company#9  (metrics instrumentation standard)
Closes leeworks-agents/api-company#10 (Gitea Actions openapi aggregation pipeline)
Closes leeworks-agents/api-company#11 (docs-site Flux HelmRelease)
Closes leeworks-agents/api-company#12 (SEO blog posts x3)
Closes leeworks-agents/api-company#13 (legal docs ToS/Privacy/AUP)
Closes leeworks-agents/api-company#14 (DNS documentation)

## Changes

### docs/legal/
- terms-of-service.md — API usage, liability, account termination, governing law
- privacy-policy.md — request log retention (90d), no PII sold, data sharing
- acceptable-use-policy.md — rate limit abuse, scraping prohibition, resale ban

### docs/metrics-standard.md
- Defines api_requests_total, api_response_duration_seconds, api_data_freshness_seconds
- Fastify (TypeScript) and FastAPI (Python) reference middleware implementations
- Prometheus scrape config and Grafana dashboard guidance

### docs/registry.md
- Decision: use Gitea built-in container registry (no new infra)
- Image naming convention, auth, Kubernetes imagePullSecrets, ingress config

### docs/dns.md
- Required A records for all 6 subdomains
- cert-manager ClusterIssuer and Ingress TLS examples
- Verification commands and human-operator action items

### docs-site/
- Astro 4 + MDX + sitemap scaffold
- Base layout with nav linking all APIs, blog, RapidAPI, status
- Landing page with API cards
- Per-API Redoc viewer pages (zip-enrichment, holidays, air-quality)
- Blog index + 3 SEO blog posts (~1000 words each with JSON-LD)
- Dockerfile (multi-stage: node build + nginx serve)
- nginx.conf with gzip, caching, health endpoint

### flux/
- gitea-runner/: gitea-act-runner HelmRelease (org-scope, dind)
- monitoring/: kube-prometheus-stack + Gatus HelmReleases
  - Prometheus with pod annotation scraping
  - Grafana at grafana.leeworks.dev with persistence
  - Gatus status page at status.leeworks.dev, 90-day retention
- docs-site/: Deployment + Service + Ingress via raw chart
- api-company-source/: GitRepository + Kustomization reference manifests
- kustomization.yaml: root kustomize entry point (build validated)

### .gitea/workflows/build-docs.yaml
- Aggregates openapi.yaml from zip-enrichment, holidays, air-quality repos
- Builds Astro docs-site
- Pushes image to registry.leeworks.dev/leeworks-agents/docs-site
- Triggered on push to main, schedule daily 02:00 UTC, workflow_dispatch
2026-05-24 23:20:33 +00:00