環境
- Circle CI 2.1
- Node + MySQL(ですが、主にCircle CIの設定のため、←の環境には大きく依存していません)
設定例
version:2.1executors:default:docker:-image:circleci/node:10.18.0-busterextended:docker:-image:circleci/node:10.18.0-buster-image:circleci/mysql:5.7environment:MYSQL_ALLOW_EMPTY_PASSWORD:'yes'MYSQL_DATABASE:your_database_name_comes_herecommands:restore_node_dependencies:steps:-restore_cache:name:Restore node dependencies cachekeys:-v1-node-dependencies-{{ checksum "yarn.lock" }}-v1-node-dependenciesinstall_node_dependencies:steps:-run:name:Install node dependenciescommand:yarn install --frozen-lockfilesave_node_dependencies:steps:-save_cache:name:Save node dependencies cachekey:v1-node-dependencies-{{ checksum "yarn.lock" }}paths:-node_moduleswait_for_db_start_up:steps:-run:name:Wait for db start upcommand:dockerize -wait tcp://127.0.0.1:3306 -timeout 1mrun_test:steps:-run:name:Run testcommand:yarn run testjobs:build:executor:defaultsteps:-checkout-restore_node_dependencies-install_node_dependencies-save_node_dependenciestest:executor:extendedsteps:-checkout-restore_node_dependencies-wait_for_db_start_up-run_testworkflows:build_and_test:jobs:-build-test:requires:-build
ポイント
2.1
の機能(executors
、commands
)を使って、設定をわかりやすくする。executor
を最適化する。- 例えば、DBのセットアップは数十秒かかるので(※実測で20秒程)、不要なところでは行わない。
- 上記の例では、
build
(yarn install
)にDBは不要なので、DBが無いexecutor
(= default)を使っています。 executor
の名前(defaultやextended)は任意です。
- テスト実行前に、DBの起動待ちをする(
dockerize -wait
)。 step
内でname
を付ける。- 無くてもいいですが、その場合はCircleCIのデフォルトが使われます。
restore_cache
などは全てRestoring Cache
となり、中を見ないとどのステップか分からなくなるので、付けています。
- 無くてもいいですが、その場合はCircleCIのデフォルトが使われます。
参照先
yarn install
に --frozen-lockfile
オプションを付ける
- https://circleci.com/docs/ja/2.0/yarn/
- https://classic.yarnpkg.com/ja/docs/cli/install/#toc-yarn-install-frozen-lockfile
version: 2.1
では workflows
の version 指定は不要。
その他
- ソースコードが大きくなってきたら、ソースコードのキャッシュも検討する(※デフォルトでやっておいてもいいかもしれない)。