CircleCI config.yml 편지지 Rails 6/PostgreSQL/Rspec
다음 페이지에 이전에 있던 샘플을 복사하여 개조한 것입니다(현재는 내용이 상당히 바뀌고 있습니다).
h tps : // / rc ぇ시. 이 m / cs / 2.0 /
config.yml
version: 2.1
orbs:
ruby: circleci/[email protected]
jobs:
build:
docker:
- image: circleci/ruby:2.6.6-buster-node-browsers
environment:
RAILS_ENV: test
PGHOST: 127.0.0.1
PGUSER: circleci
TZ: "/usr/share/zoneinfo/Asia/Tokyo"
- image: circleci/postgres:11.7
environment:
POSTGRES_USER: circleci
POSTGRES_DB: blog_rails6_test
POSTGRES_HOST_AUTH_METHOD: trust # パスワードなし
TZ: "/usr/share/zoneinfo/Asia/Tokyo"
steps:
- checkout
- restore_cache:
keys:
- blog-bundle-v1-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
- blog-bundle-v1-
- run:
name: Bundler and Yarn
command: |
gem install bundler -v '2.1.4' -N
bundle -v
bundle install --jobs=3 --retry=3 --path vendor/bundle
yarn install
- save_cache:
paths:
- ./vendor/bundle
- ./node_modules
key: blog-bundle-v1-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
- run:
name: DB Initializing
command: |
dockerize -wait tcp://localhost:5432 -timeout 1m
bundle exec rake db:schema:load
- run:
name: rspec
command: |
bundle exec rspec --format RspecJunitFormatter \
--out test_results/rspec.xml \
--format documentation
- store_test_results:
path: test_results
이하, 자신을 위한 해설.
orbs 무엇을 모른다. 나중에 조사한다. → 새로운 기사 orb와 최신 이미지를 사용한 버전 에.
orbs:
ruby: circleci/[email protected]
E2E 테스트(headless Chrome)를 사용하는 경우는, 「-node-browsers」를 선택하는 것.
- image: circleci/ruby:2.6.6-buster-node-browsers
PostgreSQL을 패스워드 없이 사용하는 경우는 이 환경 변수가 필요.
POSTGRES_HOST_AUTH_METHOD: trust # パスワードなし
Webpacker를 사용하는 경우 node_modules 캐시를 만듭니다. Gemfile.lock 이외에 yarn.lock 변경으로 업데이트됩니다.
- restore_cache:
keys:
- blog-bundle-v1-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
- blog-bundle-v1-
# 中略
- save_cache:
paths:
- ./vendor/bundle
- ./node_modules
key: blog-bundle-v1-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
Bundler 버전을 올릴 때 설치가 필요합니다.
gem install bundler -v '2.1.4' -N
PostgreSQL이 일어날 때까지 기다린다. 정말 필요한지 확실하지 않습니다.
dockerize -wait tcp://localhost:5432 -timeout 1m
RSpec JUnit Formatter 형식으로 로그를 출력하고
store_test_results
로 저장합니다. 그러면 CircleCI 사이트에서 다음 링크에서 결과를 볼 수 있습니다. - run:
name: rspec
command: |
bundle exec rspec --format RspecJunitFormatter \
--out test_results/rspec.xml \
--format documentation
- store_test_results:
path: test_results
Gemfile에 RSpec JUnit Formatter를 넣어 둔다.
group :test do
# 略
gem 'rspec_junit_formatter'
end
병렬 실행
parallelism에 숫자를 지정한 후,
jobs:
build:
parallelism: 2
circleci tests
명령을 포함하여 spec 파일을 분리합니다. circleci tests glob
에 건네주는 인수의 서식은, Ruby 의 Dir.glob 와 같다. - run:
name: rspec
command: |
bundle exec rspec --format RspecJunitFormatter \
--out test_results/rspec.xml \
--format documentation \
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split)
특정 디렉토리를 제외하고 싶을 때는 다음과 같은 느낌으로.
- run:
name: rspec
command: |
bundle exec rspec --format RspecJunitFormatter \
--out test_results/rspec.xml \
--format documentation \
$(circleci tests glob "spec/{controllers,forms,models,services}/**/*_spec.rb" | circleci tests split)
structure.sql을 사용하는 경우
structure.sql을 사용하는 경우 postgresql-client 설치가 필요합니다.
- run:
# db:structure:loadに必要
name: Install postgresql-client
command: |
sudo apt-get update || true
sudo apt install -y postgresql-client
db:schema:load 대신 db:structure:load라고 가정합니다.
- run:
name: DB Initializing
command: |
dockerize -wait tcp://localhost:5432 -timeout 1m
bundle exec rake db:structure:load
README에 배지를 표시
README.md
[![blog-rails6-vuejs](https://circleci.com/gh/kazubon/blog-rails6-vuejs.svg?style=shield)](https://app.circleci.com/pipelines/github/kazubon/blog-rails6-vuejs)
Reference
이 문제에 관하여(CircleCI config.yml 편지지 Rails 6/PostgreSQL/Rspec), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazutosato/items/9817e746ae760fe27b6e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)