You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions中Gradle构建测试失败问题求助:疑似Token授权或Selenide访问变更导致

排查GitHub Actions中Gradle构建测试失败的问题

首先,你遇到的「本地测试正常但CI构建失败」的情况,大概率是环境差异或权限配置导致的,结合你怀疑的Token和Selenide问题,咱们一步步来排查:

第一步:先拿到具体的失败日志

当前你用./gradlew build --info输出的日志不够详细,只知道构建退出码为1,但看不到测试失败的具体异常(比如是Selenide启动浏览器失败,还是Token认证报错)。建议修改构建命令,单独执行测试任务并打印堆栈信息:

- name: Run tests with detailed logs
  run: ./gradlew test --info --stacktrace

这样能拿到测试失败的完整上下文,是后续排查的核心依据。

第二步:排查GitHub Token权限问题

GitHub Actions的默认权限机制在最近几个月确实有调整,旧版本的配置可能不再适用:

  • 检查GITHUB_TOKEN的默认权限:如果你的测试需要访问仓库内容、GitHub API或其他资源,需要在jobs下显式声明权限。比如添加:
    jobs:
      build:
        runs-on: ubuntu-latest
        permissions:
          contents: read  # 基础读取权限,按需添加write或其他权限
          # 如果测试需要调用GitHub API,还可能需要添加actions: read等
    
  • 如果你用了自定义Token(而非默认的GITHUB_TOKEN):确认它在GitHub仓库的「Secrets and variables」里已正确配置,并且在Workflow中通过env变量传递给测试,比如:
    - name: Build with Gradle
      env:
        CUSTOM_TEST_TOKEN: ${{ secrets.CUSTOM_TEST_TOKEN }}
      run: ./gradlew build --info --stacktrace
    

第三步:排查Selenide在CI无头环境的运行问题

GitHub Actions的Ubuntu Runner是无头环境(没有图形界面),这和本地有桌面环境的情况差异很大:

  • 强制开启Selenide无头模式:在测试代码或Gradle配置中添加无头设置,比如在测试类的初始化方法里:
    static {
        Configuration.headless = true;
        Configuration.browser = "chrome";
    }
    
    或者在build.gradle中配置系统属性:
    test {
        systemProperty "selenide.headless", "true"
        systemProperty "selenide.browser", "chrome"
    }
    
  • 确保浏览器驱动能正常安装:虽然Selenide会自动下载驱动,但CI环境可能因网络或权限问题失败。可以手动添加浏览器安装步骤:
    - name: Install Chrome and Chromedriver
      run: |
        sudo apt-get update
        sudo apt-get install -y chromium-browser chromium-chromedriver
        sudo ln -s /usr/lib/chromium-browser/chromedriver /usr/bin/chromedriver
    

第四步:升级Workflow依赖版本

你当前用的actions/checkout@v2和actions/setup-java@v2都是较旧的版本,新版本修复了不少权限和兼容性问题,建议升级:

- uses: actions/checkout@v4
- name: Set up JDK 15
  uses: actions/setup-java@v4
  with:
    java-version: '15'
    distribution: 'adopt'

先按上面的步骤拿到具体错误日志,再针对性解决,应该能定位到问题所在。

内容的提问来源于stack exchange,提问作者Kseniia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 17:22:48