[2019-12-20-1] で circleci/orb-tools を解説しました。リリースフローがよく出来ていたので、感動した記憶があります。

しかし、記事を書いた時にはすでに v9.0.0 がリリースされており、それはそれは大きな BREAKING CHANGES でした…。

やる気が出なかったので、tfupdate orb で使っているバージョンはずっと据え置いていましたが、今日急にやる気になったので、最新の v10.0.3 にアップデートしました。

当該 PR はこちらです。.circleci/config.yml がかなり短くなりました。
https://github.com/masutaka/circleci-tfupdate-orb/pull/2

公式ドキュメントcircleci/orb-tools のドキュメント はありますが、よく分からないのと、今までの経緯からあまり信用できないので、v10.0.3 のコードリーディング をして理解しました。

circleci/orb-tools 自身の .circleci/config.yml も読みました。結果的にここまで複雑にする必要はなかったです。
https://github.com/CircleCI-Public/orb-tools-orb/blob/v10.0.3/.circleci/config.yml

今までは master ブランチに commit するたびに orb のバージョンが自動的に上がっていきました。セマンティックバージョンの制御はできません。

現在はその commit message によって、orb バージョンを半自動的に上げられるようになりました。セマンティックバージョンを制御可能です。

v8.27.5 での振る舞い

master ブランチに commit が追加された時、src/commands または src/jobs 以下が変更されていれば minor version が、それ以外の変更では patch version が自動的に上がりました。major version はサポートされていませんでした。

何も考えずに済んだので楽ではありましたが、制御できないのは不満があったのかもしれません。

v10.0.3 での振る舞い

master ブランチに commit が追加された時、当該 commit message に以下の文字列が含まれていれば( )、その指定に従ってバージョンが上がります。

[semver:major]
[semver:minor]
[semver:patch]

必須パラメータ publish-version-tag が true の時は git tag も push してくれます。

含まれている文字列が [semver:skip] の時はバージョンは上がりません。

どれも含まれていない場合、必須パラメータ fail-if-semver-not-indicated によって、CI の成功/失敗を制御できます。私は false にしましたが、厳格にしたい時は true にすると良いと思います。

覚えている自信はありませんが、この記事が未来の自分への助けになることでしょう。

他に、必須パラメータ add-pr-comment を true にすると、紐づく PR にコメントを追加してくれるようです( )。私は false です。

P.S.
公式ドキュメントや circleci/orb-tools 自身の .circleci/config.yml では orb-tools/trigger-integration-tests-workflow job を使って、新しい workflow をトリガーして いますが、その必要は感じなかったので、1 つの workflow の中で lint や publish を全部やりました 。公式の例では .circleci/config.yml の中からは pipeline.parameters.run-integration-tests が true になるタイミング の理解が非常に分かりづらくて、無駄に複雑な workflow を書いてしまうと思いました。