Кэширование Rake / Bundle Old Gemfile Path - Какой конфиг я могу проверить? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть контейнер Docker, основанный на bluerabbit / ruby-oci8, который показывает странную проблему.Когда я создаю контейнер Docker, я запускаю «комплектную установку» для Gemfile (tmp / accept_tests / Gemfile), который содержит все наши любимые гемы.Я делаю это для предварительной установки гемов для использования в конвейере Concourse CI / CD.Перед запечатыванием образа Docker я удаляю папку / tmp / accept_tests.

Странно то, что теперь, когда я запускаю команду "rake" или "bundle install", она говорит "/ tmp / accept_tests"Gemfile не найден ".Я не могу понять, где этот путь может быть кэширован.Он не хранится в конфигурации среды или среде gem.

Где я могу проверить, где хранится этот путь / tmp / accept_tests / Gemfile?

$ printenv
RUBY_MAJOR=2.4
BUNDLER_VERSION=1.14.6
NODE_VERSION=7.9.0
HOSTNAME=d3761a750384
YARN_VERSION=0.23.2
RUBYGEMS_VERSION=2.6.11
LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2
HOME=/home/circleci
OLDPWD=/usr/local/bin
BUNDLE_APP_CONFIG=/usr/local/bundle
BUNDLE_BIN=/usr/local/bundle/bin
RUBY_VERSION=2.4.1
TERM=xterm
PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
BUNDLE_PATH=/usr/local/bundle
NPM_CONFIG_LOGLEVEL=info
DISPLAY=:99
LANG=C.UTF-8
DEBIAN_FRONTEND=noninteractive
GEM_HOME=/usr/local/bundle
RUBY_DOWNLOAD_SHA256=4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654
PWD=/usr/local
BUNDLE_SILENCE_ROOT_WARNING=1
NLS_LANG=AMERICAN_AMERICA.US7ASCII
$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.11
  - RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/bundle
  - USER INSTALLATION DIRECTORY: /home/circleci/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bundle/bin
  - SPEC CACHE DIRECTORY: /home/circleci/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/bundle
     - /home/circleci/.gem/ruby/2.4.0
     - /usr/local/lib/ruby/gems/2.4.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "install" => "--no-document"
     - "update" => "--no-document"
     - :sources => ["http://REDACTEDARTIFACTREPO/rubygems/"]
  - REMOTE SOURCES:
     - http://REDACTEDARTIFACTREPO/rubygems/
  - SHELL PATH:
     - /usr/local/bundle/bin
     - /usr/local/bundle/gems/bin
     - /usr/local/bundle/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin

Добавление моего Dockerfile по запросу.Некоторые из вещей, которые я делаю, могут быть ненужными, но это после нескольких итераций эксперимента.

FROM bluerabbit/ruby-oci8

# Clean up unwanted bluerabbit/ruby-oci8 stuff
RUN sudo rm -f docker-entrypoint.sh
RUN sudo rm -rf /home/node

# Set Bourne as default shell and entrypoint
RUN sudo chsh -s /bin/sh
ENTRYPOINT /bin/sh

# Ruby & Acceptance Test Setup
## Reconfigure gem sources
RUN gem sources -a http://REDACTED_INTERNAL_GEM_REPO/rubygems/
RUN gem sources -r https://rubygems.org/

## Setup environment for bundle install
COPY Gemfile /tmp/Gemfile
COPY Rakefile /tmp/Rakefile
COPY acceptance_tests ./tmp/acceptance_tests

## Write perms required for Gemfile.lock, +t required because gem/bundle needs a 'secure' tmp directory
RUN sudo chmod -R 777 tmp && sudo chmod +t tmp
RUN cd tmp && pwd && bundle install --system

## bundle install against acceptance_tests/Gemfile.lock just to be safe
RUN cd tmp/acceptance_tests && pwd && bundle install --system

ENV NLS_LANG=AMERICAN_AMERICA.US7ASCII

RUN sudo rm -rf tmp/acceptance_tests && sudo rm tmp/Rakefile && sudo rm tmp/Gemfile && sudo rm tmp/Gemfile.lock

# From How To Use Bundler with Docker https://bundler.io/v2.0/guides/bundler_docker_guide.html
ENV GEM_HOME="/usr/local/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH
RUN unset BUNDLE_PATH && unset BUNDLE_BIN

Gemfile, используемый в Dockerfile

gem 'rake'
gem 'restassured'
gem 'cucumber'
gem 'ffi'
gem 'json'
gem 'nokogiri'
gem 'rest-client'
gem 'rspec'
gem 'watir'
gem 'headless'
gem 'IAMServices'
gem 'page-object'
gem 'activerecord-oracle_enhanced-adapter', '1.8.2'
gem 'activerecord', '5.1.4'
gem 'ruby-oci8', '2.2.5'
...