背景
Orbの知識ではなく、つまづいた時にソースやアップデートの情報をどう調べたかという初心者の記録です。
こちらのドキュメント(Language Guide: Ruby - CircleCI)を参考に手元でCircleCIを動かして勉強していた際、下記のような簡単な設定で実行したところ、エラーログが吐かれました。
version: 2.1
orbs:
ruby: circleci/ruby@1.1.0
node: circleci/node@3.0.1 # 参考にしたサンプルではバージョンが"@2"
jobs:
build:
docker:
- image: cimg/ruby:2.5-node
steps:
- checkout
- ruby/install-deps
- node/install-packages:
pkg-manager: yarn
cache-key: "yarn.lock" # 後述 : これでエラーが出る
workflows:
version: 2
build_and_test:
jobs:
- build
#!/bin/sh -eo pipefail
# Error calling workflow: 'build_and_test'
# Error calling job: 'build'
# Error calling command: 'node/install-packages'
# Unexpected argument(s): cache-key
#
# -------
# Warning: This configuration was auto-generated to show you the message above.
# Don't rerun this job. Rerunning will have no effect.
false
Exited with code exit status 1
CircleCI received exit code 1
cache-key
は知らないよということなので、circleci/node@3.0.1
かそれ以前においてパラメータが廃止されていることを確認してみることにしました。
調べた流れ
Orbのコマンドについては、GitHubリポジトリの./src/commands
にそれぞれを定義したYAMLファイルが置かれています。
今回の場合はinstall-packages
コマンドが対象なので、該当するのは以下のページです。
https://github.com/CircleCI-Public/node-orb/blob/master/src/commands/install-packages.yml
このファイルのCommit履歴(本投稿記述時で5つだけ)を新しいものから遡れば、cache-key
が廃止された際の更新が見られるだろうと思ったのですが、最新のものがまさにそれでした。
Advanced conditionals [semver:major] (#38) · CircleCI-Public/node-orb@c0c6a55
コメントで
cache-key parameter removed. Now decided automatically.
など、設定の自動化に伴い必要がなくなったパラメータcache-key
が削除された旨が説明されています。
(定義が削除されている箇所)
また、上記の変更では<< parameters.pkg-manager >>
がnpm
かyarn
であるかによって条件分岐が設けられ、save_cache
のキーの一部<<parameters.cache-key>>
が、それぞれpackage-lock.json
あるいはyarn.lock
に置き換わっています。
説明にある「自動的に決定される」の該当部分を確認することもできました。
設定ファイルの修正
前項より、pkg-manager
がnpm
かyarn
によってキャッシュが自動で設定されることが分かったので、冒頭の設定ファイルを修正してみます。
version: 2.1
orbs:
ruby: circleci/ruby@1.1.0
node: circleci/node@3.0.1 # 参考にしたサンプルではバージョンが"@2"
jobs:
build:
docker:
- image: cimg/ruby:2.5-node
steps:
- checkout
- ruby/install-deps
- node/install-packages:
pkg-manager: yarn
# cache-key: "yarn.lock" <--この記述を削除
workflows:
version: 2
build_and_test:
jobs:
- build
変更をpushして実行すると、ビルドエラーは起きませんでした。
あとがき
些細な調べ事についてでしたが、パッケージやライブラリを利用する時など、参考にするチュートリアルなどの記述と異なるバージョンのものを使用したい時などに、設定パラメータの定義が変更されていて振り回されるような場面は今後遭遇しやすいのではないかと考えたので、記録に残してみました。