{"slug": "show-hn-fail-ci-when-your-stack-runs-end-of-life-software", "title": "Show HN: Fail CI when your stack runs end-of-life software", "summary": "Endoflife-ai released eol-check, a zero-dependency GitHub Action that fails CI builds when repositories run end-of-life software, scanning runtime versions from files like .nvmrc, .python-version, and Dockerfile base images against endoflife.ai data. The action, available at endoflife-ai/eol-check@v1, requires no API key or configuration, and supports 500+ products via a products input, with options to fail on 'eol' or 'approaching' and warn within a configurable number of days.", "body_md": "A zero-dependency GitHub Action that scans your repo for runtime versions\n(`.nvmrc`\n\n, `.python-version`\n\n, `.ruby-version`\n\n, `go.mod`\n\n, `package.json`\n\nengines, `Dockerfile`\n\nbase images) and checks each one against\n[endoflife.ai](https://endoflife.ai). Anything past end of life fails the\nbuild with a file-anchored annotation; anything close gets a warning and a\ndate. No API key, no configuration required.\n\n```\n- uses: endoflife-ai/eol-check@v1\n```\n\nThat's the whole integration. A fuller example:\n\n```\nname: EOL gate\non:\n  pull_request:\n  schedule:\n    - cron: '0 6 * * 1'   # weekly — EOL dates pass whether or not you push code\n\njobs:\n  eol:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n      - uses: endoflife-ai/eol-check@v1\n        with:\n          products: 'postgresql:14, kubernetes:1.32'   # things not visible in the repo\n          fail-on: 'eol'                                # or 'approaching' / 'never'\n          warn-days: '90'\n```\n\n| Source | Product |\n|---|---|\n`.nvmrc` , `.node-version` , `package.json` `engines.node` |\nNode.js |\n`.python-version` |\nPython |\n`.ruby-version` |\nRuby |\n`go.mod` (`go 1.x` ) |\nGo |\n`Dockerfile*` `FROM` images (root + 2 levels) |\nnode, python, ruby, golang, php, nginx, postgres, mysql, mariadb, redis, mongo, alpine, debian, ubuntu |\n\nAnything else — databases, OSes, appliances, 500+ products — via the\n`products`\n\ninput as `slug:version`\n\npairs. Slugs are the path segments on\nendoflife.ai (e.g. [ endoflife.ai/postgresql](https://endoflife.ai/postgresql) →\n\n`postgresql`\n\n).| Input | Default | Meaning |\n|---|---|---|\n`products` |\n`''` |\nExtra `slug:version` pairs, comma-separated |\n`scan` |\n`true` |\nAuto-detect from repo files |\n`fail-on` |\n`eol` |\n`eol` | `approaching` | `never` |\n`warn-days` |\n`90` |\nWarn when EOL is within this many days |\n\n`eol-count`\n\n, `approaching-count`\n\n, `checked-count`\n\n, and `report`\n\n(the\nmarkdown table also written to the job summary).\n\nerror· nodejs 18 is END OF LIFE since 2025-04-30 (477 days ago) — no more security fixes.[https://endoflife.ai/score/nodejs/18]warning· python 3.10 reaches end of life in 72 days (2026-10-31). Plan the upgrade.\n\nPlus a job-summary table:\n\n| Product | Status | EOL date | Found in |\n|---|---|---|---|\n| nodejs 18 | 🔴 EOL | 2025-04-30 | .nvmrc |\n| python 3.10 | 🟡 EOL in 72d | 2026-10-31 | Dockerfile |\n| go 1.24 | 🟢 supported | 2026-08-12 | go.mod |\n\nShow a live EOL status badge for any version you ship against:\n\n```\n![Node 22 EOL status](https://api.endoflife.ai/v1/badge/nodejs/22)\n```\n\nLifecycle data comes from [endoflife.ai](https://endoflife.ai) — end-of-life\ndates for 500+ products, verified against vendor sources daily, with\n[EOL Risk Scores](https://endoflife.ai/risk-score) and a\n[free API](https://endoflife.ai/api). Underlying community dates from\n[endoflife.date](https://endoflife.date) (MIT).\n\nMIT", "url": "https://wpnews.pro/news/show-hn-fail-ci-when-your-stack-runs-end-of-life-software", "canonical_source": "https://github.com/endoflife-ai/eol-check", "published_at": "2026-08-20 10:19:07+00:00", "updated_at": "2026-08-20 10:45:40.677560+00:00", "lang": "en", "topics": ["developer-tools", "mlops"], "entities": ["endoflife-ai", "endoflife.ai", "GitHub Actions", "Node.js", "Python", "Dockerfile"], "alternates": {"html": "https://wpnews.pro/news/show-hn-fail-ci-when-your-stack-runs-end-of-life-software", "markdown": "https://wpnews.pro/news/show-hn-fail-ci-when-your-stack-runs-end-of-life-software.md", "text": "https://wpnews.pro/news/show-hn-fail-ci-when-your-stack-runs-end-of-life-software.txt", "jsonld": "https://wpnews.pro/news/show-hn-fail-ci-when-your-stack-runs-end-of-life-software.jsonld"}}