처음 CircleCI. Rails 프로젝트를 사용해보십시오.
8850 단어 CircleCI루비RailsCircleCI2.0
이 기사의 목표
RSpec으로 작성된 Ruby on Rails 앱을 CircleCI에서 테스트
운영 환경
ruby 2.5.1
rails 5.2.2
CircleCI 2
애플리케이션 설정
첫째, Rails 앱 설정. 무심코 셋업해 간다.
$ rails new circle-ci-test -d mysql
$ cd circle-ci-test
$ rails db:create
$ rails g rspec:install
$ rails g scaffold product title:string content:text
$ rails db:migrate
$ rails s
이상으로 product 자원을 CRUD 처리하는 기능이 완성되었다. 아래와 같은 칸지.
테스트를 CI로 시험해보고 싶기 때문에, RSpec를 써 간다.
spec 쓰기
컨트롤러 spec이 자동으로 생성되고 있지만 모델 쪽이 테스트를 작성하기 쉽고 간단하기 때문에 컨트롤러 spec은 삭제. product 모델에 밸리데이션을 실장해, 그 테스트를 써 간다.
product.rb
class Product < ApplicationRecord
validates :title, :content, presence: true
validates :title, length: { in: 5..20 }
end
product_spec.rb
require 'rails_helper'
RSpec.describe Product, type: :model do
it 'title, contentが存在するので、バリデーションが通る' do
product = Product.new(title: 'こんにちは!', content: '元気ですか!')
expect(product).to be_valid
end
it 'titleが存在しないので、バリデーションが弾かれる' do
product = Product.new(content: '元気ですか!')
expect(product).not_to be_valid
end
it 'contentが存在しないので、バリデーションが弾かれる' do
product = Product.new(title: 'こんにちは!')
expect(product).not_to be_valid
end
it 'titleが5文字未満なので、バリデーションが弾かれる' do
product = Product.new(title: 'パクチー')
expect(product).not_to be_valid
end
end
테스트 실행
$ bundle exec rspec
...
Finished in 0.01224 seconds (files took 0.81481 seconds to load)
4 examples, 0 failures
OK, 테스트 앱은 가능했습니다. 이상을 커밋하고 Github 리포지토리를 만들어 push한다.
CircleCI 설정
CircleCI에 가입하여 GirHub 연계를 하면 대시보드가 표시되고 다음 카드가 표시된다.
이 화상대로 설정을 해본다.
circle-ci-test 저장소 발견. Set Up Project 버튼을 누릅니다.
버튼을 누르면 이런 화면에.
아래쪽에 친절하게 설정 방법이 쓰여 있다. 이것에 따르면 기본적인 설치를 할 수 있는 친절한 디자인. 최고
이 순서로 설정한다.
$ mkdir .circleci && cd .circleci && touch config.yml && cd ..
config.yml을 다음 설정으로 설정합니다.
조금 시행 착오했다.
# Ruby CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/ruby:2.5.1-node-browsers
environment:
RAILS_ENV: test
MYSQL_HOST: 127.0.0.1
MYSQL_USERNAME: 'root'
MYSQL_PASSWORD: ''
MYSQL_PORT: 3306
- image: circleci/mysql:5.7.18
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: true
MYSQL_ROOT_PASSWORD: ''
MYSQL_DATABASE: circle_ci_test-test
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/postgres:9.4
working_directory: ~/circle-ci-test
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: install dependencies
command: |
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
# Database setup
- run:
name: waiting for stating database
command: dockerize -wait tcp://127.0.0.1:3306 -timeout 1m
- run: bundle exec rake db:create
- run: bundle exec rake db:schema:load
# run tests!
- run:
name: Run rspec in parallel
command: |
bundle exec rspec --profile 10 \
--format RspecJunitFormatter \
--out test_results/rspec.xml \
--format progress \
$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results
또한 Gemfile에 다음을 추가합니다.
gem 'rspec_junit_formatter'
bundle install하고 push하면 자동으로 Github에서 빌드 및 테스트 실행됩니다!
잡감
매우 간단! 팀 개발하는 경우는 점점 넣어 가고 싶은 곳!
또한 위의 프로젝트를 Github의 공공 리포지토리에 등록했다면 CircleCI에서 피드백 설문지 부탁 이메일이 왔습니다. 사용자와 함께 좋은 제품을 만들고 있어 최고입니다.
Reference
이 문제에 관하여(처음 CircleCI. Rails 프로젝트를 사용해보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rentama/items/477d3dcae423373f7c0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)