selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

CircleCI 2.0 をlocalで動かす

概要

自分がいるプロダクトでCircleCI 2.0 の導入をすることになった。 恥ずかしいことにCircleCIの設定を自分でしたことが無かったので、設定を簡単にする方法を探した。 公式ドキュメントを読んでいたら、circleci をlocalで動かす方法が見つかったのでやってみた。 その結果、10minくらいで簡単に動かせることが分かった。

このドキュメントには、circleciをlocalで動かす方法と、localで動かす際の注意点を記載する。 基本的には、このドキュメントからの抜粋なので、疑問に思ったらそっちを見て頂けると :pray:

手順

  • circleciコマンドのインストール
  • circleci 2.0用の設定ファイルを書く
  • local環境でcircleciを動かす

circleciコマンドのインストール

curl -o /usr/local/bin/circleci https://circle-downloads.s3.amazonaws.com/releases/build_agent_wrapper/circleci && chmod +x /usr/local/bin/circleci
circleci update

これだけで完了

circleci 2.0用の設定ファイル

今回利用した circleci設定ファイルはこちら。

#.circleci/config.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/node:8.9
    working_directory: ~/repo
    steps:
      - checkout
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "package.json" }}
          - v1-dependencies-
      - run: yarn install
      - save_cache:
          paths:
            - node_modules
          key: v1-dependencies-{{ checksum "package.json" }}
      - run:
          name: Running tests
          command: yarn jest
      - run:
          name: tslint
          command: yarn tslint -c tslint.json 'src/**/*.ts'

ここでは、この設定の説明はしない。下記のページにconfigの書き方が記載されているので、確認して欲しい。

Configuring CircleCI - CircleCI

local環境でcircleciを動かす

# 設定した config.ymlが正しいか確認する
$ circleci config validate -c .circleci/config.yml 
config file is valid
# circleciをlocalで動かす
$ circleci build .circleci/config.yml

====>> Spin up Environment
Build-agent version 0.0.4536-a668371 (2017-11-15T20:13:56+0000)
Starting container circleci/node:8.9
  using image circleci/node@sha256:80714f293dfc6fc72c815a5bc1dc35bf33b3b8e0ebfaec0b4a64c567bbd1e766
....
$ /home/circleci/repo/node_modules/.bin/jest
 PASS  __tests__/parse.spec.ts
 PASS  __tests__/checker.spec.ts

Test Suites: 2 passed, 2 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        3.074s
Ran all test suites.
Done in 3.73s.
Success!
...

これで circleciをlocalで動かすことができた。 続いて、circleciをlocalで動かすときの注意点を記載していく。

注意点

  • 環境変数を指定するときは -e オプションを使うこと
    • circleci build .circleci/config.yml -e VAR=VAL みたいに書く必要がある
  • circleci CLIは Workflowsに対応していない
  • restore_cache, save_cache が使えない
# restore_cacheのエラーログ
====>> Restoring Cache
Error: Skipping cache - error checking storage: not supported

Step failed

最後に

circleciの設定をlocalで確認できるようになると、ちょっと書き換えるときにも色々と捗るので便利そう!