概要
- テスト環境のビルドとテストの実行を目的とする
- CircleCIとGitHubの連携
- config.ymlファイルの記述方法の確認
CircleCIとGitHubの連携
- 公式ページのガイダンスに則って連帯
- 無料枠は1ジョブまでのようなので注意
config.ymlファイルの記述方法の確認
- 連帯を行うと、強制的に当該ファイルをpushされる
- プッシュ時にCircleCIが行う検証(検査?)の内容を記述する
キー | 詳細 |
---|---|
jobs | jobを定義する、jobが一つの場合にはbuildから記述 |
docker | jobの一つとしてDockerのイメージ構築について記述 |
steps | Docker意外のタスクを定義 |
checkout | working_directoryにリポジトリをプルする(要はスタート) |
restore_cache | キャッシュをリストアしてcircleCIの動作速度を向上させる |
save_cache | パッケージなどのファイルをキャッシュセーブする、複数あればkeysと記述 |
paths | キャッシュするファイルを指定 |
run | コマンドの実行 |
name | runコマンドにつける任意の名称 |
commands | runコマンドの実体 |
workflows | jobを個別に実行できる |
orbs | executorsやcommandsなどの構成要素をまとめた塊、メソッドのようなイメージで、動作を定義する |
executors | 読んで字の如く、実行環境を定義する |
- 以下はrspecとrubocopを行う記述のサンプル(正しい記述ではないかもしれませんが、バリデーションはクリアしました)
config.yml
version: 2.1
jobs:
rspec:
docker:
- image: circleci/ruby:2.6.5-node-browsers
environment:
RAILS_ENV: test
DB_HOST: 127.0.0.1
DB_USERNAME: root
# DB_PASSWORD: password
- image: circleci/mysql:5.6
environment:
- MYSQL_DATABASE: fitness_app01_test
- MYSQL_USER: root
# - MYSQL_ROOT_PASSWORD: password
working_directory: ~/fitness_app01
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
- v1-dependencies-
- run:
name: update bundler
command: |
gem update --system
gem install bundler:2.1.4
- run: bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
key: v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
paths:
- ./vendor/bundle
- run: bundle exec rails db:create RAILS_ENV=test
- run: bundle exec rails db:schema:load RAILS_ENV=test
- run:
name: yarn Install
command: yarn install
- run: bundle exec bin/webpack
- run:
name: RSpec
command: bundle exec rspec
rubocop:
docker:
- image: circleci/ruby:2.6.5-node-browsers
environment:
RAILS_ENV: test
DB_HOST: 127.0.0.1
DB_USERNAME: root
# DB_PASSWORD: password
- image: circleci/mysql:5.6
environment:
- MYSQL_DATABASE: fitness_app01_test
- MYSQL_USER: root
# - MYSQL_ROOT_PASSWORD: password
working_directory: ~/fitness_app01
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
- v1-dependencies-
- run:
name: update bundler
command: |
gem update --system
gem install bundler:2.1.4
- run: bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
key: v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
paths:
- ./vendor/bundle
- run: bundle exec rails db:create RAILS_ENV=test
- run: bundle exec rails db:schema:load RAILS_ENV=test
- run:
name: RuboCop
command: bundle exec rubocop
workflows:
version: 2.1
rspec_and_rubocop_workflow:
jobs:
- rspec
- rubocop
bundlerのバージョン2の衝突への対処
- バージョンを指定してコマンドを走らせる
config.yml
- run:
name: update bundler
command: |
gem update --system
gem install bundler:2.1.4
javascriptに係るエラーへの対処
- yarnをインストールすればほぼ対処可能
config.yml
- run:
name: yarn Install
command: yarn install
- run: bundle exec bin/webpack
- config.ymlのバリデーションチェク
% circleci config validate -c .circleci/config.yml