何を見つけたか
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)
何を見つけたか
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以降devbase scale): 実行していない」(未チェック)devbase up/scale/ … — マージ後のリリース後テストで確かめます」(未チェック)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 つ選び、次の順で見る。 動いているコンテナを作り直すため、
作業中のプロジェクトでは行わない。
由来
issue #192(v3.7.0 の振り返り、PR #212)