6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【CircleCI】config.ymlの書き方

Last updated at Posted at 2020-12-09

概要

  • テスト環境のビルドとテストの実行を目的とする
  • 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
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?