在CircleCI配置文件中安装一组特定的gem [英] Install a specific set of gems in a CircleCI configuration file

查看:91
本文介绍了在CircleCI配置文件中安装一组特定的gem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试构建一个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 the test 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 that bundler 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 the continous_integration environment.

    References

    .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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆