よしたく blog

ほぼ週刊で記事を書いています

CircleCIをローカルで動かす

f:id:yoshitaku_jp:20181203152044p:plain

この記事は、yoshitaku_jpの1人 Advent Calendar 2018 - Adventar の1日目の記事です。

設定ファイルの構文が間違っていたりしたとき修正後にpushするのがめんどくさくなったので、ローカル環境で実行する方法を見つけてきました。

macOS

brewでインストールできます。

brew install circleci

https://circleci.com/docs/2.0/local-cli/#alternative-install-on-macos-with-homebrew

macOS or Linux

この方法でもいけます。Linuxはこちら。

curl -fLSs https://circle.ci/cli | bash

https://circleci.com/docs/2.0/local-cli/#installing-the-circleci-cli-on-macos-or-linux

実行

実行前の制限事項

いくつかローカルでは使えない機能があるので、実行する前に並べておきます

  • キャッシュは使えない
  • 環境変数の設定の仕方 -ワークフローは対応していない

キャッシュは使えない

save_cacherestore_cacheは、スキップされてwarningが表示される。現在サポートしていない記述があるので、将来的にはあるのかなぁ。

環境変数の設定の仕方

Environment Variables が使えないので別の方法で設定します。

-e で使えます。 circleci build -e VAR1=FOO -e VAR2=BAR

ワークフローは対応していない

ローカルのdockerを使って実行しているようで、ワークフローには対応していません。

実行コマンド

cd //対象のプロジェクト
circleci build

その他のコマンド

circleci config validate

circleci config validate で、設定ファイルの記述が正しいか教えてくれる

正しい形

yoshitaku$ circleci config validate
Config file at .circleci/config.yml is valid.

checkout の前のハイフンを削除してみた

   steps:
       checkout

      - run: npm install
      - run:
          name: 'Install Dependecies'
          command: npm install -save firebase-tools

実行結果

yoshitaku$ circleci config validate
Error: Unable to parse YAML
mapping values are not allowed here
 in 'string', line 12, column 12:
          - run: npm install

circleci local execute --job JOB_NAME

単独のジョブを指定できる。 testとbuildとdeployを分けてる場合があるかも知れないが、ワークフローで一気にやることなく、個別で動かすことができる。