CircleCIで自動テスト、デプロイを走らせてみた
対象読者
サークルCIを理解し、自分と似たような開発環境でサークルCIを導入して、自動テストや、自動デプロイを実装したい方向けに本記事を書いております。かなり限定的ですが、お役に立てることがあるかと思いますのでぜひ最後まで読んでください
開発環境
Ruby:2.6.5
Ruby on Rails:6.0.3.4
docker-compose
Capistrano:3.14.1
開発状況
CapistranoでAWS(EC2)に自動デプロイを実装後、ローカル環境にdocker-composeを実装し、CircleCIを走らせる時はimageを指定するだけの状況になっている。
これから実装すること
私が参考にした記事がありますので、そちらを元に実装するとわかりやすいと思いますのでそちらみて実装してください!
https://qiita.com/AK4747471/items/882b70f663f4a80ae770
こちらの実装を参考にし、自分用ににカスタマイズして実装をした結果↓
version: 2.1
jobs:
build:
docker:
- image: circleci/ruby:2.6.5-node-browsers
environment:
- BUNDLER_VERSION: 2.2.3
- RAILS_ENV: 'test'
- image: circleci/mysql:5.7
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
- MYSQL_ROOT_HOST: '127.0.0.1'
working_directory: ~/
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
- v1-dependencies-
- run:
name: install dependencies
command: |
gem install bundler -v 2.2.3
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
# Database setup
- run: mv ./config/database.yml.ci ./config/database.yml
# Database setup
- run:
name: DatabaseSetup
command: |
bundle exec rake db:create
bundle exec rake db:schema:load
# yarn install
- run:
name: yarn Install
command: yarn install
- run: bundle exec bin/webpack
# run tests!
- run:
name: RSpec 並列処理
command: |
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "**/spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
bundle exec rspec --format progress \
--out /tmp/test-results/rspec.xml \
--format progress \
$TEST_FILES
- add_ssh_keys:
fingerprints:
- ""
- deploy:
name: Capistrano deploy
command: |
if [ "${CIRCLE_BRANCH}" != "master" ]; then
exit 0
fi
bundle exec cap production deploy
# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results
個人の記述に関しては消してありますが、大体の記述に関しては動きますので、エラーが出ていない今は大丈夫だと思います。
この記述の走らせると一部ではありますが、このようになります。
注意したこと
ネットの記事を参考にする上で注意したこと!
1. ディレクトリ構造
2. スペルミス
3. ファイル名
4. バージョン
この四つは必ず意識してコピペや転用した方が良いと思います。
実際にここの四つを意識しないと、永遠に理解できないエラーにハマってしまう可能性があるため、十分にきおつけて実装すると良いでしょう。
また理解不足によるミスも起きてしまう可能性があるため、実装時はある程度理解した状況で実装を進めるといいと思います。