[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 を書いてしまうと思いました。