CircleCI执行semantic-release时出现getaddrinfo ENOTFOUND hostname错误求助
问题排查与解决方案
核心问题分析
错误getaddrinfo ENOTFOUND hostname表明semantic-release的GitHub插件无法解析GitHub API的域名,大概率是环境变量配置错误或CircleCI执行环境的网络/节点配置冲突导致的。
具体修复步骤
1. 移除冗余的nvm安装步骤
你已经使用了node: circleci/node@4.5 orb,该orb已内置node环境管理能力,手动安装nvm会导致环境冲突,干扰后续命令执行。修改config.yml的release job:
jobs: release: executor: node/default steps: - checkout # 直接用orb指定node版本,无需手动安装nvm - node/install: node-version: '16.17.1' - node/install-packages # 自动安装并缓存依赖 # 移除手动安装nvm和切换版本的冗余步骤 - run: npx semantic-release
2. 验证GH_TOKEN环境变量配置
- 确认CircleCI项目的环境变量设置中已正确配置
GH_TOKEN,该token需具备repo权限(用于操作仓库、创建Release)。 - 确保变量名拼写为
GH_TOKEN,semantic-release会自动读取该环境变量,无需额外配置。
3. 修正GitHub插件的配置格式
你的release.config.js中GitHub插件的配置格式错误,单独的{successComment: false}未关联到对应插件,需合并到@semantic-release/github的配置项中:
module.exports = { branches: ['main', 'next'], plugins: [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", "@semantic-release/npm", ["@semantic-release/github", { "successComment": false }], ["@semantic-release/git", { "assets": [ {"path": ["lib/", "package.json"]}, ], message: 'release: ${nextRelease.version} [skip Ci]\n\n${nextRelease.notes}', }], ] }
4. 测试CircleCI环境的网络连通性
若上述步骤无效,可在release job中添加网络测试,验证是否能正常访问GitHub API:
- run: name: Test GitHub API connectivity command: | curl -v https://api.github.com/repos/你的用户名/你的仓库名
验证修复
提交修改后的配置文件到main分支,触发CircleCI的release流程,检查是否能顺利完成GitHub插件的验证步骤,成功执行自动化发布。
内容的提问来源于stack exchange,提问作者Dhaval Parmar
相关产品推荐
相关产品推荐

