You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: local endoflife.date override for pending upstream PRs (#19)
## Summary
Adds a lightweight mechanism to patch EOL lifecycle data locally when
upstream [endoflife.date](https://endoflife.date) PRs are pending
review.
## Problem
Version Guard depends on endoflife.date for all EOL data. When a product
is missing or has incomplete cycles upstream, resources show as UNKNOWN
— hiding real compliance issues. Upstream PRs can take weeks to merge.
## Solution
An nginx sidecar container that:
1. Serves local JSON overrides from `deploy/endoflife-override/api/`
2. Proxies everything else to upstream endoflife.date
No fork to maintain, no Ruby/Jekyll build. Just drop a `.json` file and
restart.
## Changes
- `deploy/endoflife-override/` — nginx config + patched JSON files +
documentation
- `cmd/server/main.go` — `EOL_BASE_URL` env var support
- `docker-compose.yaml` — `endoflife` service + wiring
- `README.md` — WIP/Experimental disclaimer, updated docs
## Current Overrides
| Product | Issue | Upstream PR |
|---------|-------|-------------|
| `amazon-aurora-mysql` | Product doesn't exist yet |
[#9534](endoflife-date/endoflife.date#9534) |
| `amazon-opensearch` | Missing 3.3 and 3.5 cycles |
[#9919](endoflife-date/endoflife.date#9919) |
## Impact
Before (upstream only): Aurora = 4,231 UNKNOWN (0% compliance)
After (with overrides): Aurora = 4,224 GREEN + 7 YELLOW (**99.8%
compliance**)
Overall compliance: 45.8% → **94.8%**
Co-authored-by: Amp <amp@ampcode.com>
Copy file name to clipboardExpand all lines: README.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
# Version Guard
2
2
3
+
> ⚠️ **Work in Progress / Experimental** — Version Guard is under active development. APIs, configuration formats, and behavior may change without notice. Use at your own risk in production environments.
4
+
3
5
**Version Guard** is an open-source cloud infrastructure version monitoring system that continuously scans cloud resources (databases, caches, compute) to detect version drift and compliance issues.
|`endoflife`| Local EOL data override (nginx) |`8082`|
132
135
|`version-guard`| The server |`8080` (gRPC) |
133
136
137
+
The `endoflife` service serves patched EOL data for products with pending upstream PRs on [endoflife.date](https://endoflife.date), and proxies everything else to the live API. See [`deploy/endoflife-override/README.md`](./deploy/endoflife-override/README.md) for details on adding or updating overrides.
138
+
134
139
Once running, open the Temporal Web UI at http://localhost:8233 to trigger and monitor workflows.
135
140
136
141
### Run Locally (manual)
@@ -252,6 +257,7 @@ Version Guard is configured via environment variables or CLI flags:
252
257
|`WIZ_CLIENT_ID_SECRET`| Wiz client ID (optional) | - |
Version Guard uses [endoflife.date](https://endoflife.date) for all EOL lifecycle data. Sometimes upstream PRs take time to merge, leaving gaps in coverage (products return 404 or are missing recent version cycles).
4
+
5
+
This override mechanism lets you **patch EOL data locally** without waiting for upstream merges.
6
+
7
+
## How It Works
8
+
9
+
An nginx container serves local JSON files from `api/` and proxies everything else to the upstream endoflife.date API:
10
+
11
+
```
12
+
Request: GET /api/amazon-aurora-mysql.json
13
+
1. Check local file: deploy/endoflife-override/api/amazon-aurora-mysql.json
14
+
2. If found → serve it (your patched data)
15
+
3. If not found → proxy to https://endoflife.date/api/amazon-aurora-mysql.json
16
+
```
17
+
18
+
## Adding or Patching a Product
19
+
20
+
1. Fetch the current data (or create new data from a pending PR's Netlify preview):
0 commit comments