Help us understand the problem. What is going on with this article?

[備忘録] CircleCIのOrbのバージョンの違いによる設定パラメータの有無について調べたときの小メモ

背景

Orbの知識ではなく、つまづいた時にソースやアップデートの情報をどう調べたかという初心者の記録です。

こちらのドキュメント(Language Guide: Ruby - CircleCI)を参考に手元でCircleCIを動かして勉強していた際、下記のような簡単な設定で実行したところ、エラーログが吐かれました。

./circleci/config.yml(修正前)
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 >>npmyarnであるかによって条件分岐が設けられ、save_cacheのキーの一部<<parameters.cache-key>>が、それぞれpackage-lock.jsonあるいはyarn.lockに置き換わっています。
説明にある「自動的に決定される」の該当部分を確認することもできました。

設定ファイルの修正

前項より、pkg-managernpmyarnによってキャッシュが自動で設定されることが分かったので、冒頭の設定ファイルを修正してみます。

./circleci/config.yml(修正後)
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して実行すると、ビルドエラーは起きませんでした。

あとがき

些細な調べ事についてでしたが、パッケージやライブラリを利用する時など、参考にするチュートリアルなどの記述と異なるバージョンのものを使用したい時などに、設定パラメータの定義が変更されていて振り回されるような場面は今後遭遇しやすいのではないかと考えたので、記録に残してみました。

RiSE_blackbird
元製造業 rails, vue, gcp, ...
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away