最近はナレッジをScrapboxに書き溜めています

マネジメント・メンタリティ・広義のエンジニアリングに関するナレッジ類を最近はScrapboxのほうに書いている。

scrapbox.io

EM(エンジニアリングマネージャー)の経験則や思考など、GPTに聞いたら出てくるような出てこないような不定な物事は書けるときに雑多に書き溜めるほうが効率がよく、ブログという形式では書かないようにしている。

というお知らせ投稿です。

全てのインストールしているChromiumブラウザで特定のサイトでだけERR_CONNECTION_RESET

なんか急になってつらかったのでメモ。

特定のサイトにChromium系ブラウザで ERR_CONNECTION_RESET のエラーになりアクセスできない問題が発生していた。

結論

Claudeデスクトップが悪さをしていたのでアプリを閉じたら解消された。

細かいメモ

  • SafariFirefoxではアクセスができる
  • curlでもアクセスは通る
  • 同じネットワーク内のスマホとかでもアクセスできる
  • chromium系ブラウザのみ全滅
  • マシン再起動しても変わらない

という変な状況だった。

直近(前日)にやっていたこと

AIによるブラウザ操作自動化の検証をしていたので、Claude in chrome やChatGPTのエージェントモードのセットアップと操作をやっていた。

特定のサイトの時だけERR_CONNECTION_RESETの問題が起こるので、このセットアップと検証をやっていたときはこれに出くわしておらず、エラー切り分けが難しくなっていた。

エラー調査詳細

ChatGPTとエラーについて会話して、Chromeの設定変更とか色々やりつつ、「でもマシン上の全部の異なるChromium系なんだよね」とか会話していた。

ChatGPTが対象のサイトのIPはShopifyのCDNだということを教えてくれてShopifyのStatusを見に行ったり色々していたら、以下の投稿を見つけた。

もしかしてなんかのプロセスが悪さしているか?と思って、そこでようやく「昨日ChromeのAI操作で色々やっていたな」と気づいて常駐しているClaudeデスクトップのプロセスを落としたら解消された。


難しい。AIに助けられつつこうやってときにAIツールに困らされている。

GitHubでRequired Approvalsを設定したままRenovateのPRだけapproveなしでautomergeする

タイトルがややこしい。

Renovateによる依存アップデートのPRで、パッチとマイナーアップデートの場合はテストをPASSしていたら自動でマージして欲しい。

こういう設定をしている

{
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "matchCurrentVersion": "!/^0/",
      "automerge": true
    }
  ]
}

しかし、リポジトリのRulesetsでRequired Approvalsを設定しているとPRのApproveがないので永遠にマージされない。

でもRenovate以外の人間とAIによるPRはApprove必須にしたいため、この設定を剥がすことはできない。しかし大量の依存アップデートに対して人間がチマチマApproveすることは避けたい。

この二律背反問題を解消する必要がある。

解決方法

この問題と解消方法については以下のDocumentに記載がある。

docs.renovatebot.com

  1. https://github.com/renovatebot/renovate-approve-bot を使う
  2. rulesetsのBYPASSを使う

1がラクなのだけど、落とし穴がありCODEOWNERファイルによる設定があると、この作戦はうまく機能しない。 これはBotをOWNERに指定できないからで、自動でReviewerにBotを追加できないから。

なのでCODEOWNER設定がある場合、2のパターンでBYPASSする必要がある。しかしこの設定がややこしい(というよりリファレンスがない)。

Rulesetsを分けてバイパス設定をする

設定のポイントは

  • block force pushやstatus checkのrulesetから Requied ApprovalsとRestrict update のruleを分離しておく
  • Bypasslist に OWNERとRenovateを追加し Exempt from rules にする

設定例

こうしておくと、Renovateが出すPRにはRequired Approvals設定が除外され、別のRulesetに設定しているStatus CheckによるCIが通ればautomergeによって自動でマージされていく。あとオーナーは自身のPRによる強制マージもできる。

対象ブランチのアップデートを保護により絞る場合、 Restrict updates のルールもRequired Approvedの設定側に分離しておく必要があり、これはmerge=target branch updateとなるからで、ややこしい。