GitHub - KanCraft/kanColleWidget: 小さい画面で艦これしたいよ。通知とかもほしいよ 🐳 · GitHub
Skip to content

KanCraft/kanColleWidget

Folders and files

Repository files navigation

艦これウィジェット

JavaScript CI codecov

Coverage Graph

インストール

ベータ版
Chrome Web Store (BETA)で入手

公開版
Chrome Web Storeで入手

開発

git clone git@github.com:KanCraft/kanColleWidget.git
cd kanColleWidget
git checkout develop
pnpm install
pnpm test run
pnpm build
# ここでできあがったdistフォルダを、
# chrome://extensions にて読み込む

コンテナ開発フロー

Dev Container (VS Code / Codespaces)

  1. VS Code に Dev Containers 拡張を入れ、このリポジトリを開く。
  2. コマンドパレットで Dev Containers: Reopen in Container を実行する。
  3. .devcontainer/devcontainer.json がルートの Dockerfile をビルドし、 kcw-node-modules ボリュームを自動設定する。
  4. コンテナ内のターミナルで pnpm start を実行すると vite build --watch が走り、src/ の変更が dist/ に即時反映される。
  5. chrome://extensions 側で「パッケージ化されていない拡張機能を読み込む」 から dist/ を指定し、更新時は再読み込みするだけでよい。
  6. 依存追加を行った場合はコンテナ内で pnpm install --frozen-lockfile を 実行し、kcw-node-modules にキャッシュされることを確認する。

Docker 単体での利用

Dev Container を使わない場合も、ルートの Dockerfile で同じ環境を 構築できる。

docker build -t kcw-dev .
docker run --rm -it \
  -v "$(pwd)":/workspace \
  -v kcw-node-modules:/workspace/node_modules \
  kcw-dev
# コンテナ内で自動的に pnpm install が実行され、続けて pnpm start が起動
  • Makefile からまとめて起動したい場合は make dev を利用すると上記と 同じコマンド列が実行される。
  • pnpm starttsc && pnpm run copy-tesseract && vite build --watch を 実行し、dist/ を監視更新する。Chrome 拡張には監視済み dist/ を 読み込ませるだけでよい。
  • ファイル監視を安定させるため CHOKIDAR_USEPOLLING=1 等を既定で有効化 済み。変更が伝播しない場合は pnpm start -- --poll 100 を試す。
  • kcw-node-modules ボリュームを削除したい場合は docker volume rm kcw-node-modules を実行する。

リリースフロー

概要

開発は main 1本 で行います(develop ブランチは廃止)。リリースは GitHub に完結し、 バージョンの位置 で配信先が決まる、という1つのルールに集約されています。

  • ベータ版mainpackage.json の version が 直近のタグより先行している間main への push のたびに自動で BETA リスティングへ公開される(「main は常にベータ版として生きている」)。
  • プロダクション版GitHub Release を作成(= タグを打つ) と、その版が PROD リスティングへ公開される。

バージョンの単一の真実源は package.jsonversion だけです。 manifest.json はビルド成果物として毎回生成されるため、手で編集しません(テンプレートは src/public/manifest.template.json)。

1. ベータ版を出す(開発サイクルの開始)

# バージョンを上げ、リリースノートの未公開エントリを再生成する(唯一の管理コマンド)
make version v=4.9.0

# 生成された release-note.json の message を書く
vim src/release-note.json

# main に push すると、ベータ版が自動公開される
git add package.json src/release-note.json
git commit -m "v4.9.0"
git push origin main
  • push のたびに manifest.version = 4.9.0.<直近タグからのcommit数>(例 4.9.0.5)で ベータ版が更新される。表示名は version_name = 4.9.0-beta.5
  • Chrome Webstore は同じ version を再アップロードできないため、commit 数を第4成分にして 単調増加させている(だから push ごとに必ず version が上がる)。
  • package.json の version が直近タグと 同じ 間は、ベータ公開はスキップされる (= 未公開の変更が無い状態)。

BETA リスティング(Chrome拡張ID: egkgleinehaapbpijnlpbllfeejjpceb)で動作確認する。

2. プロダクション版を出す(昇格)

ベータで問題なければ、GitHub Release を作るだけ。

gh release create v4.9.0 --generate-notes

これで release-prod.yaml が発火し、以下が自動実行される:

  1. tag が vX.Y.Z 形式かつ package.json の version と一致するか検証(整合性チェックは1箇所)
  2. prod チャンネルでビルド(manifest.version = 4.9.0
  3. Chrome Webstore(PROD, Chrome拡張ID: iachoklpnnjfgmldgelflgifhdaebnol)へ公開申請
  4. ビルドした zip を Release の asset として添付(GitHub に記録)

リリースフロー図

main 1本で開発(develop は廃止)
    │
    ├─ make version v=4.9.0  → package.json と release-note.json を更新
    │      ↓
    │   commit & push to main
    │      ↓
    │   🚀 BETA 自動公開(version 4.9.0.N)   ← push のたびに繰り返す
    │      ↓
    │   ベータ版で動作確認
    │
    └─ gh release create v4.9.0 --generate-notes
           ↓
        🚀 PROD 公開申請(version 4.9.0)+ zip を Release に添付

注意事項

  • バージョンを変えたいときは make version v=X.Y.Z だけを使う(package.json が単一の真実源)。
  • manifest.json は生成物。git 管理されているのは src/public/manifest.template.json
  • 本番公開は GitHub Release の作成 がトリガ。pre-release として作った Release では PROD 公開は走らない。
  • ベータ版と本番版は異なる Chrome拡張ID(別リスティング)なので、version の連番は互いに独立。
  • Chrome Webstore の審査は非同期(数日かかることがある)。GitHub 上の状態は「公開申請を出した」 ことを表し、実際にストアへ反映されるのは審査通過後。

不具合報告・機能要望

About

小さい画面で艦これしたいよ。通知とかもほしいよ 🐳

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Packages

Contributors