我正在尝试设置Jenkins自动作业以在部署之前运行我的Rspec测试。目标是在没有运行时数据库的情况下在远程服务器上运行测试套件。
我正在使用rake插件并具有以下命令,(请记住,这些都是rake自动添加的前提)
db:test:prepare RAILS_ENV=test
ci:setup:rspec spec RAILS_ENV=test
这在我的一个项目中运行良好,但另一个抱怨待定迁移。我的工作输出如下,
[Dev portal-admin tests] $ /var/lib/jenkins/.rvm/gems/ruby-2.0.0-p353/bin/rake db:test:prepare RAILS_ENV=test
[Dev portal-admin tests] $ /var/lib/jenkins/.rvm/gems/ruby-2.0.0-p353/bin/rake ci:setup:rspec spec RAILS_ENV=test
rm -rf spec/reports
Run `rake db:migrate` to update your database then try again.
You have 16 pending migrations:
20131219204223 DeviseCreateUsers
20131219205648 DeviseInvitableAddToUsers
etc
据我所知,db:test:prepare
应该从scheme.rb
加载数据库方案,所以我应该善于迁移。我也不明白为什么它在我进入Rspec步骤之后抱怨,而不是第一次测试:准备步骤。
我在这里做错了什么?
答案 0 :(得分:1)
我相信您的第一个佣金任务db:test:prepare
无异议地从现有schema.rb
文件中加载数据库,因为它不要求迁移是最新的。
我怀疑你后续的ci:setup:rspec
rake任务依赖于test:prepare
依赖于db:abort_if_pending_migrations
,导致你看到的中止。
对于Rails 4,至少请参阅gems目录中的activerecord-4.0.0/lib/active_record/railties/databases.rake
,了解这些rake任务定义的详细信息。