【CircleCI】Run rspec 테스트 실패로부터 해결을 향해 설정한 환경 변수(1/2)
6877 단어 CircleCI환경 변수RSpeccredentials
문제
로컬에서는 문제없이 통과하는 테스트가 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를 학습하고 있습니다. 올바른 지식을 꾸준히 착용하고 실력 있는 엔지니어가 되고 싶습니다. 계속해서 투고해 나가는 가운데, 그 때문에의 인풋도 필연적으로 늘어나, 성장에 연결될까라고 생각하고 있습니다.
지금 현재, 초보자라고 해서 변명은 할 수 없습니다만, 투고의 내용에 잘못되어 있는 곳이나, 덧붙여야 할 곳이 많이 있을까 생각하므로, 지적 받을 수 있으면 다행입니다. 이 기사를 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(【CircleCI】Run rspec 테스트 실패로부터 해결을 향해 설정한 환경 변수(1/2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/waniwaninowani/items/34505d2a713c92b8bc65
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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] }
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) }"
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
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
Reference
이 문제에 관하여(【CircleCI】Run rspec 테스트 실패로부터 해결을 향해 설정한 환경 변수(1/2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/waniwaninowani/items/34505d2a713c92b8bc65텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)