2024/03/29
2024/03/29
Dependabotとnpmrcを触っていたらDependabotが動かなくなる問題があったので、原因と対処方法を記録しておく
Dependabotを稼働中において、package.jsonにenginesでnodeとnpmのversionを指定し、npmrcでengine-strictを設定していると、Dependabotが動かない GitHubのDependency graphから、以下のようなエラーログが記録されていることが確認できる
proxy | 2024/03/27 09:47:52 proxy starting, commit:
proxy | 2024/03/27 09:47:52 Listening (:1080)
updater | 2024-03-27T09:47:53.967230498 [806075662:main:WARN:src/devices/src/legacy/serial.rs:222] Detached the serial input due to peer close/error.
...
dependency_file_not_resolvable {:message=>"Dependabot uses Node.js v20.12.0\n and NPM 10.5.0\n. Due to the engine-strict setting, the update will not succeed."}
updater | 2024/03/27 09:48:28 INFO <job_xxx> Finished job processing
updater | 2024/03/27 09:48:28 INFO Results:
updater | Dependabot encountered '1' error(s) during execution, please check the logs for more details.
updater | +-----------------------------------------------+
updater | | Dependencies failed to update |
updater | +--------------+--------------------------------+
updater | | whatwg-fetch | dependency_file_not_resolvable |
updater | +--------------+--------------------------------+
updater | time="2024-03-27T09:48:28Z" level=info msg="task complete" container_id=job-xxx-updater exit_code=0 job_id=xxx step=updater
仮に、エラーログに記載されているバージョンをenginesで許容したとしてもエラーは解消されない
{
"engines": {
"node": ">=20.11.0",
"npm": ">=10.2.0"
}
}
Uncertainty in Dependabot's NPM Version #9277
上のissueでも報告されているが、dependabotが表示しているエラー時のNodeとNPMのバージョンは、実際のバージョンとは異なっているらしい
確かに、dependabotのDockerfileを見てみると、NPMのversionは10.5.0ではなく9.6.5を示している
dependabot-core Dockerfile#L18
一応npmのversionを上げるPRは作成されているので、そのうち解消はされそう
build(deps): bump npm to 10.2.4 #9213
enginesで許容するバージョンを下げるか、engine-strictを外すことで解消できる Node自体はここで20を指定しており、ここで20系となっていることがわかる
そのため、enginesでnpmのバージョンを9.6.5も含めるようにすれば解消される
{
"engines": {
"node": ">=20.11.0",
"npm": ">=9.6.5"
}
}