feat: Add engine compatibility check for PRs by d3xter666 · Pull Request #1356 · UI5/cli
Reusable workflow that runs npm ci --dry-run against boundary Node versions and posts a consolidated PR comment with incompatible packages. Adds blocked label on failure with detailed Github Bot comment with the failing packages and their node engines.
Approaches evaluated:
npm ci --engine-strict: runtime check only, stops at first failure, misses remaining incompatible packagescheck-engine(npm): only checks running Node against root engines, doesn't inspect dependency treecheck-engine-light(npm): range-vs-range via semver.subset(), but v0.x, only 4 releases, unstablels-engines(npm): range-vs-range capable, but v0.x, 17-month release gap, 7 prod dependencies
Selected approach: single-job nvm loop using npm ci --dry-run (without --engine-strict). Reports all EBADENGINE warnings as a table in one PR comment. No extra dependencies, no matrix, no artifacts — just shell and tools already on the runner.
Note: NVM seems to come bundled in the GitHub action images
PoC of the implementation: d3xter666/test-ci#1
JIRA: CPOUI5FOUNDATION-1225