【CircleCI】Run rspec 테스트 실패로부터 해결을 향해 설정한 환경 변수(1/2)

문제



로컬에서는 문제없이 통과하는 테스트가 CircleCI에서 Run rspec에서 오류가 발생했습니다.

CircleCI의 Run rspec 오류 내용 (발췌)
Failures:
   1) リクエストが成功する

     Failure/Error: let(:url) { Rails.application.credentials.api[:API_URI] }

     NoMethodError:
        undefined method `[]' for nil:NilClass

     # ./spec/requests/suggests_spec.rb:6:in `block (2 levels) in <top (required)>'

     # ./spec/requests/suggests_spec.rb:11:in `block (2 levels) in <top (required)>'


에러 내용을 확인.
그리고 해당 파일을 확인하면.
그냥,
 let(:url) { Rails.application.credentials.api[:API_URI] }

환경 변수를 취득해, 인스턴스 변수에 대입하려고 하고 있는 행이었다.
여기에서 CircleCI에 잘 환경 변수를 전달할 수 없다는 것을 알 수 있습니다.
여기에서 각 설정 항목을 다음과 같이 확인합니다.

.circleci/config.yml에 설정



.circleci/config.yml

heroku_deploy:
    working_directory: ~/my_app
    docker:
      - image: sue445/heroku-cli
    steps:
      - checkout
      - build-tools/install-ci-tools
<!---(中略)->
      - run:
          name: Deploy
          command: |
            git push https://heroku:[email protected]/$HEROKU_APP_NAME.git master
      - run:
          name: Run post-deploy tasks
          command: |
            heroku config:set AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY RAILS_MASTER_KEY=$RAILS_MASTER_KEY # ここ
            heroku run bin/rails db:migrate
            heroku run bin/rails runner "['products', 'taxons', 'option_values', 'product_option_types', 'product_properties', 'variants', 'assets'].each { |table| Spree::Sample.load_sample(table) }"

RAILS_MASTER_KEY=$RAILS_MASTER_KEY, 추가

Dockerfile.dev로 설정


FROM ruby:2.5.1-stretch

ENV ENTRYKIT_VERSION 0.4.0
ARG RAILS_MASTER_KEY  # ここ
ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}  # ここ
WORKDIR /my_app

RUN apt-get update                                                                                                                      \
  && apt-get install                                                                                                                    \
    openssl                                                                                   

ARG RAILS_MASTER_KEY
ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}
추가

docker-compose.ci.yml에 설정


version: "3"

services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    networks:
      - default
    ports:
      - '33306:3306'
  redis:
    image: redis:alpine
    networks:
      - default
    ports:
      - '36379:6379'
  my_app:
    build:
      context: .
      dockerfile: Dockerfile.ci
    container_name: my_app
    ports:
      - '3000:3000'
    environment:
      MYSQL_USERNAME: root
      MYSQL_PASSWORD: password
      MYSQL_HOST: mysql
      REDIS_URL: "redis://redis:6379"
      RAILS_MASTER_KEY: ${RAILS_MASTER_KEY} #ここ
    depends_on:
      - mysql
      - redis
    networks:
      - default
    command: bundle exec rails server -b 0.0.0.0

RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}
추가.

CircleCI 관리 화면으로부터의 설정・Heroku의 환경 변수 확인・등록에 대해서, 길어져 버렸으므로, 또 추가로 투고하고 싶습니다.

끝에.



끝까지 읽어 주셔서 감사합니다
전직을 위해, 미경험의 상태로부터 Rails를 학습하고 있습니다. 올바른 지식을 꾸준히 착용하고 실력 있는 엔지니어가 되고 싶습니다. 계속해서 투고해 나가는 가운데, 그 때문에의 인풋도 필연적으로 늘어나, 성장에 연결될까라고 생각하고 있습니다.
지금 현재, 초보자라고 해서 변명은 할 수 없습니다만, 투고의 내용에 잘못되어 있는 곳이나, 덧붙여야 할 곳이 많이 있을까 생각하므로, 지적 받을 수 있으면 다행입니다. 이 기사를 읽어 주셔서 감사합니다.

좋은 웹페이지 즐겨찾기