在CircleCI配置文件中安装一组特定的gem [英] Install a specific set of gems in a CircleCI configuration file
问题描述
我正在尝试构建一个CircleCI配置文件,该文件仅通过环境参数安装一组特定的gem。在这种情况下,我们将该环境称为 continuous_integration
,并且该环境与 test
环境匹配。到目前为止,我已经尝试了许多方法,这是我当前在此峰值中的配置。
有人能指出我正确的方向吗?
机器:
时区:
美国/洛杉矶天使
红宝石:
版本:
2.4.1
服务:
-redis
环境:
RAILS_ENV:continous_integration
数据库:
覆盖:
-捆绑程序执行RAILS_ENV = continous_integration佣金db:drop
-捆绑软件执行RAILS_ENV = continous_integration佣金db:setup
依赖关系:
pre:
-gem install bundler
覆盖:
-bundle install:
超时:180
环境:
RAILS_ENV:continous_integration
测试:
覆盖:
-捆绑包执行程序RAILS_ENV = continous_integration rspec
该解决方案仅适用于1.0版左右
根据我目前的研究,我必须验证 continous_integration
环境
已在整个Rails中正确设置事实证明,我发现 bundler
不使用ENV集,因此我正在使用以下配置来了解强制缓存gem,加快构建过程,并使用 continous_integration
环境。
参考
-
I am trying to build a CircleCI configuration file that only installs a specific set of gems via the environment parameter. In this case let's call that environment
continuous_integration
and this environment matches thetest
environment. So far I have tried a number of things and this is my current configuration in this spike.Could anyone point me in the right direction? Is this possible?
machine: timezone: America/Los_Angeles ruby: version: 2.4.1 services: - redis environment: RAILS_ENV: continous_integration database: override: - bundle exec RAILS_ENV=continous_integration rake db:drop - bundle exec RAILS_ENV=continous_integration rake db:setup dependencies: pre: - gem install bundler override: - bundle install: timeout: 180 environment: RAILS_ENV: continous_integration test: override: - bundle exec RAILS_ENV=continous_integration rspec
解决方案THIS SOLUTION ONLY WORKS WITH CIRCLE 1.0
From my current research I had to verify the
continous_integration
environment was setup correctly throughout Rails inside of secrets, the environments folder, gems, etc. As it turns out I have discovered thatbundler
does not use the ENV set so I am working with the following configuration know to force cache the gems, speed up the build process, and use thecontinous_integration
environment.References
- CircleCI gems caching
- https://github.com/sj26/rspec_junit_formatter/issues/50#issuecomment-312787281
.rspec
--color --require spec_helper --format documentation
.circle.yml
machine: timezone: America/Los_Angeles ruby: version: 2.4.1 services: - redis dependencies: pre: - gem install bundler - gem update bundler override: - bundle config without development:test - bundle check --path=vendor/bundle || bundle install --without development test --path=vendor/bundle --jobs=4 --retry=3: timeout: 180 database: override: - RAILS_ENV=continous_integration bundle exec rake db:drop - RAILS_ENV=continous_integration bundle exec rake db:setup test: override: - RAILS_ENV=continous_integration bundle exec rspec --format RspecJunitFormatter -o $CIRCLE_TEST_REPORTS/rspec.xml post: - gem install brakeman - gem install rubocop - gem install rubocop-rspec - RAILS_ENV=continous_integration bundle exec rubocop --format fuubar --require rubocop-rspec --config .rubocop.yml - RAILS_ENV=continous_integration brakeman -z
Gemfile
group :development do gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' gem 'spring-commands-rspec' gem 'spring-commands-rubocop' end group :development, :test do gem 'pry-rails' gem 'pry-nav' gem 'pry-clipboard' gem 'pry-rescue' gem 'table_print' gem 'awesome_print' gem 'guard-rake' gem 'guard-rspec' end group :development, :test, :continous_integration do gem 'brakeman', require: false gem 'rubocop', require: false gem 'rubocop-rspec', require: false gem 'timecop' gem 'mail_safe' gem 'dotenv-rails' gem 'factory_girl_rails' gem 'faker', '~> 1.6.6' end group :test, :continous_integration do gem 'simplecov' gem 'database_cleaner' gem 'rspec-rails' gem 'json_spec' gem 'json-schema' gem 'json_matchers' gem 'shoulda-matchers' gem 'nyan-cat-formatter' gem 'rspec_junit_formatter', '~> 0.3.0.pre6' gem 'webmock' gem 'vcr' end
This setup will yield the correct error output in Circle CI too
这篇关于在CircleCI配置文件中安装一组特定的gem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!