最近、ArgoCD NotificationsにおけるTriggersを触っていた時にwhenの扱いで非常にハマったので、今後やらかさないために書き残しておく。
前置き
ArgoCD NotificationsのTriggersとは、こちらのドキュメントを見ていただければ分かる通り、通知の送信条件ですね。
で、このTriggersには when
で通知する条件を記述するのですが、これにハマったお話というわけです。
language-definition.mdにあるcontainsやstartsWithは使えない
これ一番最初にずっぽりハマったんですが、条件式のシンタックスはこちら!って書いてあって、language-definition.mdを見に行くと contains
や startsWith
などが書いてあって「条件式に使えるんや!」と思ったら大間違いです。使えません。
主に使えるものは以下のFunctionsに記載してあるものだけです。楽はできないので苦労しましょう。
+
とか、そういうのは使えるのでご安心を。
シングルクォーテーションを使え!
で、そんなFunctionsなのですが、例えばrepo.GetAppDetailsで取得したHelmのparamにアクセスしようとすると、以下のような記述になります。
repo.GetAppDetails().Helm.GetParameterValueByName('hoge')
これのどこにハマるねん?という話なんですが、このシングルクォーテーションの部分を ダブルクオーテーション
にしてみると全く動かなくなります。なんでやねん!
なんでそんなハマり方をしたのかというとGitHub Copilotくんがダブルクォーテーションで補完してきたので、すっかりそれを信じてしまったわけですね、はい。
というわけで、引数指定する際にはシングルクォーテーション使いましょう。
おわり
もうね、このあたりのwhenの情報が日本語・英語ともに全く無い!とある事情によりちょっと複雑なことしようと思ったら、めちゃくちゃ変にハマる経験をしてしまっった。
少なくとも日本国内でこんな変なハマり方をする人を撲滅するために書きました。滅!!