Skip to content

test: v3.7.0 の devbase scale を実環境で確かめる(COMPOSE_PROFILES の打ち消しとサービス名の明示) #246

Description

@takemi-ohama

何を見つけたか

v3.7.0 で振る舞いが変わった devbase scale を、実環境(実 docker)で一度も実行していない。
設計・実装・検査・リリース後テストのすべての段で「実環境のプロジェクトが要るので行わない」と
され、単体テストで代替したまま配布された。

変わったのは次の点である(CHANGELOG.md の [3.7.0] の Changed)。

  • devbase scale の子プロセスの COMPOSE_PROFILES が __devbase_none__(lib/devbase/utils/docker.py:17 の NO_PROFILE)になり、
    端末や .env に COMPOSE_PROFILES を置いている利用者では、devbase scale が
    プロファイルのサービスを起動しなくなる
  • docker compose ... up -d --no-recreate にサービス名を明示するようになった
    (lib/devbase/commands/container.py:1660、default_services() の全件)
  • devbase login の exec も同じ環境を通るようになった(観測できる振る舞いは変わらない見込み)

単体テストは subprocess.run を差し替えて組み立てたコマンド列を固定するもので、
実 docker の応答は見ていない。
--no-recreate とサービス名の明示を組み合わせたときに、
既に動いているプロファイルのサービスが停止しないか(受け入れ条件 E-3)は、
実 docker でしか確かめられない。

どこで見つけたか

v3.7.0 の振り返り(起票の取りこぼしを拾う工程)。

場所 記述
/Users/takemi_ohama/devbase/issues/old/PLAN65_scale-compose-path.md:257 以降(未確認のまま残ること) 実環境の devbase scale は行わない
/Users/takemi_ohama/devbase/issues/old/PLAN65_scale-compose-path-design.md:491 以降 同旨
PR #231 / #232 の Test plan 「結合(実環境の devbase scale): 実行していない」(未チェック)
PR #212 の Test plan 「グループの読み替えのある端末で devbase up / scale / … — マージ後のリリース後テストで確かめます」(未チェック)
PR #212 のリリース後テストのコメント env backend test / env list は実施。up / scale / login は影響が大きいため実行せず、単体テストと CI で代替した

#242(amd64 での確認)は base イメージに限定しており、この件を含まない。
#203 の名前の形の知らせの宛先もこの件に含まない(lib/devbase/log.py は StreamHandler(sys.stderr) だけで
TTY の判定を持たず、devbase plugin sync 2>&1 | cat で Warning の行が見える。2026-09-26)。

なぜこの変更の範囲外なのか

リリース後テストの持ち場は「実環境のプロジェクトでの up / scale / login は、影響が
大きいので行わない」という指示を受けて実行した。行わない判断そのものは妥当だが、
確かめていない事実は残るため、課題として残す。

直さないと何が起きるか

  • COMPOSE_PROFILES を端末や .env に置いている利用者が devbase scale を打ったとき、
    プロファイルのサービスが起動しないことに、実際に踏むまで気づけない。
    確定仕様どおりの挙動だが、v3.6.0 までとは変わる
  • --no-recreate とサービス名の明示の組み合わせで、既に動いているプロファイルのサービスが
    停止する退行があっても、単体テストでは検出できない

確かめ方

影響の小さいプロジェクトを 1 つ選び、次の順で見る。 動いているコンテナを作り直すため、
作業中のプロジェクトでは行わない。

# 1. プロファイルを持つプロジェクトで、プロファイルのサービスを先に起動しておく
devbase project profile up <プロファイル名> <name>
devbase ps <name>

# 2. COMPOSE_PROFILES を置いた状態で scale する
COMPOSE_PROFILES=<プロファイル名> devbase scale <name> 2

# 3. 見るもの
#    - 増えたインスタンスが dev サービスだけで、プロファイルのサービスが複製されていない
#    - 1 で起動したプロファイルのサービスが**止まっていない**(受け入れ条件 E-3)
#    - 既存のインスタンスが作り直されていない(--no-recreate)
devbase ps <name>

由来

issue #192(v3.7.0 の振り返り、PR #212)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions