9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CircleCIAdvent Calendar 2020

Day 15

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

Last updated at Posted at 2020-08-05

背景

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して実行すると、ビルドエラーは起きませんでした。

あとがき

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

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?