circleCIにてbundle exec rspecができない
前提・実現したいこと
circleCIにてCICDを実現したいです。
数十回こまごまとした修正をしているのですが、全く進展がないので
ご質問させていただきます。
発生している問題・エラーメッセージ
circleci/config.yml↓
version: 2.1 orbs: ruby: circleci/ruby@1.1.2 # config.ymlのruby向け記法を導入 node: circleci/node@2 heroku: circleci/heroku@1.2.3 jobs: build: docker: - image: circleci/ruby:2.7-node working_directory: ~/repec-exercise-sho/src steps: - checkout: path: ~/repec-exercise-sho - ruby/install-deps test: docker: - image: circleci/ruby:2.7-node - image: circleci/mysql:5.5 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: app_test MYSQL_USER: root environment: BUNDLE_JOBS: "3" BUNDLE_RETRY: "3" APP_DATABASE_HOST: "127.0.0.1" RAILS_ENV: test working_directory: ~/repec-exercise-sho/src steps: - checkout: path: ~/repec-exercise-sho - ruby/install-deps - run: name: bundle install command: bundle install - run: name: Database setup command: bundle exec rake db:create - run: name: RSpec command: bundle exec rspec deploy: docker: - image: circleci/ruby:2.7 steps: - checkout - setup_remote_docker: version: 19.03.13 - heroku/install - run: name: heroku login command: heroku container:login - run: name: push docker image command: heroku container:push web -a $HEROKU_APP_NAME - run: name: release docker image command: heroku container:release web -a $HEROKU_APP_NAME - run: name: database setup command: heroku run bundle exec rake db:migrate RAILS_ENV=production -a $HEROKU_APP_NAME workflows: version: 2 build_test_and_deploy: jobs: - build - test: requires: - build - deploy: requires: - test filters: branches: only: main
Dockerfile↓
FROM ruby:2.7 ENV RAILS_ENV=production RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y nodejs yarn build-essential default-mysql-client WORKDIR /app COPY ./src /app RUN bundle config --local set path 'vendor/bundle' \ && bundle install COPY start.sh /start.sh RUN chmod 744 /start.sh CMD [ "sh", "/start.sh" ]
start.sh↓
#! /bin/sh if [ "${RAILS_ENV}" = "production" ] then bundle exec rails assets:precompile fi bundle exec rails s -p ${PORT:-3000} -b 0.0.0.0
docker-compose.yml↓
version: '3' services: db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password volumes: # - ./src/db/mysql_data:/var/lib/mysql - mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_USER: root web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - ./src:/app ports: - "3000:3000" depends_on: - db volumes: mysql_data:
circleCI実行結果↓
testジョブの最後でerrorとなります。
試したこと
上記config.ymlでは
bundle exec rake db:create
となっていますが、
bundle exec rrails db:create
とした場合、同様のエラー(bundler: command not found: rails)となってしまいます。
docker-compose upをしてlocalhostで実行している場合はrspecも動作するため、
circleCI環境で、PATHをうまく拾えていないのかもしれないのですが、
ここからどのように進めていいかわかりません。。
補足情報
ruby 2.7.4
rails 6.1.4
Docker (docker engine 20.10.7), Docker-compose
RSpec 3.10 (rspec-rails 5.0.1)
circleCI version2
Heroku
回答1件
あなたの回答
tips
プレビュー