GitHub Actions中setup-java报错ENOTFOUND api.adoptium.net求助
GitHub Actions配置SonarQube拉取请求分析的问题解决方案
问题背景
刚接触GitHub Actions,配置SonarQube拉取请求分析时,工作流执行报错:
Trying to resolve the latest version from remote Error: getaddrinfo ENOTFOUND api.adoptium.net
同时收到警告:
"Build
Node.js 12 actions are deprecated. Please update the following
actions to use Node.js 16: actions/checkout@v2. For more information
see:
https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/"
使用的工作流脚本如下:
jobs: build: name: Build runs-on: self-hosted steps: - uses: actions/checkout@v2 with: fetch-depth: 0 #comment - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17.0.6' distribution: 'temurin' - name: Cache SonarQube packages uses: actions/cache@v3 with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Gradle packages uses: actions/cache@v3 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} restore-keys: ${{ runner.os }}-gradle - name: Build and analyze env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} run: ./gradlew build sonar --info
错误与警告的解决方案
1. 解决getaddrinfo ENOTFOUND api.adoptium.net错误
该错误核心是自托管Runner无法解析/访问api.adoptium.net域名,对应解决方法:
- 先在Runner机器上执行
ping api.adoptium.net,验证网络连通性; - 若处于受限网络(如企业内网):
- 配置Runner机器的代理规则,允许访问该外部域名;
- 更换JDK发行版,比如将
distribution改为zulu,无需依赖adoptium的源; - 提前在Runner机器上安装好JDK 17.0.6,跳过
actions/setup-java步骤,直接通过环境变量指定JDK路径。
2. 解决Node.js 12过时警告
直接将actions/checkout@v2升级到v3及以上版本(推荐actions/checkout@v4),新版本已切换至Node.js 16+,符合GitHub的运行环境要求。
工作流步骤检查
当前工作流步骤无缺失,但可做以下优化:
- 同步升级
actions/setup-java到v4版本,配合新版checkout提升兼容性; - 若自托管Runner有多个,建议在
runs-on中指定具体的Runner标签,避免环境匹配错误; - 确保SonarQube已配置PR分析规则,且
SONAR_TOKEN拥有对应仓库的分析权限。
内容的提问来源于stack exchange,提问作者SeemaC
相关产品推荐
相关产品推荐

