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

Travis CI中Ruby进程退出码为1的问题排查求助

排查Rails应用Travis构建退出码1失败的问题

我帮你梳理下可能导致构建失败的几个关键问题,咱们一个个来解决:

1. Node.js配置语法错误

你的.travis.yml里Node.js的配置格式写错了:

node_js: - 12  # 错误格式

正确的写法应该是直接指定版本号,或者用数组格式(如果需要多个版本):

node_js: 12
# 或者多个版本的话:
# node_js: ["12"]

这个语法错误会让Travis无法正确解析配置文件,直接触发构建失败,这大概率是首要原因。

2. 多余的bundle install执行

Travis默认会自动检测Gemfile并执行bundle install,而且你已经配置了bundler: true的缓存,手动在script里再写bundle install完全没必要,甚至可能因为缓存的依赖和当前Gemfile.lock不匹配引发冲突。建议删掉这一行。

3. 废弃的db:test:prepare命令

在Rails 5及之后的版本,rake db:test:prepare已经被废弃了——你已经执行了bundle exec rake db:schema:load,这一步已经会自动初始化测试数据库,重复执行db:test:prepare反而可能导致数据库状态混乱,直接删掉这一行即可。

4. 系统测试缺少ChromeDriver

你安装了google-chrome-stable,但没安装对应的ChromeDriver,系统测试启动Chrome时会找不到驱动,导致失败。可以在before_install里添加ChromeDriver的安装步骤:

before_install:
  - sudo apt-get update
  - sudo apt-get install google-chrome-stable
  # 新增ChromeDriver安装
  - wget -N https://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
  - unzip chromedriver_linux64.zip
  - sudo mv chromedriver /usr/local/bin/
  - sudo chmod +x /usr/local/bin/chromedriver

另外,也可以用Travis的官方Chrome addon来简化安装,替换手动apt-get的步骤:

addons:
  postgresql: '9.6'
  chrome: stable  # 用这个代替手动安装Chrome

5. 优化资产预编译步骤

在production环境预编译资产时,确保yarn依赖已经安装完整,你可以在before_install里加上yarn install(虽然Travis可能自动处理,但手动加更保险)。另外,也可以考虑在测试环境预编译?不过如果你需要验证生产环境的预编译,当前的写法没问题,但要确保所有依赖都到位。

修改后的完整.travis.yml示例

language: ruby
node_js: 12
cache:
  bundler: true
  yarn: true
services:
  - redis-server
sudo: required
addons:
  postgresql: '9.6'
  chrome: stable
before_install:
  - yarn install
  # 安装ChromeDriver
  - wget -N https://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip
  - unzip chromedriver_linux64.zip
  - sudo mv chromedriver /usr/local/bin/
  - sudo chmod +x /usr/local/bin/chromedriver
before_script:
  - psql -c 'create database product_hunt_clone_test;' -U postgres
script:
  - bundle exec rake db:schema:load
  - SECRET_KEY_BASE=a RAILS_ENV=production bundle exec rake assets:precompile
  - bundle exec rake test
  - bundle exec rake test:system

按照上面的修改调整后,重新触发Travis构建,应该能解决大部分问题。如果还是失败,可以把控制台的具体错误信息贴出来,咱们再进一步排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:37:55