DevOps

CI/CD、依存関係の管理、開発を回すための仕組みについてまとめています。

DevOps

VOICEVOXをApple containerで動かしたらCPUが4コアしか使われていなかったので割り当てを増やした

Mac で常駐の VOICEVOX サーバーを Apple container で動かしたら、デフォルトでコンテナに 4 CPU しか割り当てられず、合成速度を本来の 4.5 分の 1 に落としていました。M5 Max での実測を交えて、cpus と cpu_num_threads を両方詰める設定を紹介します。

DevOps

GitHub Pages は Unpublish しても設定が残るので棚卸しでは DELETE API まで叩く

移行元リポジトリの GitHub Pages を片付けたとき、Settings から Unpublish しただけでは Pages 設定オブジェクトが残り、`GET /repos/{owner}/{repo}/pages` が 200 を返し続けることに気づきました。Unpublish と Delete の違い、`status: null` の読み方、棚卸しで漏れを出さないために `gh api -X DELETE` まで踏み込む判断をまとめます。

DevOps

GitHub Actions の workflow を 4 項目で安全側に倒した

org 配下の workflow を `defaults.run.shell: bash`、`actions/checkout` の `persist-credentials: false`、サードパーティアクションの SHA pin、`permissions` 最小化の4項目で揃えた経緯と、`git push` を含む `release.yml` や `submodules: true` を併用する workflow で「適用しない」を選んだ判断軸を記録します。

DevOps

gh search code のインデックスは遅延する

Renovateプリセットの旧ファイル削除前に `gh search code` で参照残存を確認したら、マージ済みの新参照がまだヒットしてくれませんでした。コード検索インデックスの遅延に気づいた経緯と、Contents API でファイル本文を直接取得して実体検証する手順、検索ベース API への向き合い方を扱います。

DevOps

Renovateの参照差し替え先の変更をgh apiで楽をする

Renovateプリセットの参照先差し替えで、Org配下のリポジトリ群に同じ修正PRを冪等に投げるBashスクリプトを、`git clone`を一度もせずに`gh api`だけで書きました。GitHub Contents APIとGit Refs APIの組み合わせ、再実行を前提にした冪等性の4箇所、macOSとLinuxで動く`mktemp`テンプレートまでをまとめます。

DevOps

RenovateのOnboarding PRを毎回手作業で書き換えるのをやめた

Renovateが立てる初回Onboarding PRには、`<org>/renovate-config/default.json`を置けば組織プリセットへの`extends`が自動で差し込まれる仕組みがソースコード側にあります。コメントを残せる`default.json5`を選ぶとこの自動検出が空振りするため、Mend-hostedの`org-inherited-config.json`で`onboardingConfig`を明示的に上書きして、Onboarding PRをそのままマージできる状態に揃えました。

DevOps

RenovateでCloudflare Workers SDKのパッケージをグルーピングする

Cloudflare Workers SDKはモノレポで管理されていますが、Renovateのデフォルト設定ではパッケージごとに個別のPRが作られます。wrangler、@cloudflare/vite-plugin、miniflareを1つのPRにまとめるpackageRulesの設定と、monorepo presetへの提案で浮上したimmortal PRs問題を紹介します。

DevOps

GitHub Organizationのプロフィールページを設定する

GitHub Organizationの公開・非公開プロフィールページの設定方法を紹介します。.githubリポジトリと.github-privateリポジトリの使い分けについて解説します。