生涯未熟

生涯未熟

プログラミングをちょこちょこと。

ArgoCD NotificationsのTriggerにおける"when"のハマりどころ

最近、ArgoCD NotificationsにおけるTriggersを触っていた時にwhenの扱いで非常にハマったので、今後やらかさないために書き残しておく。

前置き

ArgoCD NotificationsのTriggersとは、こちらのドキュメントを見ていただければ分かる通り、通知の送信条件ですね。

argo-cd.readthedocs.io

で、このTriggersには when で通知する条件を記述するのですが、これにハマったお話というわけです。

language-definition.mdにあるcontainsやstartsWithは使えない

これ一番最初にずっぽりハマったんですが、条件式のシンタックスはこちら!って書いてあって、language-definition.mdを見に行くと containsstartsWith などが書いてあって「条件式に使えるんや!」と思ったら大間違いです。使えません。

主に使えるものは以下のFunctionsに記載してあるものだけです。楽はできないので苦労しましょう。
+ とか、そういうのは使えるのでご安心を。

シングルクォーテーションを使え!

で、そんなFunctionsなのですが、例えばrepo.GetAppDetailsで取得したHelmのparamにアクセスしようとすると、以下のような記述になります。

repo.GetAppDetails().Helm.GetParameterValueByName('hoge')

これのどこにハマるねん?という話なんですが、このシングルクォーテーションの部分を ダブルクオーテーション にしてみると全く動かなくなります。なんでやねん!
なんでそんなハマり方をしたのかというとGitHub Copilotくんがダブルクォーテーションで補完してきたので、すっかりそれを信じてしまったわけですね、はい。

というわけで、引数指定する際にはシングルクォーテーション使いましょう。

おわり

もうね、このあたりのwhenの情報が日本語・英語ともに全く無い!とある事情によりちょっと複雑なことしようと思ったら、めちゃくちゃ変にハマる経験をしてしまっった。
少なくとも日本国内でこんな変なハマり方をする人を撲滅するために書きました。滅!!

シネマ de LT会に登壇いたしました

AEONさんが主催のシネマ de LT会〜あなたのナレッジ大上映〜に登壇させていただきました。

aeon.connpass.com

speakerdeck.com

映画館でのLT会ということで、貴重な機会だと急いでLT申し込みしましたが、その後すぐにLT枠が満員となったのにはびっくりしました。

当日も大きなスクリーンで、種々様々なLTを参加者の皆さんと盛り上がりながら観れて、非常に楽しめました。あそこまで一体感あって楽しめる勉強会は本当に久しぶりでした。

第2回がもしあったら是非とも参加してみるのをオススメします!

MIXI × ココナラのSRE改革大作戦 〜改善のその先へ〜 を開催しました

先日、私が所属しているMIXIとココナラ様との合同イベントを開催しました。


事の発端は、勉強会でよくお会いするココナラVPoEの川崎さんに「よかったら両社合同で勉強会やりません???」とお声がけさせいただいたのがきっかけです。

勉強会やカンファレンスなどのコミュニティ活動を再びやるようになり、せっかくだったら会社巻き込んでやってみたらそれはそれで面白い体験できるかな〜というめちゃくちゃ単純な理由でやってみました。
勉強会はこのくらいの気軽な気持ちでやるのが一番です。

というわけで、やってみた結果めちゃくちゃ面白かったです!両社、「こんなことやってるぜ!」をアピールできた良い勉強会でした。また、タイミングが合えばココナラ様とやりたいですし、別の他社の方ともやりたい気持ちあるので、もし気になる方いらっしゃいましたらお声がけください〜

改めて素敵な勉強会にしていただけたココナラ様に感謝!🙏

speakerdeck.com

speakerdeck.com

speakerdeck.com

speakerdeck.com

yabaibuki.dev #5に登壇しました

株式会社リブセンスさんが主催していらっしゃる、yabaibuki.dev #5に登壇させていただきました。

livesense.connpass.com

何の話をしようかな〜と考えていたのですが、去年実施してどこにも出せていなかったOTel × Cloud Traceのお話を発表させていただきました。

speakerdeck.com

5分LTということもあり、物凄くざっくりした説明になってしまったのは申し訳ないのですが、ポイントに書いた部分以外は特筆すべきこともあまりなく、OTelのお作法に則って実装しました。
フロントエンド周りはもう少し良い感じにできないかな〜というモヤモヤ感はあって、海外の方たちも悩ましい感じをissueなどから感じ取っていたので、皆悩んでいるところは同じだなと実装していたときに感じました。

まだまだ、OTel初心者一年生って感じなので、ちょうど発売したこちらを読んでもっと精進したいと思います🙏

Outside Collaboratorはrulesetsをbypassできないので、GitHub Appsを代わりに使う

GitHubでちょっとハマったところが出たので備忘録。

GitHub Actions(以下、GHA)の中のとあるstepで、PRに紐づくbranchにcommitを積むといった処理をしていました。
ここが、最近Copilot reviewをPRがopenになった時に自動実行するためにrulesetsを追加したところ落ちるようになってしまった、という背景があります。

commitを積んでいたユーザーをrulesetsにbypassさせればいいやーと考えていたのですが、Outside Collaboratorとして登録していた人間に紐づかないbot userがbypassに指定できないという仕様がありました。
こりゃ困ったとGitHubのdiscussionを漁ったのですが、まさにな解決策を見つけました。

github.com

たしかにGitHub Appsからやればいけそう!ということで、このコメントの実装を参考に書き直したところ再び動かすことができました🎉

※ 余談 ちなみにCopilot reviewの自動アサインを、rulesetsの Require a pull request before merging を使わない形でできないか色々やってみましたが無理でした😭
一応、CopilotのUser profileを見て、loginに設定されているCopilotを gh pr edit 1 --add-reviewer Copilot のようにreviewer指定してみたのですが、 Copilot not foundと返されてしまいました・・・
できたら、rulesetsに頼らなくて済むので楽なんだがなぁ。