マネジメント・メンタリティ・広義のエンジニアリングに関するナレッジ類を最近はScrapboxのほうに書いている。
EM(エンジニアリングマネージャー)の経験則や思考など、GPTに聞いたら出てくるような出てこないような不定な物事は書けるときに雑多に書き溜めるほうが効率がよく、ブログという形式では書かないようにしている。
というお知らせ投稿です。
なんか急になってつらかったのでメモ。
特定のサイトにChromium系ブラウザで ERR_CONNECTION_RESET のエラーになりアクセスできない問題が発生していた。
Claudeデスクトップが悪さをしていたのでアプリを閉じたら解消された。
という変な状況だった。
AIによるブラウザ操作自動化の検証をしていたので、Claude in chrome やChatGPTのエージェントモードのセットアップと操作をやっていた。
特定のサイトの時だけERR_CONNECTION_RESETの問題が起こるので、このセットアップと検証をやっていたときはこれに出くわしておらず、エラー切り分けが難しくなっていた。
ChatGPTとエラーについて会話して、Chromeの設定変更とか色々やりつつ、「でもマシン上の全部の異なるChromium系なんだよね」とか会話していた。
ChatGPTが対象のサイトのIPはShopifyのCDNだということを教えてくれてShopifyのStatusを見に行ったり色々していたら、以下の投稿を見つけた。
【備忘録】かなりのレアケースだと思うが、Chrome+特定のネットワーク環境において、ShopifyやZoomが開けない現象がおきた。
— ひがし (@suica_versa) 2024年8月30日
開こうとするとChromeのみERR_CONNECTION_RESETが発生する。
対処方法としてはdocker-desktopを終了させること。
もしかしてなんかのプロセスが悪さしているか?と思って、そこでようやく「昨日ChromeのAI操作で色々やっていたな」と気づいて常駐しているClaudeデスクトップのプロセスを落としたら解消された。
難しい。AIに助けられつつこうやってときにAIツールに困らされている。
タイトルがややこしい。
Renovateによる依存アップデートのPRで、パッチとマイナーアップデートの場合はテストをPASSしていたら自動でマージして欲しい。
こういう設定をしている
{ "packageRules": [ { "matchUpdateTypes": ["minor", "patch"], "matchCurrentVersion": "!/^0/", "automerge": true } ] }
しかし、リポジトリのRulesetsでRequired Approvalsを設定しているとPRのApproveがないので永遠にマージされない。
でもRenovate以外の人間とAIによるPRはApprove必須にしたいため、この設定を剥がすことはできない。しかし大量の依存アップデートに対して人間がチマチマApproveすることは避けたい。
この二律背反問題を解消する必要がある。
この問題と解消方法については以下のDocumentに記載がある。
1がラクなのだけど、落とし穴がありCODEOWNERファイルによる設定があると、この作戦はうまく機能しない。 これはBotをOWNERに指定できないからで、自動でReviewerにBotを追加できないから。
なのでCODEOWNER設定がある場合、2のパターンでBYPASSする必要がある。しかしこの設定がややこしい(というよりリファレンスがない)。
設定のポイントは
Exempt from rules にする
こうしておくと、Renovateが出すPRにはRequired Approvals設定が除外され、別のRulesetに設定しているStatus CheckによるCIが通ればautomergeによって自動でマージされていく。あとオーナーは自身のPRによる強制マージもできる。
対象ブランチのアップデートを保護により絞る場合、 Restrict updates のルールもRequired Approvedの設定側に分離しておく必要があり、これはmerge=target branch updateとなるからで、ややこしい。